| Autor |
Beitrag |
Creed
Hält's aus hier
Beiträge: 4
|
Verfasst: Mo 17.01.05 22:51
Hallo. Also ich habe folgendes Problem. Ich hab ein Stringgrid wo eine Tabelle angezeigt wird.
Dann will ich mit SQL eine Zeile löschen. Wenn ich sie gelöscht habe verschwinden alle Informationen
aus dem StrinGrid und es sieht aus als habe es kein Ziehl. Wenn ich das Programm neu starte ist jedoch
die Zeile gelöscht. Wie schaffe ich es, dass nach dem Löschen der Inhalt der Tabelle im Stringgrid bleibt.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Button1Click(Sender: TObject); begin query1.close; query1.sql.clear; Query1.Sql.ADD('delete from "EssensTabelle.db" where Bezeichnung="'+edit1.text+'"'); query1.ExecSQL; end; |
PLZ HELP
Moderiert von Christian S.: Delphi-Tags hinzugefügt.
|
|
inselberg
      
Beiträge: 458
|
Verfasst: Di 18.01.05 00:19
stringgrid .. sicher dass du kein dbgrid hast .. denn da wäre es klar dass nach nem close alles weg ist, da die verbindung nicht mehr besteht ...
also ist da das "ziehl" weg 
_________________ hans bist du das ?
|
|
Creed 
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 18.01.05 00:24
Klar mein ich doch. Man ich bin schon etwas konfus ;/
hab das query1.close mal weggemacht aber es hat sich nix geändert. Der DBGrid is nach dem löschen immer noch leer
Wenn ich nach dem Löschen ein query1.open; setze kommt die Fehlermeldung: Fehler beim Erstellen des Cursorh-Handle
Man ich sitzt da schon 4 Stunden drann und find hier im Forum nix. bzw hab schon so viel ausprobiert aber bekomme immer Fehler oder keinen Effekt
|
|
tmc2004
      
Beiträge: 140
zuviele
D7,D8
|
Verfasst: Di 18.01.05 00:56
Auf was für eine Query verweißt den dein Grid?
Falls es auf deine Query1 verwaist kann es nicht gehen da du mit sql.clear den enthaltenen sql löscht. Kannst das Problem umgehen indem du ein Command oder eine ander query nimmst als die die du wie ich vermute mit dem Grid verbunden hast
Gruß
tmc
_________________ it's not a bug it's a feature
|
|
tmc2004
      
Beiträge: 140
zuviele
D7,D8
|
Verfasst: Di 18.01.05 00:58
Falls das dein Problem nicht löst schreib mal genauer deine Daten auf grid verbunden mit ... usw.
tmc
_________________ it's not a bug it's a feature
|
|
inselberg
      
Beiträge: 458
|
Verfasst: Di 18.01.05 05:21
siehe oben ...
aber vl ein bsp wie dus verstehst
Delphi-Quelltext 1: 2:
| form1.caption := 'Ich bin ein Programm'; form1.caption := ''; |
wieso steht nachdem ich "die" caption gelöscht da nichts mehr drin?
mach dir einfach en 2. query (ohne dbgrid - würd ja nicht viel sinn machen) für update, delete, insert was auch immer ... halt alles was nicht select ist ...
denn eigentlich haette es ja schon bei open und execsql daemmern koenne "mhmm wieso heisst open eigentlich open"
ich weiss auch was jetzt passiert *hellseh* 2.query mit der selben datasource  ... und dann stellt er fest dass es nicht klappt *5h19 zynismus*
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt.
_________________ hans bist du das ?
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 18.01.05 08:13
Ich vermute, dass Query1 mit dem DBGrid verbunden ist.
Da ein ExecSQL durchgeführt wird, ist Query1 danach geschlossen. Da sich auch das SQL-Statement geändert hat, muss das neu eingetragen werden und Query1 erneut mit Open geöffnet werden. Das ist eigentlich schon alles.
|
|
Creed 
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 18.01.05 23:33
Also ich habe jetzt ein zweites Query gemacht, welches BefehlsQuery heisst und es mit der Datasource verknüpft.
So dann query1 durch BefehlsQuery ersetzt (in meinem Quellcode) und es hat sich nix geändert.
|
|
tmc2004
      
Beiträge: 140
zuviele
D7,D8
|
Verfasst: Mi 19.01.05 02:53
Geh doch mal mit einzelstart durch und schau ob irgendwo query1 den wert verlieren könnte. Poste doch mal deinen ganzen quellcode von der Form dann kann ich dir mehr sagen was da los ist.
Gruß
tmc
_________________ it's not a bug it's a feature
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 19.01.05 08:17
| Creed hat folgendes geschrieben: | Also ich habe jetzt ein zweites Query gemacht, welches BefehlsQuery heisst und es mit der Datasource verknüpft.
So dann query1 durch BefehlsQuery ersetzt (in meinem Quellcode) und es hat sich nix geändert. |
Der Weg ist richtig.
Lass aber dei Verbindung zur DataSource weg. So, wie du es jetzt machst, hat Query1 keine Verbindung zur DataSource mehr. Dadurch können die Daten im Grid nicht mehr angezeigt werden. Die DataSource ist das Bindeglied zwischen dem DataSet (Z.B. TQuery) und den Anzeige Komponenenten (TDBGrid, TDBEdit, ...).
Da die Verbindung nicht mehr auf dem Query1 hast, sondern auf deinem BefehlsQuery, können die Daten nach dem ExecSQL nicht mehr angezeigt werden.
Noch ein Tipp:
Nachdem du dein ExecSQL ausgeführt hast, musst du bei deinem Query1 noch ein Refresh machen. Sonst wird die Daten-Anzeige nicht aktualisiert.
|
|
Creed 
Hält's aus hier
Beiträge: 4
|
Verfasst: Mi 19.01.05 19:40
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 19.01.05 21:26
Hallo, Creed!
Bitte nutze für Deine Quelltext die Delphi-Tags. Dadurch wird der Code korrekt formatiert und mit Syntax-Highlighting dargestellt.
Danke
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|