Umstellung von DBF nach ADT

Advantage Database Server

Moderator: Moderatoren

Antworten
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 164
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Hat sich bedankt: 2 Mal
Kontaktdaten:

Umstellung von DBF nach ADT

Beitrag von hschmidt »

Hallo,

mich würde interessieren, ob jemand hier im Forum mit dem Advantage Database Server (ADS) arbeitet und schon versucht hat, auf das mit der 1.9er Version der ADSDBE mögliche ADT-Datenbankformat umzustellen.

Ich habe mich daran gemacht und hatte mit der Erzeugung eines Data-Dictionaries und der Konvertierung der Tabellen eigentlich keine Probleme.
Was allerdings problematisch ist, ist die Vorbelegung von leeren Werten in ADT-Tabellen mit NULL-Values. Diese tauchen nämlich (auch in zusammengesetzten) Index-Ausdrücken nicht auf. Ich habe mir deshalb eine Konverierungsroutine geschrieben, die alle NULL-Werte durch entsprechende leere Werte ersetzt, das kostet aber natürlich relativ viel Zeit.
Vielleicht hat sich schon jemand mit diesem Thema beschäftigt und weiß eine bessere Lösung?

Schöne Grüße

Hans
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Hans.

SET NULLVALUE OFF
Herzlich,
Tom
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 164
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Hat sich bedankt: 2 Mal
Kontaktdaten:

Beitrag von hschmidt »

Hallo Tom,

so einfach ist es leider nicht!
SET NULLVALUE OFF regelt nur, wie Xbase++ mit den NULL-Werten umgeht. Das habe ich gesetzt und die Interpretation der NULL-Werte im Programm funktioniert einwandfrei.
Das Problem ist, dass die Indexe ja von ADS auf dem Server verarbeitet werden.
Konkret: ich habe einen Index mit dem Ausdruck NAME + VORNAME + DTOS(GEBURT)
wenn eines der Felder NULL ist, ist per Defininition von Extendet Systems der Gesamtausdruck NULL und fällt damit aus dem Index heraus. Das bedeutet, alle Datensätze, bei denen kein Geburtsdatum eingetragen ist, sind unter diesem Index nicht sichtbar.

Hans
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

bei MySQL konnte ich auf Datenfeldebene definieren, ob NULL oder ein Default Wert bei neuen Sätzen in diesen Feldern generiert werden soll.
So habe ich der MySQL-DB beigebracht, sich wie eine DBF zu verhalten.

Eventuell gibt es solche Schalter bei ADS auch ...
Gruß
Hubert
Antworten