Database Engines
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Database Engines
Hallo,
mal wieder etwas, das mir schon länger auf der Seele liegt und ich nicht richtig verstanden habe.
Ich habe eine Anwendung, die normale DBF Dateien und Textdateien nutzt. In die DBF Dateien werden entsprechend Daten geschrieben und die TXT Dateien werden genutzt um Protokolle, oder sonstwas zu schreiben, was später ausgedruckt wird, oder zumindest über einen einfachen Texteditor angesehen werden kann/soll.
Zur Zeit bearbeite ich die Textdateien immer mit den Lowlevel Funktionen fcreate() fopen() usw. Es wird zeilenweise reingeschrieben. Nachdem ich nun die ganze Beschreibung über die Xbase++ Database Engines gelesen habe, bin ich aber nicht wirklich schlauer geworden
Es ist doch dann möglich mit der entsprechenden Erzeugung einer Compound DBE (ich glaube so war das doch) auch Textdateien mehr oder weniger wie normale Datenbanken zu behandeln, wenn es um die einfachen Grundstrukturen geht wie öffnen, lesen, schreiben, speichern, schließen. Hat jemand von euch damit schon seine Erfahrungen gesammelt, ob es wirklich so geht, wie es von Alaska beschrieben wird?
Nächste Frage:
So wie ich es verstanden habe, kann ich doch mehrere Compund DBE erzeugen und damit mir die Möglichkeit schaffen in einem Programm verschiedene Typen von Datenbanken und Indexdateien zu benutzen? Oder habe ich das schon falsch verstanden?
Ich möchte gerne wie oben beschrieben Textdateien, DBF-Dateien, NTX und CDX gleichermaßen nutzen. Alles unter Xbase++, keine CLipperanwendungen im Mischbetrieb. Die Dateien würden dann über VIA entsprechend geöffnet, bzw. über die Angabe, welcher Treiber als cDBE in DbUseArea().
Geht das wirklich so? Und wenn ja, wie müßte ich dann so einen Treiber Anfangs zusammenbauen?
mal wieder etwas, das mir schon länger auf der Seele liegt und ich nicht richtig verstanden habe.
Ich habe eine Anwendung, die normale DBF Dateien und Textdateien nutzt. In die DBF Dateien werden entsprechend Daten geschrieben und die TXT Dateien werden genutzt um Protokolle, oder sonstwas zu schreiben, was später ausgedruckt wird, oder zumindest über einen einfachen Texteditor angesehen werden kann/soll.
Zur Zeit bearbeite ich die Textdateien immer mit den Lowlevel Funktionen fcreate() fopen() usw. Es wird zeilenweise reingeschrieben. Nachdem ich nun die ganze Beschreibung über die Xbase++ Database Engines gelesen habe, bin ich aber nicht wirklich schlauer geworden
Es ist doch dann möglich mit der entsprechenden Erzeugung einer Compound DBE (ich glaube so war das doch) auch Textdateien mehr oder weniger wie normale Datenbanken zu behandeln, wenn es um die einfachen Grundstrukturen geht wie öffnen, lesen, schreiben, speichern, schließen. Hat jemand von euch damit schon seine Erfahrungen gesammelt, ob es wirklich so geht, wie es von Alaska beschrieben wird?
Nächste Frage:
So wie ich es verstanden habe, kann ich doch mehrere Compund DBE erzeugen und damit mir die Möglichkeit schaffen in einem Programm verschiedene Typen von Datenbanken und Indexdateien zu benutzen? Oder habe ich das schon falsch verstanden?
Ich möchte gerne wie oben beschrieben Textdateien, DBF-Dateien, NTX und CDX gleichermaßen nutzen. Alles unter Xbase++, keine CLipperanwendungen im Mischbetrieb. Die Dateien würden dann über VIA entsprechend geöffnet, bzw. über die Angabe, welcher Treiber als cDBE in DbUseArea().
Geht das wirklich so? Und wenn ja, wie müßte ich dann so einen Treiber Anfangs zusammenbauen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
ich nutze das, um Daten aus einer Textdatei in eine DBF-Datei zu importieren. Anbei mal einige Codefragmente - hoffe, es hilft ein wenig:Viele Grüße,
Martin
ich nutze das, um Daten aus einer Textdatei in eine DBF-Datei zu importieren. Anbei mal einige Codefragmente - hoffe, es hilft ein wenig:
Code: Alles auswählen
#include "DelDbe.ch"
....
select 1
use xumwandl
go top
select 2
DbeSetDefault( "DELDBE" )
DbeInfo( COMPONENT_DATA, DELDBE_DELIMITER_TOKEN, chr( 0 ) )
DbeInfo( COMPONENT_DATA, DELDBE_FIELD_TOKEN, ';' )
DbeInfo( COMPONENT_DATA, DELDBE_FIELD_TYPES, "CCCCCCCCCCCCCCCCC" ) // geändert am 15.12.2005
use ( ausdatei ) via ("DELDBE")
go top
select 3
DbeInfo( COMPONENT_DATA, DELDBE_FIELD_TYPES, "CCCCCCCCCCCCCCC" ) // geändert am 15.12.2005
use ( hunddatei ) via ("DELDBE")
select 2
do while .not. eof()
nr := ConvToOEMCp( field->field2 )
bna := ConvToOEMCp( alltrim( left( field->field3, 50 ) ) )
....
select 3
go top
do while .not. eof()
if field->field2 == nr
select 1
append blank
select 3
replace xumwandl->BESITZERNA with bna
replace xumwandl->BESITZERVO with bvo
...
replace xumwandl->MELDTAG with val( field->field3 )
replace xumwandl->STATUS with 0
do case
case field->field4 == "1"
replace xumwandl->HUNDEKLASS with "N"
case field->field4 == "2"
replace xumwandl->HUNDEKLASS with "J"
...
endcase
replace xumwandl->HUNDENAMEN with ConvToOEMCp( alltrim( field->field7 ) )
replace xumwandl->CODEN with val( field->field5 )
replace xumwandl->GESCHLECHT with iif( field->field6 == "1", "R", "H" )
...
if len( alltrim( field->field11 ) ) == 10
replace xumwandl->GEBDATUM with ConvToOEMCp( left( alltrim( field->field11 ), 2 ) + substr( alltrim( field->field11 ), 4, 2 ) + right( alltrim( field->field11 ), 4 ) )
elseif len( alltrim( field->field11 ) ) == 8
st := val( right( alltrim( field->field11 ), 2 ) )
if st < 80
st += 2000
else
st += 1900
endif
replace xumwandl->GEBDATUM with ConvToOEMCp( left( alltrim( field->field11 ), 2 ) + substr( alltrim( field->field11 ), 4, 2 ) + str( st, 4 ) )
endif
replace xumwandl->VATER with ConvToOEMCp( alltrim( field->field12 ) )
replace xumwandl->MUTTER with ConvToOEMCp( alltrim( field->field13 ) )
replace xumwandl->ZUECHTER with ConvToOEMCp( alltrim( field->field14 ) )
replace xumwandl->ZUORTMELDE with ConvToOEMCp( alltrim( field->field15 ) )
st := val( left( time(), 2 ) ) * 100 // Die Systemzeit ermitteln und als
mn := val( substr( time(), 4, 2 ) ) // Zahl ablegen
st += mn
replace xumwandl->syszeit with st
replace xumwandl->sysdatum with val( dtos( date() ) )
endif
skip
enddo
select 2
skip
enddo
select 2
use
select 3
use
select 1
use
DbeSetDefault( "DBFNTX" )
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Hallo Martin,
das habe ich schon so mehr oder weniger verstanden und auch im Einsatz, was die Möglichkeit betrifft, von einer Textdatei in eine DBF Datei zu kopieren.
Meine Frage ging dahin, ob ich diese Konstruktion von CDX und NTX parallel benutzen kann und wie ich die Treiber alle dafür Anfangs zusammenbauen müßte, ob eine Textdatei dann wirklich wie eine mehr oder weniger normale DBF Datei behandelt werden kann. (Ich mir somit die ganzen Lowlevel Funktionen spare) Und ob es genügt - wenn es denn so einfach geht - nur zu sagen: Die DBF wird mit CDX geöffnet und die DBF wird mit NTX geöffnet. Und jetzt arbeitet mal schon in Frieden zusammen.
Trotzdem Danke für Deinen schnellen Einsatz
das habe ich schon so mehr oder weniger verstanden und auch im Einsatz, was die Möglichkeit betrifft, von einer Textdatei in eine DBF Datei zu kopieren.
Meine Frage ging dahin, ob ich diese Konstruktion von CDX und NTX parallel benutzen kann und wie ich die Treiber alle dafür Anfangs zusammenbauen müßte, ob eine Textdatei dann wirklich wie eine mehr oder weniger normale DBF Datei behandelt werden kann. (Ich mir somit die ganzen Lowlevel Funktionen spare) Und ob es genügt - wenn es denn so einfach geht - nur zu sagen: Die DBF wird mit CDX geöffnet und die DBF wird mit NTX geöffnet. Und jetzt arbeitet mal schon in Frieden zusammen.
Trotzdem Danke für Deinen schnellen Einsatz
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Ah - OK. Sorry!!
Nun, was spricht denn dagegen, Dir die jeweiligen DBEs zu basteln und zu benutzen?
Nachdem nun die DBFNTX als Standard definiert ist, solltes Du doch - wie oben im anderen Beispiel mittels der Anagbe des zu nutzenden Treibers beim Öffnen ("VIA....") ohne Probleme damit arbeiten können - oder?
Allerdings wirst Du keinen Vorteil davon haben, Deine Logdatei statt wie bisher nun über die Datenbankoperationen zu beschreiben - zumindest sehe ich keinen!
Viele Grüße,
Martin
Nun, was spricht denn dagegen, Dir die jeweiligen DBEs zu basteln und zu benutzen?
Code: Alles auswählen
IF ! DbeLoad( "DBFDBE", .T.)
Alert( "Database-Engine DBFDBE nicht geladen" , {"OK"} )
ENDIF
IF ! DbeLoad( "NTXDBE", .T.)
Alert( "Database-Engine NTXDBE nicht geladen" , {"OK"} )
ENDIF
IF ! DbeBuild( "DBFNTX", "DBFDBE", "NTXDBE" )
Alert( "DBFNTX Database-Engine;konnte nicht erzeugt werden" , {"OK"} )
ENDIF
IF ! DbeLoad( "FOXDBE", .T.)
Alert( "Database-Engine FOXDBE nicht geladen" , {"OK"} )
ENDIF
IF ! DbeLoad( "CDXDBE",.T.)
Alert( "Database-Engine CDXDBE nicht geladen" , {"OK"} )
ENDIF
IF ! DbeBuild( "FOXCDX", "FOXDBE", "CDXDBE" )
Alert( "FOXCDX Database-Engine;konnte nicht erzeugt werden" , {"OK"} )
ENDIF
DbeSetDefault( "DBFNTX" )
Allerdings wirst Du keinen Vorteil davon haben, Deine Logdatei statt wie bisher nun über die Datenbankoperationen zu beschreiben - zumindest sehe ich keinen!
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Hi Martin,
ich merke schon wieder, ich habe ein Brett vor dem Kopf, aber von der breitesten Sorte. Das ist alles?
Hm, so steht es auch in der Anleitung. Aber was habe ich mir denn dann aus dem Beispiel in der dbesys.prg zusammengestrickt?
ich merke schon wieder, ich habe ein Brett vor dem Kopf, aber von der breitesten Sorte. Das ist alles?
Hm, so steht es auch in der Anleitung. Aber was habe ich mir denn dann aus dem Beispiel in der dbesys.prg zusammengestrickt?
Meinst Du nicht? Hm, muß ich mir nochmal durch den Kopf gehen lassen, wie ich es zur Zeit mache und wie ich es mir anders vorstelle und was es bringen würde.Allerdings wirst Du keinen Vorteil davon haben, Deine Logdatei statt wie bisher nun über die Datenbankoperationen zu beschreiben - zumindest sehe ich keinen!
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
Wenn es in Deiner Situation machbar ist, nutze doch den Alternate-Befehl, um die Logdatei zu schreiben:
Viele Grüße,
Martin
nun - auch in diesem Fall würde zeilenweise geschrieben werden, da ein Datensatz in der Textdatei aus einer Zeile (= einem Feld) besteht.Manfred hat geschrieben:Meinst Du nicht? Hm, muß ich mir nochmal durch den Kopf gehen lassen, wie ich es zur Zeit mache und wie ich es mir anders vorstelle und was es bringen würde.
Wenn es in Deiner Situation machbar ist, nutze doch den Alternate-Befehl, um die Logdatei zu schreiben:
Code: Alles auswählen
Set Alternate to C:\.......\log.txt
Set Alternate on
Set Console off
....
? "Hier kommt eine Zeile ins Log"
? "hier noch eine"
?? " (und das hier kommt an die vorherige Zeile ran)"
....
Set Alternate off
Set Alternate to
Set Console on
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Hi Martin,
also jetzt treibt es mir doch den Frust in die Backen.....
Woher weißt Du das, bzw. woher wißt ihr das alles? Einmal, oder andauernd das Handbuch rauf und runter gelesen und dann gesagt:" Au prima, genau das habe ich gesucht"? Oder aus irgendwelchen anderen Quellen?
Ich habe die "Schwarte" schon mehrmals gelesen, aber diese ganzen"Tricks", die ich manchmal höre, oder lese, da wäre ich nie drauf gekommen.
Im Nachhinein betrachtet sagt man sich auch: "Klar, kann ja nur so sein." Aber wie kommt man auf sowas? Oder muß man für sowas ein Feeling haben?
Langsam überlege ich wirklich, ob ich nicht Gärtner hätte werden sollen.
also jetzt treibt es mir doch den Frust in die Backen.....
Woher weißt Du das, bzw. woher wißt ihr das alles? Einmal, oder andauernd das Handbuch rauf und runter gelesen und dann gesagt:" Au prima, genau das habe ich gesucht"? Oder aus irgendwelchen anderen Quellen?
Ich habe die "Schwarte" schon mehrmals gelesen, aber diese ganzen"Tricks", die ich manchmal höre, oder lese, da wäre ich nie drauf gekommen.
Im Nachhinein betrachtet sagt man sich auch: "Klar, kann ja nur so sein." Aber wie kommt man auf sowas? Oder muß man für sowas ein Feeling haben?
Langsam überlege ich wirklich, ob ich nicht Gärtner hätte werden sollen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
Viele Grüße,
Martin
Im Prinzip ja - ich hatte mir damals so ein kleines Taschenhandbuch für Clipper Sommer '87 gekauft und häufiger darin geschmökert.Manfred hat geschrieben:Einmal, oder andauernd das Handbuch rauf und runter gelesen und dann gesagt:" Au prima, genau das habe ich gesucht"?
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Hi Martin
Es kommt die Fehlermeldung: Invalid DLL name for DBE
Im Moment stehe ich wie ein Ox vorm Berg.
Was fehlt bei mir?
jetzt weiß ich was es damals war, das ich das nicht so gemacht habe:Martin Altmann hat geschrieben:Ah - OK. Sorry!!
Nun, was spricht denn dagegen, Dir die jeweiligen DBEs zu basteln und zu benutzen?
IF ! DbeLoad( "DBFDBE", .T.)
Alert( "Database-Engine DBFDBE nicht geladen" , {"OK"} )
ENDIF
IF ! DbeLoad( "NTXDBE", .T.)
Alert( "Database-Engine NTXDBE nicht geladen" , {"OK"} )
ENDIF
IF ! DbeBuild( "DBFNTX", "DBFDBE", "NTXDBE" )
Alert( "DBFNTX Database-Engine;konnte nicht erzeugt werden" , {"OK"} )
ENDIF
Es kommt die Fehlermeldung: Invalid DLL name for DBE
Im Moment stehe ich wie ein Ox vorm Berg.
Was fehlt bei mir?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
Um welche Zeile geht es denn in Deiner DBESYS()? Zeig doch mal Deinen Code...
Viele Grüße,
Martin
na die entsprechende DLLManfred hat geschrieben:Was fehlt bei mir?
Um welche Zeile geht es denn in Deiner DBESYS()? Zeig doch mal Deinen Code...
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Hi Martin,
das habe ich auch gedacht, ich habe alle in Frage kommenden DLL ins Verzeichnis kopiert.
Es ist genau das, was ich eine Meldung höher gezeigt habe. Mehr ist auch nicht drin, weil es nur die Zeilen, nebst Dbusearea() ist.
Es ist genau die zeile, in der versucht wird die DBFDBE zu laden
das habe ich auch gedacht, ich habe alle in Frage kommenden DLL ins Verzeichnis kopiert.
Es ist genau das, was ich eine Meldung höher gezeigt habe. Mehr ist auch nicht drin, weil es nur die Zeilen, nebst Dbusearea() ist.
Es ist genau die zeile, in der versucht wird die DBFDBE zu laden
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Stop,
dbesys() ?
Hm, ich glaube ich weiß woran es liegt.
Werde nochmals eben testen....
dbesys() ?
Hm, ich glaube ich weiß woran es liegt.
Werde nochmals eben testen....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
Du hast in Deinem Posting aber meinen Text zitiert - hast Du es auch genauso in Deinem Listing stehen?
Hast Du diese Zeilen in der Prozedur DbeSys()?
An DLL-Dateien brauchst Du
Martin
Du hast in Deinem Posting aber meinen Text zitiert - hast Du es auch genauso in Deinem Listing stehen?
Hast Du diese Zeilen in der Prozedur DbeSys()?
An DLL-Dateien brauchst Du
- DBFDBE.DLL
- NTXDBE.DLL
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Hi,
Fehler gefunden, ich Doof. Ich muß das Teil natürlich in die DBESYS.PRG einbinden. Jetzt klappt es.
Hm, warum eigentlich? Ich kann mich jetzt nicht direkt daran erinnern, es in der Doku gelesen zu haben.
Fehler gefunden, ich Doof. Ich muß das Teil natürlich in die DBESYS.PRG einbinden. Jetzt klappt es.
Hm, warum eigentlich? Ich kann mich jetzt nicht direkt daran erinnern, es in der Doku gelesen zu haben.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
Viele Grüße,
Martin
wenn Du in der Hilfe unter dem Punkt Grundlagen zu DatabaseEngines schaust, findest Du im letzten Abschnitt (Hinweise) im ersten Absatz den entsprechenden Vermerk.Manfred hat geschrieben:Ich kann mich jetzt nicht direkt daran erinnern, es in der Doku gelesen zu haben.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Mallo Martin,
ja Danke, entweder habe ich nie so weit gelesen, oder es jedesmal ausgeblendet.
jaja....
ja Danke, entweder habe ich nie so weit gelesen, oder es jedesmal ausgeblendet.
jaja....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Hm,
klappt ja alles jetzt prima. 2 Engines geladen und über die Angabe cDBE, oder VIA wird die DB geöffnet. Aber wie es aussieht merkt der Index bei einer Erzeugung nicht welche Engine er nehmen muß? Dann muß wohl DbSetDefault(cDbe) gesetzt werden, oder wie sehe ich das.
klappt ja alles jetzt prima. 2 Engines geladen und über die Angabe cDBE, oder VIA wird die DB geöffnet. Aber wie es aussieht merkt der Index bei einer Erzeugung nicht welche Engine er nehmen muß? Dann muß wohl DbSetDefault(cDbe) gesetzt werden, oder wie sehe ich das.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
Beim Öffnen der Datenbank gibst Du doch mittels der Anweisung VIA an, welche DBEs zu verwenden sind - für Index- und Datenbankzugriffe! Und dadurch wird auch definiert, welche Art von Index für die Datenbank in der Workarea zu nutzen ist.
Wenn Du die VIA-Anweisung weglässt, wird natürlich die per DbeSetDefault(...) als Standard definierte Zugriffsmethode benutzt!
Viele Grüße,
Martin
Manfred hat geschrieben:Aber wie es aussieht merkt der Index bei einer Erzeugung nicht welche Engine er nehmen muß?
Beim Öffnen der Datenbank gibst Du doch mittels der Anweisung VIA an, welche DBEs zu verwenden sind - für Index- und Datenbankzugriffe! Und dadurch wird auch definiert, welche Art von Index für die Datenbank in der Workarea zu nutzen ist.
Code: Alles auswählen
USE [ <cFileName> ;
[ INDEX <cIndexFiles,...> ] ;
[ ALIAS <cAlias> ] ;
[ VIA <cDbeName> ] ;
[ NEW ] ;
[ READONLY ] ;
[ EXCLUSIVE | SHARED ] ;
]
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Hi Martin,
wie sagt Atze immer? Nee, alles klar.
Ich glaube ich schalte die Kiste jetzt ab, oder spiele noch ein bisschen.
Ich habe jetzt den ganzen Sermon umgedreht und die Sache mit dem Default gemacht, aber der Fehler bleibt trotzdem. Nun, ich dachte bisher immer, dass die Indexdatei mit jedem Index on NEU gemacht wird. Aber irgendwie wird immer alles hinten dran gepeppt. Und das erzeugt den Fehler. Sobald ich die Datei von Hand weglösche, läuft alles prima, so wie Du auch beschrieben und ich es gemacht habe. Ich muß wohl nochmals etwas lesen.
wie sagt Atze immer? Nee, alles klar.
Ich glaube ich schalte die Kiste jetzt ab, oder spiele noch ein bisschen.
Ich habe jetzt den ganzen Sermon umgedreht und die Sache mit dem Default gemacht, aber der Fehler bleibt trotzdem. Nun, ich dachte bisher immer, dass die Indexdatei mit jedem Index on NEU gemacht wird. Aber irgendwie wird immer alles hinten dran gepeppt. Und das erzeugt den Fehler. Sobald ich die Datei von Hand weglösche, läuft alles prima, so wie Du auch beschrieben und ich es gemacht habe. Ich muß wohl nochmals etwas lesen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
sorry - mir aber nicht (von wegen Atze und so )
Zeig doch mal bitte ein wenig Code!
Was ist denn der Fehler? Index on (bei NTX!!) erzeugt die Indexdatei immer(!) neu - bei CDX nicht, da in der bereits bestehenden Datei (wie Du so schön sagst) hinten angepeppt wird!
Viele Grüße,
Martin
sorry - mir aber nicht (von wegen Atze und so )
Zeig doch mal bitte ein wenig Code!
Was ist denn der Fehler? Index on (bei NTX!!) erzeugt die Indexdatei immer(!) neu - bei CDX nicht, da in der bereits bestehenden Datei (wie Du so schön sagst) hinten angepeppt wird!
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Hi Martin,
das mit CDX habe ich gelesen. Verdammt, wo steht das denn. Ich glaube es ist genug für heute....
Aber trotzdem kommt eine Fehlermeldung ab dem 2.Durchlauf. Aber erst nach der Erzeugung/Erweiterung des Index. File can not be created
das mit CDX habe ich gelesen. Verdammt, wo steht das denn. Ich glaube es ist genug für heute....
Code: Alles auswählen
PROCEDURE dbeSys()
/*
* The lHidden parameter is set to .T. for all database engines
* which will be combined to a new abstract database engine.
*/
IF ! DbeLoad( "DBFDBE", .T.)
Alert( "Database-Engine DBFDBE nicht geladen" , {"OK"} )
ENDIF
IF ! DbeLoad( "CDXDBE", .T.)
Alert( "Database-Engine CDXDBE nicht geladen" , {"OK"} )
ENDIF
IF ! DbeBuild( "DBFCDX", "DBFDBE", "CDXDBE" )
Alert( "DBFCDX Database-Engine;konnte nicht erzeugt werden" , {"OK"} )
ENDIF
// IF ! DbeLoad( "DBFDBE", .T.)
// Alert( "Database-Engine DBFDBE nicht geladen" , {"OK"} )
// ENDIF
IF ! DbeLoad( "NTXDBE", .T.)
Alert( "Database-Engine CDXDBE nicht geladen" , {"OK"} )
ENDIF
IF ! DbeBuild( "DBFNTX", "DBFDBE", "NTXDBE" )
Alert( "DBFCDX Database-Engine;konnte nicht erzeugt werden" , {"OK"} )
ENDIF
RETURN
PROCEDURE main()
LOCAL bSaveError := ErrorBlock()
LOCAL oError
LOCAL lNewArea := lShared := .T., lReadOnly := .F.
LOCAL cDBE, cAlias, cText
LOCAL n := 1
DO WHILE .T.
ErrorBlock( {|e| BREAK(e)})
BEGIN SEQUENCE
IF n = 1
cDBE := "DBFNTX"
// DbeSetDefault(cDBE)
ELSE
cDBE := "DBFCDX"
// DbeSetDefault(cDBE)
ENDIF
DBUSEAREA(lNewArea,cDBE,"test",cAlias,lShared,lReadOnly)
IF cDBE == "DBFNTX"
INDEX ON UPPER(v_titel) TO test
ELSE
INDEX ON UPPER(v_titel) TAG titel TO test
ENDIF
RECOVER USING oError
ErrorBlock( bSaveError)
IF fehlerbehandlung(oError)
BREAK
ENDIF
LOOP
END SEQUENCE
ErrorBlock( bSaveError)
EXIT
ENDDO .T.
RETURN
********************************************************************************
FUNCTION fehlerbehandlung(oError)
LOCAL lSuccess := .T.
IF oError:osCode = 32
cTExt := "Ungültige Shareoption"
ENDIF
IF ! oError:canRetry
lSuccess := .F.
ENDIF
RETURN(lSuccess)
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hmm,
also entweder hast DU zu viel weggelöscht, oder mir ist das jetzt auch schon zu spät
Du hast eine Endlosschleife, in der immer wieder die selbe Datenbank in einer neuen Workarea geöffnet würde - in jedem Fall wird immer wieder die selbe Indexdatei (in Deinem Test ja als NTX) erneut erzeugt - an der selben Stelle, was sicherlich nicht geht, da die alte (vom vorherigen Durchlauf) ja dort existiert und in Benutzung ist!
Viele Grüße,
Martin
also entweder hast DU zu viel weggelöscht, oder mir ist das jetzt auch schon zu spät
Du hast eine Endlosschleife, in der immer wieder die selbe Datenbank in einer neuen Workarea geöffnet würde - in jedem Fall wird immer wieder die selbe Indexdatei (in Deinem Test ja als NTX) erneut erzeugt - an der selben Stelle, was sicherlich nicht geht, da die alte (vom vorherigen Durchlauf) ja dort existiert und in Benutzung ist!
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Hi Martin,
nee keine Endlosschleife. Ich gehe step by step mit dem debugger durch und das klappt schon. Nur sobald ich am Index ankomme knallt es.
Es ist nur ein Test, mehr Code gibt es nicht.
Aber wie gesagt, ich stoppe jetzt und schaue mir das morgen nochmals in aller Ruhe an. Ich sehe nur noch kleine Mexikaner im Zimmer.
nee keine Endlosschleife. Ich gehe step by step mit dem debugger durch und das klappt schon. Nur sobald ich am Index ankomme knallt es.
Es ist nur ein Test, mehr Code gibt es nicht.
Aber wie gesagt, ich stoppe jetzt und schaue mir das morgen nochmals in aller Ruhe an. Ich sehe nur noch kleine Mexikaner im Zimmer.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
also eine Endlosschleife, die Du manuell durchläufst. OK - dann zitiere ich mich zur Abwechslung mal selber:
Du mußt also prüfen, ob es die Indexdatei schon gibt. Wenn nein, dann so wie Du es jetzt tust, erzeugen, ansonsten öffnen!
Viele Grüße,
Martin
also eine Endlosschleife, die Du manuell durchläufst. OK - dann zitiere ich mich zur Abwechslung mal selber:
Genau das ist Dein Problem - darum knallt er auch, sobald er die Indexdatei zum zweiten Mal erzeugen soll!Martin Altmann hat geschrieben:- in jedem Fall wird immer wieder die selbe Indexdatei (in Deinem Test ja als NTX) erneut erzeugt - an der selben Stelle, was sicherlich nicht geht, da die alte (vom vorherigen Durchlauf) ja dort existiert und in Benutzung ist!
Du mußt also prüfen, ob es die Indexdatei schon gibt. Wenn nein, dann so wie Du es jetzt tust, erzeugen, ansonsten öffnen!
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Hi Martin,
ich muß Dich leider enttäuschen. Jedesmal wird das Programm neu gestartet und somit ist die Datei nicht geöffnet.
Bei dem 1.Durchlauf, sprich beim 1.Aufruf des Programmes klappt alles prima.
Nachdem die Indexdatei erzeugt wurde, verläßt das PRG die Begin Seq und kommt zum RETURN und beendet sich.
Dann rufe ich mit F8 wieder auf und starte es neu.
Weißt Du was? ich habe gerade parallel das PRG nochmals getestet. Jetzt scheint es wohl zu klappen.
Wie gesagt. Es ist spät und ........
Ich geh jetzt pennen. Wer weiß was hier sonst noch passiert.
Bis Morgen, oder so..
Besten Dank für die Hilfe..
ich muß Dich leider enttäuschen. Jedesmal wird das Programm neu gestartet und somit ist die Datei nicht geöffnet.
Bei dem 1.Durchlauf, sprich beim 1.Aufruf des Programmes klappt alles prima.
Nachdem die Indexdatei erzeugt wurde, verläßt das PRG die Begin Seq und kommt zum RETURN und beendet sich.
Dann rufe ich mit F8 wieder auf und starte es neu.
Weißt Du was? ich habe gerade parallel das PRG nochmals getestet. Jetzt scheint es wohl zu klappen.
Wie gesagt. Es ist spät und ........
Ich geh jetzt pennen. Wer weiß was hier sonst noch passiert.
Bis Morgen, oder so..
Besten Dank für die Hilfe..
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!