Was hat DBGrid für einen Status?
-
Hallo!
Ich würde gerne wie der Status von einem Feld in einem DBGrid geprüft werden kann. Wenn ich ein Feld selektiere und mit der Maus reinklicke wird das Feld blau hinterlegt und der Cursor blinkt in diesem Feld.
Wenn ich jetzt jedoch mit nachfolgendem Code prüfe sehe ich das der Datensatz nicht geöffnet ist.
if(ADOQuery1->State == dsEdit) { ShowMessage("Der Datensatz ist geöffnet."); }
Für Hilfe bin ich wie immer dankbar.
Gruss
Maik
-
Direkt kann ich dir nicht weiterhelfen, aber du könntest dir den Status ausgeben lassen den die ADOQuery hat.
-
Hallo!
Ich habe mir jetzt mal den Status ausgeben lassen, als Ergebnis bekomme ich die Zahl 1.
Mein Problem ist nach wie vor das es im DBGrid so aussieht als wäre der Datensatz in Bearbeitung obwohl er definitv nicht in Bearbeitung ist, aber das Feld ist blau hinterlegt und der Cursor blinkt.
Wenn ich dann Pfeil nach oben oder so drücke ist es wieder weg und alles passt.
Viele Grüsse
Maik
-
Was passiert denn wenn du in dem Feld Änderungen machst? Werden die übernommen oder nicht?
Normalerweise übernimmt das DBGrid Änderungen sobald man den Datensatz oder die Spalte wechselt. Im Fall dass die Datenquelle gar nicht offen ist gibt das auch einen Fehler.maikmueller schrieb:
Ich habe mir jetzt mal den Status ausgeben lassen, als Ergebnis bekomme ich die Zahl 1.
Schau mal in der Hilfe bei State/TDataSetState, dort stehen alle möglichen Werte drin. Der erste Eintrag dsInactive hat den Wert 0. Alle weiteren sind dann entsprechend einen Wert höher.
-
Hallo,
ich habe in dem DBGrid im OnKeyPress-Event eine Routine welche bei Betätigung der Return-Taste diverse Berechnungen ausführt und andere Felder im gleichen Datensatz füllt. Anschliessend wird der Datensatz gespeichert und auf der ADOQuery ein Requery() ausgeführt.
Das funktioniert auch alles super, nur eben mit dem Manko das er genau in dem Feld welches per Return-Taste die Routine ausführt danach mit dem "offenen Status" stehen bleibt. Wie wenn das Feld immer noch in Bearbeitung wäre was aber nicht der Fall ist. Im ersten Datensatz tritt dieses Problem komischerweise nicht auf sonder erst ab dem zweiten Datensatz.