AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi DBGrid Zeile in AfterScroll Ereignis erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid Zeile in AfterScroll Ereignis erzeugen

Ein Thema von Luca Haas · begonnen am 7. Nov 2017 · letzter Beitrag vom 8. Nov 2017
Antwort Antwort
Seite 1 von 2  1 2      
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

DBGrid Zeile in AfterScroll Ereignis erzeugen

  Alt 7. Nov 2017, 15:21
Hi Leute,
wie im Titel schon gesagt, habe ich ein DBGrid, für das es ein AfterScroll-Ereignis, welches die ID abfragt, gibt.
Daher habe ich jetzt das Problem, dass ich, jedes Mal eine Fehlermeldung bekomme, wenn ich eine neue Zeile in die Datenbank einfügen will, da die ID erst mit dem Speichern der Zeile eingefügt wird.
Delphi-Quellcode:
   
AufgabenVorlagenQuery.Close;
AufgabenVorlagenQuery.SQL.Text := ('SELECT * FROM AufgabenVorlagen WHERE AufgabenMusterID = ' + AufgabenMusterQuery.FieldByName('ID').AsString + ' ORDER BY Position ASC');
AufgabenVorlagenQuery.Open;
Weiß jemand wie ich es hinbekomme, dass die ID sofort eingesetzt wird und nicht erst mit dem Speichern?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: DBGrid Zeile in AfterScroll Ereignis erzeugen

  Alt 7. Nov 2017, 15:23
Setzte das Feld auf "NULL". Dann sollte es funktionieren.
Markus Kinzler
  Mit Zitat antworten Zitat
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: DBGrid Zeile in AfterScroll Ereignis erzeugen

  Alt 7. Nov 2017, 15:25
Wie genau setze ich denn ein Feld auf null ?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

AW: DBGrid Zeile in AfterScroll Ereignis erzeugen

  Alt 7. Nov 2017, 15:30
AufgabenMusterQuery.FieldByName('ID').Clear;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: DBGrid Zeile in AfterScroll Ereignis erzeugen

  Alt 7. Nov 2017, 15:39
Jetzt bekomme ich beim Start die Fehlermeldung, dass die Datenmenge weder im Editier-noch im Einfügemodus ist.
Und wenn ich jetzt eine Zeile hinzufügen will erhalte ich die Nachricht, dass ich das Feld ID nicht verändern kann.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#6

AW: DBGrid Zeile in AfterScroll Ereignis erzeugen

  Alt 7. Nov 2017, 15:42
Sieht aus, als müsstest du dein Problem etwas deutlicher erläutern.

Was hast du vor?
Was tust du?
Was geht nicht?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: DBGrid Zeile in AfterScroll Ereignis erzeugen

  Alt 7. Nov 2017, 15:52
1. Wie ist das Feld in der Datenbank definiert?
2. Vor dem Ändern eines Wertes: Dataset.Edit
3. Nach dem Ändern eines Werte: DataSet.Post

Datensätze, die man zur Laufzeit in 'nem DBGrid einfügt und deren Werte erst vollständig von der Datenbank gefüllt werden, also z. B. AutoInc-Spalten, Sequenzen, Trigger, die Werte ergänzen ..., kann man erst nach 'nem erneuten Öffnen der Tabelle beschreiben. Vorher gibt es eine Fehlermeldung, die abhängig vom Datenbanktyp, variieren kann.

Ebenso sieht man die von der Datenbank vergebenen Werte erst nach 'nem erneuten Lesen der Daten.

AutoInc-Spalten kann man (in der Regel) im Programm nicht ändern, weder durch Zuweisen eines Wertes, noch durch Clear ...

Manche Datenbanken unterstützen noch ein DataSet.Refresh. Das muss man mit "seiner" Datenbank austesten, verliert dadurch aber sehr schnell die Datenbankunabhängigkeit.
  Mit Zitat antworten Zitat
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

AW: DBGrid Zeile in AfterScroll Ereignis erzeugen

  Alt 7. Nov 2017, 15:59
Okay ich habe das Problem gelöst, indem ich den Fehler umgangen habe
Delphi-Quellcode:
procedure THauptForm.AufgabenMusterQueryAfterScroll(DataSet: TDataSet);
begin
  if not (AufgabenMusterQuery.State in [dsinsert]) then
  begin
    AufgabenVorlagenQuery.Close;
    AufgabenVorlagenQuery.SQL.text := ('SELECT * FROM AufgabenVorlagen WHERE AufgabenMusterID = ' + AufgabenMusterQuery.FieldByName('ID').AsString + ' ORDER BY Position ASC');
    AufgabenVorlagenQuery.Open;
  end;
end;
ich sage einfach, er soll nur ins AfterScroll Ereignis gehen, wenn er nicht im Bearbeitungsmodus ist
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#9

AW: DBGrid Zeile in AfterScroll Ereignis erzeugen

  Alt 7. Nov 2017, 16:07
ich sage einfach, er soll nur ins AfterScroll Ereignis gehen, wenn er nicht im Bearbeitungsmodus ist
Dann wäre diese Abfrage besser geeignet:

if (AufgabenMusterQuery.State in [dsInactive, dsBrowse]) then
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: DBGrid Zeile in AfterScroll Ereignis erzeugen

  Alt 7. Nov 2017, 16:09
Okay, dann ändere ich das noch, danke schön
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:46 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