AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TDBGrid ; Leeren Datensatz bei Post erkennen ?
Thema durchsuchen
Ansicht
Themen-Optionen

TDBGrid ; Leeren Datensatz bei Post erkennen ?

Ein Thema von st2000 · begonnen am 15. Okt 2003 · letzter Beitrag vom 15. Okt 2003
Antwort Antwort
st2000

Registriert seit: 23. Apr 2003
Ort: Hamburg
52 Beiträge
 
Delphi 5 Enterprise
 
#1

TDBGrid ; Leeren Datensatz bei Post erkennen ?

  Alt 15. Okt 2003, 11:53
Hallo,
ich möchte gern verhindern, daß ein User erst einen (zunächst ja leeren) Datensatz in einem Grid (via TDBNavigator) einfügt, in diesen aber nix einträgt und dann posted. Das ergibt nämlich (bei einer unterliegenden Access-DB) eine Exception...

Kann ich das schon auf TTable-Ebene prüfen ? Also z.B.
if Table1[Feld1]='or Table1[Feld2]='then Table1.cancel ?

Würde ja voraussetzen, dass ich mich darauf verlassen kann, daß die Table1 nach dem Post des Navigators noch den Cursor auf dem eingefügten, aber leergebliebenen Datensatz hat.

Oder gibts eine Möglichkeit, insgesamt eine TTAble oder TDBGRid daraufhin zu prüfen,ob irgendwo leere Datensätze sind ? Ich meine, ohne eine Schleife auf alle Datensätze loszujagen ? Irgendein Flag zum Abfragen ??

Wenn der User selbst wieder cancel drückt, bevor er posted, ist ja alles OK. Aber ich würde es schon gern abfangen...

Bin für jeden Tip dankbar, hab bislang weder in der Hilfe noch im Forum was ähnlich-klingendes gefunden.

Gruss,
ST2000
Stefan
Keine Softwarepatente ! Die Polen = wahre Freiheitskämpfer !!! Gerade noch rechtzeitig Mitglied geworden, um die Notbremse zu ziehen. Year !!!
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#2

Re: TDBGrid ; Leeren Datensatz bei Post erkennen ?

  Alt 15. Okt 2003, 12:08
Hallo ST2000

dann sieh Dir doch das Ereignis beforePost von TTable an:
Zitat:
Sie können mit BeforePost beispielsweise vor dem Eintragen der geänderten Daten Gültigkeitsprüfungen durchführen. Bei ungültigen Daten kann die Anwendung dann Abort aufrufen, um die Operation abzubrechen.
  Mit Zitat antworten Zitat
st2000

Registriert seit: 23. Apr 2003
Ort: Hamburg
52 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: TDBGrid ; Leeren Datensatz bei Post erkennen ?

  Alt 15. Okt 2003, 12:52
OK, aber was prüfe ich dann ?

Muss ich dann im Grid Zelleninhalte prüfen,
oder kann ich mich darauf verlassen, daß im Dataset (also hier Table1) der Cursor immer noch auf dem Datensatz = der Grid-Row steht, die ich gerade posten wollte ?

Dann würde ich es lieber in der Table1 prüfen (entspricht ja dem Chache-Inhalt, den ich posten will, oder ? Oder den zuletzt abgerufenen Daten, ohne meine Änderungen(Pending Changes?)).

Ausserdem wäre es mir am liebsten, das ganze Grid nach Änderungen zu durchforsten, die in leeren Zellen resultieren. Nur fürchte ich Inperformanz mit steigender Datenmenge, wenn ich da durch-iteriere...
Der User könnte ja auch eine Zelle leeren, die bisher OK war.

Habe schon einen Blick auf DBGrid.Columns[x].Field.NewValue geworfen. Wenn ich die (englische) OH-Beschreibung richtig deute, ist hier DER Wert drin, der durch die (noch ungeposteten) User-Änderungen entsteht.

Sehe ich das richtig ?
Keine Änderung: TField.NewValue entspricht TField.Value
Änderung aufgetreten: TField.NewValue unterscheidet sich von TField.Value
Post erfolgt: TField.NewValue entspricht wieder TField.Value, d.h. Value erhält den Wert aus NewValue zugewiesen.

Gruss,
ST2000
Stefan
Keine Softwarepatente ! Die Polen = wahre Freiheitskämpfer !!! Gerade noch rechtzeitig Mitglied geworden, um die Notbremse zu ziehen. Year !!!
  Mit Zitat antworten Zitat
st2000

Registriert seit: 23. Apr 2003
Ort: Hamburg
52 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: TDBGrid ; Leeren Datensatz bei Post erkennen ?

  Alt 15. Okt 2003, 18:54
Habs nun so hinbekommen :

Delphi-Quellcode:
procedure Tdlg_100082.DataSource1_100082UpdateData(Sender: TObject);
begin
if tbl1.FieldByName('deptname').AsString = 'then
   begin
   tbl1.Cancel;
   tbl1.Edit;
   end;
end;
Das Feld deptname ist ein Mussfeld, da soll kein Blank erlaubt sein. Hätte auch weitere checken können, aber reicht ja...
Den tbl1.Edit brauchts, weil anschliessend zum DataSource.UpdateData noch das tbl1.post kommt; gibt sonst eine Exception, dass das DataSet nicht im Edit-Mode ist...

Gruss,
ST2000
Stefan
Keine Softwarepatente ! Die Polen = wahre Freiheitskämpfer !!! Gerade noch rechtzeitig Mitglied geworden, um die Notbremse zu ziehen. Year !!!
  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 11:40 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