Autor Beitrag
Creed
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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.

ausblenden 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 user profile iconChristian S.: Delphi-Tags hinzugefügt.
inselberg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

zuviele
D7,D8
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

zuviele
D7,D8
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: Di 18.01.05 05:21 
siehe oben ...
aber vl ein bsp wie dus verstehst

ausblenden 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 user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.

_________________
hans bist du das ?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

zuviele
D7,D8
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 19.01.05 19:40 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button2Click(Sender: TObject);
begin
 if Edit1.text = '' Then Panel1.visible := True
 else
  begin
   query1.SQL.Clear;
   query1.Sql.text:= 'delete from "EssensTabelle.db" where Bezeichnung="'+edit1.text+'" OR Preis="'+Edit2.Text+'"';
   query1.execsql;
   query1.sql.clear;
   query1.SQL.Add('SELECT * FROM EssensTabelle.db');
   query1.Active := True;
   Panel1.Visible := False;
  end;
end;


so gehts jetzt

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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".