dbf neu anlegen

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

dbf neu anlegen

Beitrag von Jan »

Moin,

Im ADS 12 sind dbf als FOXCDX angelegt: Die dbesys sieht so aus:

Code: Alles auswählen

IF .NOT. Dbeload("ADSDBE", .F.)
   Alert("ADSDBE konnte nicht geladen werden!")
ENDIF
DbeInfo(COMPONENT_DATA, ADSDBE_LOCK_MODE, ADSDBE_PROPRIETARY_LOCKING)                              // dbf nur über ADS bearbeitbar
DbeInfo(COMPONENT_DATA, ADSDBE_TBL_MODE, ADSDBE_CDX)
DbeInfo(COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_CDX)
DbeInfo(COMPONENT_DATA, ADSDBE_RIGHTS_MODE, ADSDBE_IGNORERIGHTS)

DbeInfo(COMPONENT_DATA, ADSDBE_TABLENAME_IS_ALIAS, .T.)

// Standard-Datenbanktreiber setzen
DbeSetDefault("ADSDBE")
Und dennoch: Als ich per DbCreate() eine neue Tabelle angelegt habe wurde die als DBFNTX angelegt.

Wie bekomme ich es hin, das eine neue Tabelle korrekt als FOXCDX angelegt wird?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: dbf neu anlegen

Beitrag von Manfred »

Hi Jan,
wie sieht denn Dein Dbcreate() aus?
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!!
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: dbf neu anlegen

Beitrag von Tom »

Bei DbCreate() als dritten Parameter die DBE angeben (DbCreate('mytable.dbf',aStructure,'ADSDBE').

Was antwortet DbSetDefault() ohne Parameter direkt vor dem DbCreate()?
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbf neu anlegen

Beitrag von Jan »

Hallo,

beim DbCreate() hatte ich lediglich den Dateinamen und das Struktur-Aray mitgegeben. Weil ich vorausgesetzt hatte das die ADSDBE ja als Default eingestellt ist und damit auch hier automatisch wirksam ist.

Ich teste das nachher mal mit dem dritten Parameter. Mal schauen ob das was ändert.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbf neu anlegen

Beitrag von Jan »

So.

Tom: DbeSetDefault() gibt mir "ADSDBE" zurück. Also eigentlich vollkommen korrekt.

Allgemein: Ich habe jetzt die ADSDBE als dritten Parameter eingebaut. ARC sagt mir bei den table properties trotzdem "NTX". Mist.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: dbf neu anlegen

Beitrag von Tom »

Code: Alles auswählen

DbeInfo(COMPONENT_ORDER,ADSDBE_INDEX_EXT,"CDX")
Herzlich,
Tom
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: dbf neu anlegen

Beitrag von nightcrawler »

Wie sieht Deine Connection aus? Evtl spielt die noch mit rein, ADD als DBFNTX verbunden?
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbf neu anlegen

Beitrag von Jan »

Joachim,

da steht die ADSDBE mit drin:

Code: Alles auswählen

cConnect := "DBE=ADSDBE; SERVER=\\192.168.2.206:6262\D$\Daten_Produktiv\Produktiv.add; ADS_REMOTE_SERVER; UID=[UID]; PWD=[PWD]"
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbf neu anlegen

Beitrag von Jan »

Tom,

das müsste ich doch gefahrlos einbauen können ohne bestehende Daten zu korrumpieren?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbf neu anlegen

Beitrag von Jan »

Tom,
Tom hat geschrieben: Mo, 19. Sep 2022 9:32

Code: Alles auswählen

DbeInfo(COMPONENT_ORDER,ADSDBE_INDEX_EXT,"CDX")
Hat leider nichts geändert.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: dbf neu anlegen

Beitrag von Manfred »

dann gib doch mal folgendes ein:

Code: Alles auswählen

DbCreate(cDbFileName,,"FOXCDX")
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!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbf neu anlegen

Beitrag von Jan »

Manfred,

der Gedanke war mir auch schon gekommen. Hatte aber ein wenig Schiss davor.

Jetzt habe ich das doch mal gemacht - wenn noch jemand diese Idee hatte wird es ja hoffentlich nicht ganz so falsch sein. Ergebnis:
oError:args :
-> VALTYPE: C VALUE:temp.dbf
-> VALTYPE: A VALUE:{{Array mit den ganzen Feldern}
-> VALTYPE: C VALUE:FOXCDX
oError:canDefault : .T.
oError:canRetry : .F.
oError:canSubstitute: .F.
oError:cargo : NIL
oError:description : Datei kann nicht erzeugt werden
oError:filename :
oError:genCode : 70
oError:operation : DbCreate
oError:osCode : 0
oError:severity : 2
oError:subCode : 8999
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: dbf neu anlegen

Beitrag von Tom »

Das kann auch nicht funktionieren. Der dritte Parameter gibt die Engine an, nicht (nur) das Format. Ich benutze kein DD; bei mir ist das ausschließlich von den Einstellungen der DBE abhängig und funktioniert einwandfrei - auch ohne Angabe der DBE, wenn DbeSetDefault("ADSDBE") aktiv ist.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: dbf neu anlegen

Beitrag von Manfred »

nur mal so ins blaue geschossen, der FXOCDX Treiber ist ja wohl auch vom System her geladen und steht zur Verfügung?
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!!
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: dbf neu anlegen

Beitrag von Tom »

Wenn er das ist und man so verfährt, erzeugt man nach meinem Verständnis eine Tabelle außerhalb des DD.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbf neu anlegen

Beitrag von Jan »

Hallo Tom,

ja, das hätte ich auch erwartet. Deswegen hatte ich die ADSDBE auch erst nicht im DbCreate() mit drin gehabt.

Und das die FOXCDX nicht funktionieren kann hatte ich irgendwie schon geahnt. Weil die ADSDBE ja nicht nur das Tabellenformat angibt sondern auch, wo die denn abgelegt sind und mit welchen Zugriffsrechten. Aber wenn alles andere nicht funktioniert, und Manfred (der ja auch mit ADS arbeitet) auch meinte das wäre mal einen Versuch wert, dann macht man sowas halt auch mal. Nur um mal was anderes ausprobiert zu haben.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbf neu anlegen

Beitrag von Jan »

Manfred,

ja klar. Sonst hätte der vermutlich schon vorher gemeckert und gesagt, das er die FOXCDX nicht kennen würde.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: dbf neu anlegen

Beitrag von Manfred »

@Tom. hm, da ist was dran. Ich benutze das bei mir so, übergebe dann aber den Defaulttreiber, den ich vorher ermittel. Eigentlich wollte ich wohl damit nur vorschlagen, die DBE direkt mit anzugeben und sich nicht auf das Set Default zu verlassen.
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!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbf neu anlegen

Beitrag von Jan »

Moin,

ich hatte darüber eine Diskussion mit Till. Die mich ziemlich geplättet hat.

Seiner Meinung nach ist meine dbesys falsch. Ich habe den DbeSetDefault("ADSDBE") NACH den ganzen Konfigurationen eingebaut. Und damit seien die wirkungslos gewesen. Und da vor der Konfiguration der ADSDBE in der dbesys die FOXCDX erfolgt ist hätte ich die FOXCDX mit den ADS-Einstellungen durchgeführt.

Was ich dabei nicht verstehe: Warum gibt es keine Laufzeitfehler, wenn ich tatsächlich die FOXCDX mit den DbeInfo für die ads konfiguriert habe? Hätte der nicht merken müssen das ich die FOXCDX mit Werten belegen will, die zu einer anderen DBE gehören?

Und wenn ich das jetzt so umbaue wie Till das meint, also

Code: Alles auswählen

IF .NOT. Dbeload("ADSDBE", .F.)
   Alert("ADSDBE konnte nicht geladen werden!")
ENDIF
DbeSetDefault("ADSDBE")                                                                                                               // <== Hier hoch kopiert
DbeInfo(COMPONENT_DATA, ADSDBE_LOCK_MODE, ADSDBE_PROPRIETARY_LOCKING)                              // dbf nur über ADS bearbeitbar
DbeInfo(COMPONENT_DATA, ADSDBE_TBL_MODE, ADSDBE_CDX)
DbeInfo(COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_CDX)
DbeInfo(COMPONENT_DATA, ADSDBE_RIGHTS_MODE, ADSDBE_IGNORERIGHTS)

DbeInfo(COMPONENT_DATA, ADSDBE_TABLENAME_IS_ALIAS, .T.)

// Standard-Datenbanktreiber setzen
//DbeSetDefault("ADSDBE")                                                                                                           // <== Auskommentiert
dann kann ich keine Datenbankoperationen mehr durchführen, wenn ich den Alias beim Öffnen anpasse. Der gibt mir einen Laufzeitfehler weil dieser Alias unbekannt sei. Der ignoriert im USE die Alias-Angabe, und nutzt statt dessen den Standard-Alias für diese Tabelle.

Allerdings läuft das wie ganz oben zu Beginn gepostet seit mehreren Jahren stabil. Obwohl der doch angeblich die ADS-Konfigurationen nicht genutzt hat. Nur jetzt das DbCreate() hatte halt nicht funktioniert.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: dbf neu anlegen

Beitrag von Manfred »

Sorry,
das hatte ich vergessen, ich meine mich erinnern zu können, das ich in diese Falle ausch schon vor ein paar Jahren getappt bin. Jetzt wo Du die dbesys angesprochen hast....
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!!
Antworten