AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi table.insert überspeichert daten ?!
Thema durchsuchen
Ansicht
Themen-Optionen

table.insert überspeichert daten ?!

Ein Thema von veetschal · begonnen am 14. Apr 2010 · letzter Beitrag vom 15. Apr 2010
Antwort Antwort
veetschal

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

table.insert überspeichert daten ?!

  Alt 14. Apr 2010, 23: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
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: table.insert überspeichert daten ?!

  Alt 15. Apr 2010, 06:57
Hallo,

Delphi-Quellcode:
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;
Das liegt nicht an Delphi, sondern an Paradox.
Damit wirst du keine Freude haben.


Zitat:
sobald ich mein programm schließe wird dieser wert überspeichert(?),
Erst beim Beenden werden die Daten tatsächlich auf die Platte geschrieben (dein FlushBuffers).

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
Heiko
  Mit Zitat antworten Zitat
veetschal

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

Re: table.insert überspeichert daten ?!

  Alt 15. Apr 2010, 10:01
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^^

sonst noch wer eine idee wie man das anders lösen könnte?
there are only 10 kind of people - those who understand binary codes and those who don't
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: table.insert überspeichert daten ?!

  Alt 15. Apr 2010, 10:55
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
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz