Autor Beitrag
Jagg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 20.11.02 12:25 
Hallo !

Ich habe DBGrid mit Query vebunden !
Wenn ich das Programm starte und einen neuen Datensatz eingebe,dann
wird der Datensatz nicht gespeichert,sondern fällt weg beim next ProgrammStart !

Walum ?


Jagg !
DataCool
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112



BeitragVerfasst: Mi 20.11.02 12:30 
Hast Du auch einen DBNavigator mit dem DataSource verbunden ?

Steht die Query vielleicht auf ReadOnly ?

_________________
DataCool
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 20.11.02 12:56 
Es geht noch einfacher. :wink:

Hast du vielleicht einfach den Aufruf von "Post" vergessen?

Cu, :)
Udontknow
DataCool
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112



BeitragVerfasst: Mi 20.11.02 13:08 
Darauf wollte ich hinaus, deshalb der DBNavigator :wink:

_________________
DataCool
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 20.11.02 13:30 
ausblenden Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button3Click(Sender: TObject);
begin
  Query1.Post;
  DBEdit1.SetFocus;
end;


Er sagt dann den Fehler :

Datenmenge weder im Editer noch im Einfügemodus !

Muss ich dann noch : "Query1.Edit" machen ?
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 20.11.02 13:41 
Post funzt nur, wenn du vorher Edit oder Insert aufgerufen hast. Es macht aber keinen Sinn, deshalb dann Edit oder Insert aufzurufen.

Also: Grundsätzlich wird ein Datensatz in einem TDataset zuerst mit Insert oder Update für die Bearbeitung bereit gemacht, nach der Bearbeitung muss man dann Post ausführen.
In einem DBGrid wird automatisch Insert aufgerufen, wenn du in der letzten Zeile den Pfeil nach unten drückst, Update wird ausgeführt, wenn du in irgendeiner Zelle etwas veränderst. Ein DBGrid postet auch automatisch, wenn du diese Zeile verlässt und auf einen anderen Datensatz gehst.
Fügst du aber nur ein, verlässt aber nicht diese Zeile und beendest sofort das Programm, so wird kein Post ausgeführt, der Datensatz landet nicht in der Datenbank.

Hier, das solltest du in dein Onclose-Event packen:

ausblenden Quelltext
1:
2:
if (Query1.State=dsInsert) or (Query1.State=dsUpdate) then
  Query1.Post;


Cu, :)
Udontknow
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 20.11.02 13:58 
dsUpdate kennt er aber nicht !

Muss ich eine Unit einfügen oder so ?

Jagg !
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 20.11.02 14:25 
Ups, sorry, es muss dsEdit heissen. Deklaration befindet sich in der Unit DB.

Cu,
Udontknow
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 20.11.02 14:47 
hm...... geht irgendwie nicht !

JAgg !
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 20.11.02 15:01 
meno....warum schreibt er in die datenbank nichts rein ?
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 20.11.02 15:13 
Schliesst du vor der Ausführung desoben gegebenen Code-Snippets die DB-Connection oder die Query?
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 20.11.02 15:24 
nein mach ich nicht !
liegt es daran ?

Jagg !
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 20.11.02 15:41 
Es hätte daran gelegen, wenn du so verfahren hättest...
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 20.11.02 15:47 
ich habe nochmal nachgeschau...also,ich schliesse nichts,das ist alles noch geöffnet !

Jagg !
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 20.11.02 16:02 
Wie ist denn der State der Query vor dem Snippet?
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 20.11.02 16:13 
Ich habe da keinen state !
muss da einer hin ?
oder muss da was im Objektinspektor gemacht werden ?
Jagg !
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Mi 20.11.02 16:20 
Schließt du die DB bei Programmende? Das ist auch wichtig!

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 20.11.02 16:50 
ne ich schliesse es nicht !
warum sollte ich auch !
bei ttable schreibt er es sofort rein !

Jagg !
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 20.11.02 17:13 
:?:

Wie, du hast keinen State? State ist eine Eigenschaft der Query, diese hat zu jeder Zeit einen Status! Also, Haltepunkt vor dem Codesnippet und dann per Strg+F7 Query1.State auswerten!

Cu,
Udontknow