Einzelnen Beitrag anzeigen

veetschal

Registriert seit: 25. Jun 2009
11 Beiträge
 
Delphi 7 Personal
 
#1

table.insert überspeichert daten ?!

  Alt 15. Apr 2010, 00:54
Datenbank: paradox • Version: 7 • Zugriff über: DBE
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:

    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;
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;


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?
there are only 10 kind of people - those who understand binary codes and those who don't
  Mit Zitat antworten Zitat