DAC von Frank++

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

DAC von Frank++

Beitrag von AUGE_OHR »

hi,

ich habe hier eine altes PDF von 2001 ( ! ) gefunden wo Frank++ von DAC gesprochen hat.
wenn ich nun das Beispiel DACtest.prg mit -w compiliere meckert er
DACTEST.PRG(156:0): warning XBT0102: Ambiguous variable reference DAC_FIELD_VIEWCLASS
DACTEST.PRG(157:0): warning XBT0102: Ambiguous variable reference DAC_FIELD_EDITCLASS
DACTEST.PRG(158:0): warning XBT0102: Ambiguous variable reference DAC_FIELD_VALIDATIONRULE
DACTEST.PRG(159:0): warning XBT0102: Ambiguous variable reference DAC_FIELD_MESSAGE
die Konstanten fehlen mir ?

Code: Alles auswählen

#pragma library( "ADAC20B.LIB" )

#include "inkey.ch"
#include "dac.ch"
#include "dmlb.ch"

FUNCTION rowTest()
 LOCAL lSuccess := .T.
 LOCAL oRow, oF
 LOCAL n

 ? "create db..."
 DbCreate("TEST" , { {"NAME" , "C" , 10 , 0 },;
                     {"AGE"  , "N" , 5  , 0 }})

 USE TEST EXCLUSIVE

 ? "create dacRow"
 oRow := dacRow():New({"NAME","AGE"})
 IF !(ValType(oRow)=="O" .AND. oRow:isDerivedFrom("DACROW"))
   lSuccess := .F.
 ENDIF

 ? "retrieve data from row"
 n := oRow:fieldCount()
 IF(n!=Len(DbStruct()))
   lSuccess := .F.
 ENDIF

 ? "Empty-Row-Data:"
 ? oRow:getRow()

 DbAppend()
 FIELD->NAME := "TEST1"
 FIELD->AGE  := 10
 DbAppend()
 FIELD->NAME := "TEST2"
 FIELD->AGE  := 20
 DbGotop()

 ? "Two-Record-Data:"
 DO WHILE !EOF()
   ? oRow:getRow()
   DbSkip(1)
 ENDDO

 ? "change-row-data"
 DbGoto(2)
 oRow:putRow({"ROW2",300})
 ? oRow:getRow()

 DbGoTop()
 ? "Default-Row:"
 ? oRow:getDefaultRow()

 ? "Field-Level-Access:"
 ? oRow:putField(1,"TEST1")
 ? oRow:putField("AGE",40)

 ? oRow:getField(1)
 ? oRow:getField("AGE")
 ? oRow:getField("NAME")

 ? "FieldList NAME:"
 ? oRow:fieldList(DAC_NAME)

 ? "FieldList OBJECT:"
 n := oRow:fieldList(DAC_OBJECT)
 AEval(n,{|o|QOut(o:name)})

 ? "FieldInfo:"
 ? oRow:fieldInfo(DAC_FIELD_NAME)
 ? oRow:fieldInfo(DAC_FIELD_VALTYPE)
 ? oRow:fieldInfo(DAC_FIELD_TYPE)
 ? oRow:fieldInfo(DAC_FIELD_NATIVETYPE)
 ? oRow:fieldInfo(DAC_FIELD_LENGTH)
 ? oRow:fieldInfo(DAC_FIELD_DECIMALS)
 ? oRow:fieldInfo(DAC_FIELD_NULLABLE)
 ? oRow:fieldInfo(DAC_FIELD_PICTURE)
 ? oRow:fieldInfo(DAC_FIELD_CAPTION)
 ? oRow:fieldInfo(DAC_FIELD_VIEWCLASS)
 ? oRow:fieldInfo(DAC_FIELD_EDITCLASS)
 ? oRow:fieldInfo(DAC_FIELD_VALIDATIONRULE)
 ? oRow:fieldInfo(DAC_FIELD_MESSAGE)
 ? oRow:fieldInfo(DAC_FIELD_DEFAULT)
 ? oRow:fieldInfo(DAC_FIELD_DESCRIPTION)

 oF := oRow:queryField("NAME")
 ? oF:name
 oF:setInfo(DAC_FIELD_MESSAGE,"Test message...")
 ? oF:setInfo(DAC_FIELD_MESSAGE)

 ? "DACVersion:",oF:dacVersion()
 ? "PERSISTENCY:",oF:isPersistent(),"ObjVer:",oF:objVersion()

 USE

RETURN(lSuccess)
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DAC von Frank++

Beitrag von brandelh »

2001 ist halt schon sehr alt, das war noch vor 1.82, vermutlich 1.80 ...
Du kannst ja in den alten "Änderungen zur ..." Vorversion suchen was sich geändert hat ;-)
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DAC von Frank++

Beitrag von Tom »

Die Konstanten gab es in der DAC.CH zur Version 1.8. In späteren Versionen nicht mehr.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: DAC von Frank++

Beitrag von AUGE_OHR »

Ok, Danke.

sagte Alaska nicht das sie nie den Code brechen ... :badgrin:
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DAC von Frank++

Beitrag von brandelh »

ja, aber nur bei PRG, das sind ja CH :badgrin:

Ich frage mich z.B. warum man eine unnötige CH entfernt, statt einfach eine leere drinn zu lassen damit nicht jeder seinen Quellcode ändern muss.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DAC von Frank++

Beitrag von Tom »

Ich frage mich z.B. warum man eine unnötige CH entfernt, statt einfach eine leere drinn zu lassen damit nicht jeder seinen Quellcode ändern muss.
Die DAC.CH gibt's ja noch, nur diese Konstanten nicht mehr. Fragt sich, was z.B. oRow:FieldInfo(DAC_FIELD_VIEWCLASS) seinerzeit - mit der 1.8 - zurückgeliefert hat und warum es das nicht mehr gibt.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DAC von Frank++

Beitrag von brandelh »

Das was ich meinte hatte ich falsch in Erinnerung, es war die LIB der Asinet, die nun überflüssig wurde ...
eine LIB kann man aber auch nicht einfach so drin lassen und dem Compiler / Linker beizubringen diese Zeilen zu überlesen ist auch nicht sicher.

Also mein Fehler ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: DAC von Frank++

Beitrag von AUGE_OHR »

hi,

könnte mir jemand bitte, aus der v1,8x, die Konstanten geben ...ich kann ja mal probieren was raus kommt mit der v1.9x
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DAC von Frank++

Beitrag von Tom »

Code: Alles auswählen

#define DAC_SYS                0x00000000

/*
 * Defines für dacField
 */
#define DAC_FIELD_NAME           (DAC_SYS + 01)
#define DAC_FIELD_TYPE           (DAC_SYS + 02)
#define DAC_FIELD_VALTYPE        (DAC_SYS + 03)
#define DAC_FIELD_NATIVETYPE     (DAC_SYS + 04)
#define DAC_FIELD_LENGTH         (DAC_SYS + 05) 
#define DAC_FIELD_DECIMALS       (DAC_SYS + 06)
#define DAC_FIELD_NULLABLE       (DAC_SYS + 07)
#define DAC_FIELD_CORE_SIZE      7

#define DAC_FIELD_PICTURE        (DAC_SYS + 08)
#define DAC_FIELD_CAPTION        (DAC_SYS + 09)
#define DAC_FIELD_VIEWCLASS      (DAC_SYS + 10)
#define DAC_FIELD_EDITCLASS      (DAC_SYS + 11)

#define DAC_FIELD_VALIDATIONRULE (DAC_SYS + 12)
#define DAC_FIELD_MESSAGE        (DAC_SYS + 13)

#define DAC_FIELD_DEFAULT        (DAC_SYS + 14)
#define DAC_FIELD_DESCRIPTION    (DAC_SYS + 15)
#define DAC_FIELD_SHEMA_SIZE     15
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: DAC von Frank++

Beitrag von AUGE_OHR »

DANKE !

wow ... die ist ja total anders als die v1.9x Datei.

Frage : gibt es noch andere Infos über DAC ?
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DAC von Frank++

Beitrag von brandelh »

such doch in der Hilfe nach DAC, bei 1.90 findest du dann

DacPagedDataStore() - Klassenfunktion der DacPagedDataStore Klasse.
DacSession() - Klassenfunktion der DacSession-Klasse.

Die "gepufferte" Klasse nehme ich für XbpQuickBrowse() bei 2.0 kommt dann noch SQL dazu:

DacSqlStatement() - Creates SQL Statements for the current session of this thread or a dedicated session.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: DAC von Frank++

Beitrag von AUGE_OHR »

brandelh hat geschrieben:such doch in der Hilfe nach DAC, bei 1.90 findest du dann

DacPagedDataStore() - Klassenfunktion der DacPagedDataStore Klasse.
DacSession() - Klassenfunktion der DacSession-Klasse.
ich finde nicht das die Beispiele viel ausssagen deshalb suche ich weite Informationen
brandelh hat geschrieben:Die "gepufferte" Klasse nehme ich für XbpQuickBrowse() bei 2.0 kommt dann noch SQL dazu:

DacSqlStatement() - Creates SQL Statements for the current session of this thread or a dedicated session.
Frage : bezieht sich DAC auf DBE ?

meine Idee war es DAC mit native PostgreSQL / MySQL zu verwenden ...
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DAC von Frank++

Beitrag von brandelh »

Alles von Xbase++ greift auf die DBEs zu ... ich verstehe das so, dass sie die Zugriffe puffern, was für Browserbewegungen (QUICK) einfach schneller ist.
Allerdings hat man keinen syncronen Cursor vom Browser zur DBF.

Verwechselst du DAC etwa mit DAO ?
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: DAC von Frank++

Beitrag von AUGE_OHR »

brandelh hat geschrieben:Alles von Xbase++ greift auf die DBEs zu ... ich verstehe das so, dass sie die Zugriffe puffern, was für Browserbewegungen (QUICK) einfach schneller ist.
Allerdings hat man keinen syncronen Cursor vom Browser zur DBF.
hm ... aber das XbpQuickBrowse() arbeitet doch mit einem Array ...
brandelh hat geschrieben:Verwechselst du DAC etwa mit DAO ?
ich denke nicht ...
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DAC von Frank++

Beitrag von brandelh »

alle Browses arbeiten AUCH mit Arrays, XbpBrowse zusätzlich mit einer DBF, XbpQuickBrowse() auf jeden Fall auch mit Dac...
Gruß
Hubert
Antworten