Entwickler-Ecke
Datenbanken - Datum automatisch ind dbgrid Feld einfügen
The_Tremendous - Do 30.12.04 14:14
Titel: Datum automatisch ind dbgrid Feld einfügen
Ich möchte jedes mal, wenn das dbgrind im edit modus gesetzt wird, das aktuelle Datum in das Feld Datum im Grid automatisch einfügen.
Wie kann ich das machen??
The_Tremendous
Tino - Do 30.12.04 14:23
Hallo!
Wo liegt genau das Problem? Weist du nicht wie du genau darauf regagieren kannst wenn sich der Status Edit vom DBGrid ändert oder weißt du nicht wie man das aktuelle Datum in die Spalte einer DB-Tabelle einfügt?
Gruß
Tino
The_Tremendous - Do 30.12.04 14:48
Also in dem moment, indem die Form mit dem Grid geöffnet wird setzte ich das grid in den edit modus. Dann kann der Nutzer nen neuen Datensatz in die Tabelle Speichern, in dem er, wenn er die Daten in die Felder Des Grids eingegeben hat auf den Butten Speichern klickt. Das funktioniert auch.
Ich möchte aber nun, das der Nutzer das Datum im Grid nicht eingeben kann (also die Eingabe für das Feld gesperrt ist) und das das Datum da schon Drinne steht.
Gruß
The_Tremendous
grayfox - Do 30.12.04 16:07
hallo tremendous!
Zitat: |
setzte ich das grid in den edit modus |
ist es nicht eher so, dass du das dataset in den edit-modus setzt, welches dem dbgrid dahinterliegt? daher brauchst du lediglich zum eintragen es datums das betreffende feld im dataset zu befüllen
zb:
Delphi-Quelltext
1:
| DeinDataSet.FieldByName('Datum').asTDateTime:= Date |
und somit wird das aktuelle tagesdatum im dbgrid angezeigt
mfg, stefan
jasocul - Do 30.12.04 18:56
Und das passende Ereignis ist OnStateChange der TDataSource.
Dort kannst du dann sogar prüfen, ob eine Datensatz erfasst oder geändert wird.
The_Tremendous - Do 30.12.04 20:04
Hi.
Das mit dem Datum einfügen Klappt soweit. Ich wollte nun noch die Sache so gestalten, das der Nutzer auch nichts in das Feld Datum eintragen kann.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure TForm1.FormCreate(Sender: TObject); begin Table1.Active := True; DBGrid1.DataSource.DataSet.Edit;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Table1.Active := False; end;
procedure TForm1.BitBtn2Click(Sender: TObject); begin
DBGrid1.DataSource.DataSet.Delete; end;
procedure TForm1.BitBtn1Click(Sender: TObject); begin DBGrid1.DataSource.DataSet.Insert; end;
procedure TForm1.Table1NewRecord(DataSet: TDataSet); begin DataSet.FieldByName('Datum').AsDatetime := Now; DataSet.FieldByName('Datum').ReadOnly := true; end;
end. |
Nun bekomme ich immer beim Speichern die Fehlermeldung:
Im Projekt Project1.exe ist eine Exception der Klasse EDatabaseError aufgetreten.
Meldung: 'Feld 'Datum' kann nicht verändert werden'.
Was stimmt da nicht?? und Was könnte ich noch ändern oder so um Fehler abzufangen??
The_Tremendous
grayfox - Do 30.12.04 20:16
was spricht eigentlich dagegen, DBGrid1.DataSource.DataSet durch table1 zu ersetzen? oder machst du gerne solche verrenkungen?
die fehlermeldung könnte daher stammen, dass du ReadOnly auf true setzt.
mfg, stefan
The_Tremendous - Do 30.12.04 20:22
Das mit Table1 schreiben ist akzeptiert :lol:
Ich habe das read only doch extra reingesetzt, damit der user das Datum welches ich automatisch erzeuge net ändern kann. Deshalb ja meine Frage, wie ich den Fehler verhindern kann.
grayfox - Do 30.12.04 21:22
dann setz das datumsfeld im spalteneditor des dbgrid auf 'read-only', das sollte helfen.
btw: macht es überhaupt sinn, ein feld im dbgrid anzuzeigen, auf dessen inhalt der user keinen zugriff haben soll?
mfg, stefan
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!