Autor Beitrag
The_Tremendous
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win XP SP2
Borland Delphi 6
BeitragVerfasst: Do 30.12.04 14:14 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win XP SP2
Borland Delphi 6
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
DeinDataSet.FieldByName('Datum').asTDateTime:= Date					


und somit wird das aktuelle tagesdatum im dbgrid angezeigt

mfg, stefan
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win XP SP2
Borland Delphi 6
BeitragVerfasst: 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.

ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win XP SP2
Borland Delphi 6
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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