Autor Beitrag
qball
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 47



BeitragVerfasst: Mi 18.02.04 17:19 
ich will in einem editfeld anzeigen, der wievielte datensatz gerade angezeigt wird. ich habe das folgendermaßen gelöst:
ausblenden Quelltext
1:
edit2.text:=inttostr(table1.RecNo);					

nun habe ich festgestellt, dass ehemalige, mittlerweile wieder gelöschte datensätze aber auch mitgezählt werden. wie krieg ich nun hin, dass es mir wirklich nur die aktuelle datensatz-position angibt?

(das problem ist mir zumindest am ende der tabelle aufgefallen. ich hatte 195 datensätze, habe einen hinzugefügt -> 196, den dann wieder gelöscht und wieder einen hinzugefügt, auf einmal warens 197 usw.)
Anfänger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP
D3 Prof
BeitragVerfasst: Mi 18.02.04 21:35 
Ja, habe ich gehört..
Soweit ich weiß ist das nur bei DBase- Datenbanken so.
Aber bei paradox sollte das soweit ich weiß nicht sein.
Ich bin kein Benutzer von DBase also habe ich auch nicht viel Ahnung...
Ich würde eine Voraussetzung eingeben, dass der Inhalt nicht leer sein darf (<>'').
Habs allerdings nicht ausprobiert.

Solltest vielleicht eine kleine Schleife bauen, in der er mit dem beschriebenen Befehl die Datensätze mit Inhalt sucht und auszählt.
qball Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 47



BeitragVerfasst: Mi 18.02.04 23:50 
kann ich eventuell die dbase-tabelle ins paradox-format konvertieren?

edit: habe versucht, die leeren datensätze zu löschen. die sind aber nicht anwählbar. es werden lediglich die positionsnummern sozusagen "reserviert". was tun???
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Do 19.02.04 01:36 
hallo qball!

dein problem kannst du ganz einfach dadurch lösen, dass du datensätze nicht löscht, sondern editierst ;)
oder du gehst von zeit zu zeit her und 'packst' deine tabelle, d.h. die als gelöscht gekennzeichneten datensätze werden endgültig aus der tabelle entfernt.

schau mal bei den schweizern nach. dort findest du auch sonstige tipps zu dbase-tabellen.

und --> hier sind tipps & erklärungen dazu.

mfg, stefan
jjturbo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 516

Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
BeitragVerfasst: Do 19.02.04 09:34 
Es ist in der Tat so, daß bei DBase gelöschte Datensätze weiterhin eine RecNo belegen. Irgendwo meine ich mal gesehen zu haben, daß es eine Möglichkeit gibt (Komprimieren? glaube ich), diese Datensätze zu eliminieren. Ich bin irgendwann auf Paradox umgestiegen, da gibt es dieses Problem nicht. Außerdem hat man auch noch ein paar andere Möglichkeiten, z.B. funktioniert INSERT auch wie erwartet...

Ich habe ein kleines Tool geschrieben, welches DBase-Dateien als Paradox speichern kann.

Wird bei Interesse veröffentlicht.

Gruß, jjturbo

_________________
Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
qball Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 47



BeitragVerfasst: Do 19.02.04 14:08 
oh ja, so ein tool wäre super! ich habe nämlich versucht, die table zu packen, will aber nicht so recht...

also wenn du mir das geben könntest, wäre ich dir echt dankbar
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Do 19.02.04 17:08 
hallo qball!

Zitat:
will aber nicht so recht

und wie äussert sich das nicht so recht wollen? :?

glaubst nicht, dass du deine 196 datensätze selbst in eine paradox-tabelle schaufeln kannst?
schliesslich ist das hier ein programmiererforum *g*

ich würde folgendermassen vorgehen
- mit hilfe der DBO eine paradox-tabelle anlegen
- 2 tables auf meine form ziehen
- einen tbl_dbase und en anderen tbl_paradox nennen
- beide tables öffnen
- solange dbase.eof nicht falsch ist...
- beim paradoxtable ein append machen
- die feldinhalte aus dem dbase-table in den paradox-table schaufeln
- paradox.post und dbase.next nicht vergessen! :twisted:
- tables schliessen
- meldung 'fertig' anzeigen lassen

hoffentlich sind danach alle datensätze gut angekommen

fürs nächste mal kannst dir batchmove ansehen, damit funktioniert das datenschaufeln mit weniger aufwand...

mfg, stefan
jjturbo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 516

Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
BeitragVerfasst: Mo 23.02.04 09:13 
Grayfox hat natürlich recht: Zwei Tables erstellen, eine zeigt auf die DBase, die andere auf die Paradox, dann alle Daten sätze mit TBatchmove kopieren und feddich...

_________________
Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mo 23.02.04 12:11 
Zitat:
Grayfox hat natürlich recht


§1 ich hab immer recht
§2 hab ich einmal nicht recht, siehe §1 :twisted:

oft verliert man durch suchen einer passenden komponente, die das gewünschte kann, den blick fürs wesentliche.
wenn ich schnell tabelleninhalte invertieren will/muss, dann nehm ich das auf die oben beschriebene art und weise in angriff

mfg, stefan