![]() |
Datenbank: paradox • Version: 7 • Zugriff über: DBE
table.insert überspeichert daten ?!
hey!
hab folgendes problem: arbeite mit delphi 7 in verbindung mit paradox 7 datenbanken daten werden aus tabelle per ganz normal per table und datasource in delphi eingelesen und in diversen DBlookupcomboboxen angezeigt wenn ich nun in meine "haupttabelle" einen neuen datensatz einfügen möchte, so wird per button click zuerst tablehaupttabelle.insert gesetzt dann die nebentabelle(1) tabletermin.insert soweit so gut die neuen werte der haupttabelle werden vom benutzer per DBEdit felder direkt in die tabellen eingeschrieben während die nebentabelle(1) alleine zum daten aus dblookupboxen auswählen benötigt wird und mit table.post in die tabelle gespeichert anmerkung: die haupttabelle ist nicht direkt per fremdschlüsselfeld mit der nebentabelle(1) verbunden sondern über eine zweite nebentabelle(2) also: haupttabelle - nebentabbele(2) - nebentabelle(1) jetzt kommt die eigentliche knifflige stelle: aus einem kalender (datetimepicker) sollen zusätzlich noch neue daten in nebentabelle(1) gespeichert werden. da datetimepicker keine DB komponente ist werden die daten per SQL eingeschrieben:
Delphi-Quellcode:
da delphi was das schließen von tables angeht manchmal leicht verwirrt scheint steht in TForm1.FormClose() noch:tablelv.Post; //haupttabelle tabletermin.Post; //nebentabelle(1) datum:= frame21.DateTimePicker1.Date; Query1.SQL.Text := 'INSERT INTO tabellen\Datum(Datum) VALUES(:datum)'; Query1.ParamByName('datum').AsDateTime := frame21.DateTimePicker1.Date; Query1.ExecSQL; tableLV.FlushBuffers; tabletermin.FlushBuffers; tableLV.close; tabletermin.close; so jetzt zum springendem punkt: wenn ich den speicher button drücke wird nur das kalenderdatum (datetimepicker wert) in die tabelle gespeichert die andern felder bleiben vorerst leer. sobald ich mein programm schließe wird dieser wert überspeichert(?), es wird eine leeres feld während die anderen felder der anderen spalten welche mittels tabletermin.post gespeichert wurden eingeschrieben werden meine frage lautet also: warum ist das so? wie kann ich das ändern? muss ich statt den wert von datetimepicker direkt in SQL zu speichern ihn zuerst irgendwie in table speichern? wenn ja wie? |
Re: table.insert überspeichert daten ?!
Hallo,
Delphi-Quellcode:
Das liegt nicht an Delphi, sondern an Paradox.
da delphi was das schließen von tables angeht manchmal leicht verwirrt scheint steht in TForm1.FormClose() noch:
tableLV.FlushBuffers; tabletermin.FlushBuffers; tableLV.close; tabletermin.close; Damit wirst du keine Freude haben. Zitat:
Schreibe das nach dem Post und prüfe deine Daten per DBD. Mehr kann ich ohne Quellcode nicht sagen. Benutze den Debugger und Breakpoints, um den Fehler zu finden. Heiko |
Re: table.insert überspeichert daten ?!
was? nein!!!
habs jetzt nochmal so probiert wie du vorgeschlagen hat ändert aber leider nichts an der tatsache.. also am besten 2 tabellen daraus machen oder? hm.. das heißt ganze datenbank überarbeiten na super hachgott wenn delphi/paradox einmal das machen würde was ich will^^ :wall: sonst noch wer eine idee wie man das anders lösen könnte? |
Re: table.insert überspeichert daten ?!
Hallo,
du hast dann wohl einen Logik-Fehler im Programm. Zeige doch noch mal den Schreib-Code. F5, F7, F8 sind dein Freund. Update: Den DBD darfst du erst nach dem Speichern in deinem Programm öffnen, sonst sieht der deine gespeicherten Änderungen nicht. Der darf also nicht offen bleiben. Das FlushBuffers speichert das zwar ab auf die Platte, Paradox (und damit der DBD) hat aber auch noch einen Lese-Puffer, der über Table.Refresh geleert wird. Der DBD macht das aber glaube ich nicht. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz