Subject |
Re: MDX NDX Grundlagen |
From |
Peter DH4JQ <pbruk@gmx.de> |
Date |
Fri, 17 May 2013 04:03:07 -0400 |
Newsgroups |
dbase.deutsch |
Danke Rainald für die Ausführliche Antwort Klasse. ich beschäftige mich seit 3 Wochen intensiv mit einm Problem aber zu erst etwas Hintergund
wir schreiben ein Programm das wir in clipper geschrieben haben um in dBASEPLUS zur Zeit haben wir die Version 2.8 .
Nun ist das so wir importieren eien qso.dbf (hat ca 81.000 Datensätze
aus den alten Programm das läuft ohne Problem dabei wird auch die MDX Datei erzeugt der Index wird so erzeugt
INDEX on CALL TAG RUFZ
INDEX on QSONR TAG NUMERO
wie gesagt das geht ohne Problem
Nun zum Problem wir würden gern wenn das Programm neustartet den Index reindizieren und oder wenn der Index fehlt (wir haben daus die Fummel rum ) den Index neu erstellen Das macht unser Programm beim Programmstart. Nu passiert folgendes wenn ich die MDX lösche und unser Programm starte wird der Index erzeugt wenn der Index indiziert wir wir machen das so
if file("QSO0001.mdx"
reindex
passiert folgendes machmal hängt sich das Programm manchmal erstellte es nur eine Indesx z.b den auf Numero (hab mir die MDX im Editor angeschaut) ich konnte aber noch keine regelmäsigkeit entdecken
Das anhängend Problem mit dem Indx Flack das auftritt wenn der Index nicht vorhanden ist haben wir so gelöst
// MDX-Flag löschen//////////////////////////////////////////////////////////////
// 30.04.2013 HD4JQ
f = new file() // f als File-Objekt neu erstellen
f.open("QSO0001.DBF", "RW") // QSO0001.DBF zum Lesen (R) und Schreiben (W)
//öffnen
f.seek(28, 0) // an die Stelle von Byte 28 vom Dateianfang (0) springen
f.write(chr(0)) //Zeichen 0 schreiben - damit wird der Zeiger auf
// eine MDX-Datei entfernt
f.close() // Datei schließen
release object f // File-Objekt f aus dem Speicher löschen (immer schön den Speicher putzen)
// ende MDX Flag löschen/////////////////////////////////////////////////////////
So nun mal die jemand ander drüberschaun lassen ob wir keine groben Fehler gemacht haben und evt weiß eieer was wir falsch machen mit dem reindex oder ist unser alte DB defekt
Vielen Dank für die Mühe
Peter DH4JQ
Rainald Taesler Wrote:
> Peter DH4JQ schrieb:
> > Rainald Taesler schrieb:
>
> >> > bring es Problem und wenn ja welche wenn ich in einem Programm
> >> > ndx und MDX Datei zusammen benutze.
> >>
> >> Offen gesagt kann ich mich nicht mehr erinnern, weil ich seit dem
> >> ersten Erscheinen von dBASE IV nur noch mit dem mit dem
> >> Merhrfach-Index (MDX) gearbeitet habe. Ich weiß nur noch, daß das
> >> Arbeiten mit den Einzel-Indizes ein echter Graus war ...
> >>
> >> Meine Empfehlung: Denk mal über Deine Datenbank-Konstruktion nach und
> >> eliminiere die uralten Konstruktionen, ganz dringend.
>
> > wie wäre es mit eine kurzen Einführung warum mdx und nicht ndx habe
> > mal im Netz geschaut blick es nicht ich würde mich sehr freuen [...]
>
> Das rumgoogeln ist insoweit in der Tat wenig effizient ... :-(
> Da Du auf "Grundlagen" hinauswillst:
> Um welche Version von dBASE geht es eigentlich?
> Welche Literatur/Handbucher hast Du?
>
> Da *deutsche* Handbücher bei dBASE Llc auf den Websites nicht mehr
> greifbar sind, könnte ich mit Michael Rottecks "Arbeitshandbuch" (2002)
> und "Sprachreferenz" zu dBASE 7.5 (2000) dienen.
>
> Was Deine Fragestellung angeht, so habe ich inzwischen durch zahlreiche
> Handbücher durchgequält -ohne großen Erfolg. Mag sein, daß in der
> Dokumentation zu dBASE IV noch etwas stand, die liegt im Umzugskartons
> verpackt {seufz}.
> Viel gibt es nicht zu sagen, daher nur soviel:
>
> 1.) Einzelne Indizes in je separaten NDX-Dateien waren der Standard in
> dBASE III und III+.
> Sie wurden somit auch die Grundlage für daraus abgeleitete
> xBASE-Sprachen (Foxbase, Clipper etc.).
>
> 2.) Mit dBASE IV (1988 <!>) wurde der Standard umgestellt. Es wurden
> sog. "production indexes" eingeführt, bei denen bis zu 47 Indizes in
> einer einzigen Datei in einer MDX-Datei gespeichert werden.
>
> 3.) Das NDX-Format diente seither lediglich der Kompatibilität zu
> früheren Versionen und xBASE-Dialekten.
>
> 4.) Ist kein Komptabilitäts-Problem gegeben, ist die frühere
> Konstruktion *obsolet*.
> Es gibt keinen andern Grund, auch heute noch einen Index mit dem
> NDX-Format zu verwenden.
> Einzige - auch in den neusten Handbüchern noch erwähnte Möglichkeit -:
> Die vorübergehende *temporäre* Indizierung etwa beim Tabellen-Umbau.
>
> 5.) Der Hauptvorteil der MDX-Konstruktion liegt darin, daß *alle*
> Indizes automatisch upgedatet werden, wenn Datensätze editiert oder
> gelöscht werden. Somit ist eine je einzelne Anpassung der Indizes, wie
> sie beim NDX-Format erforderlich war, nicht mehr nötig.
> Ein Neuaufbau der Indizes mittels REINDEX ist allein bei Defekten
> erforderlich.
>
> 6.) In allen zu Rate gezogenen Dokumenten wird das Kopieren der
> NDX-Indizes in die MDX-Datei und das anschließe Entsorgen der alter
> NDX-Dateien empfohlen.
>
> Sehr viel mehr gibt es m.E. kaum zu sagen.
> Also: Umbau auf MDX.
>
> Zu weiteren Antworten auf spezielle Fragen gern bereit
>
> Rainald
>
>
>
>
|
|