Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenbankfehler in Delphi (https://www.delphipraxis.net/207402-datenbankfehler-delphi.html)

S4nikrA 20. Mär 2021 16:22

Datenbank: Access • Version: egal • Zugriff über: Delphi

Datenbankfehler in Delphi
 
Schönen Guten Tag liebe Community!:-D
Ich hätte eine Frage zu einer Datenbankanbindung, warum Delphi da rum meckert, obwohl die Daten dann schon in der Datenbank niedergeschrieben sind.
Es kommt immer wieder zu folgendem Fehler:"Commandtext gibt keine Ereignismenge zurück"

Was bedeudet das? Ist da jemand Fachmann/frau in dem Thema?:thumb:

haentschman 20. Mär 2021 16:28

AW: Datenbankfehler in Delphi
 
Moin...:P
Zitat:

"Commandtext gibt keine Ereignismenge zurück"
...kann es sein daß du ExecSQL statt Open benutzt? :gruebel: Der Quelltext wäre hilfreich. :wink:

S4nikrA 20. Mär 2021 16:30

AW: Datenbankfehler in Delphi
 
Delphi-Quellcode:
procedure TForm1.BteinlesenClick(Sender: TObject);
var vname, nname: string;
begin
  if (Edvname.text <> ('')) and (Edname.Text <> ('')) then
    begin
      showmessage('Funkioniert');
    end
      else
        begin
          showmessage('Werte eingeben!');
        end;

  vname := Edvname.Text;
  nname := Edname.Text;

  abfrage := 'select vorname, nachname From Spieler Where vorname ="'+vname+'" and nachname="'+nname+'"';

  Datenmodul.ADOQuery3.SQL.Clear;
  Datenmodul.ADOQuery3.SQL.Add(abfrage);
  Datenmodul.ADOQuery3.Open;

  if Datenmodul.ADOQuery3.IsEmpty then
    begin
      showmessage('nicht vorhanden!');

      Panel1.Visible := false;
      PAbfrage.Visible := true;

      eintrag := 'insert into spieler(vorname, nachname, Bestwert, Bestwert1, Bestwert2) values ("'+Edvname.text+'","'+Edname.Text+'","0","0","0")';
    end
      else
        begin
          showmessage('vorhanden!');

        end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.Visible := true;
  PAbfrage.Visible := false;
end;

procedure TForm1.PjClick(Sender: TObject);
begin
  Datenmodul.ADOQuery4.SQL.Clear;
  Datenmodul.ADOQuery4.SQL.Add(eintrag);
  Datenmodul.ADOQuery4.Active := true;
  Panel1.Visible := false;
  PAbfrage.Visible := false;
  showmessage('erfolgreich eingetragen!');
end;

procedure TForm1.PnClick(Sender: TObject);
begin
  Panel1.Visible := true;
  PAbfrage.Visible := false;
end;
Die genaue Problemstelle liegt bei ADOQuery4, der Rest läuft und flutscht, wie es sollte.

DieDolly 20. Mär 2021 16:41

AW: Datenbankfehler in Delphi
 
Delphi-Quellcode:
  if (Edvname.text <> ('')) and (Edname.Text <> ('')) then
    begin
      showmessage('Funkioniert');
    end
      else
        begin
          showmessage('Werte eingeben!');
        end;
Wenn ich sowas schon sehe, wird mir irgendwie schlecht.

Drück mal STRG+D im Editor! Und guck dir bitte einen Delphi-Style-Guide an.
Viele Probleme lösen sich von selbst und sind sofort sichtbar, wenn man den Code vernünftig hinschreibt.

Redeemer 20. Mär 2021 16:44

AW: Datenbankfehler in Delphi
 
Zitat:

Zitat von S4nikrA (Beitrag 1485633)
Delphi-Quellcode:
      eintrag := 'insert into spieler(vorname, nachname, Bestwert, Bestwert1, Bestwert2) values ("'+Edvname.text+'","'+Edname.Text+'","0","0","0")';

Escape, fools!

S4nikrA 20. Mär 2021 16:45

AW: Datenbankfehler in Delphi
 
Danke für den Tipp, aber so haben wir es gelernt bekommen und in ein paar Wochen arbeite ich damit nicht mehr.
Es ist nur für das letzte Projekt wichtig.:!:

DieDolly 20. Mär 2021 16:46

AW: Datenbankfehler in Delphi
 
Zitat:

Danke für den Tipp, aber so haben wir es gelernt bekommen und in ein paar Wochen arbeite ich damit nicht mehr.
Lehrer dir das so lehren gehören sofort gekündigt.

S4nikrA 20. Mär 2021 16:48

AW: Datenbankfehler in Delphi
 
Hab es gemacht, nur habe ich immer noch keine Lösung auf das Problem.

Delphi.Narium 20. Mär 2021 16:49

AW: Datenbankfehler in Delphi
 
Die Fehlermeldung besagt, das die Abfrage kein Ergebnis liefert, was bei Insert, Update, Delete ... völlig normal ist.
Man darf active := true bzw. open nur bei Select-Statements nutzen, sonst muss man immer ExecSQL verwenden.
Delphi-Quellcode:
procedure TForm1.PjClick(Sender: TObject);
begin
  Datenmodul.ADOQuery4.SQL.Clear;
  Datenmodul.ADOQuery4.SQL.Add(eintrag);
  Datenmodul.ADOQuery4.ExecSQL; // .Active = true bzw. .Open darf man nur bei Select nutzen, sonst IMMER ExecSQL.
  Panel1.Visible := false;
  PAbfrage.Visible := false;
  if Datenmodul.ADOQuery4.RowsAffected > 0 then begin
    showmessage('erfolgreich eingetragen!');
  end else begin
    showmessage('Sinnvolle Fehlermeldung ausgeben!');
  end;
end;

haentschman 20. Mär 2021 16:51

AW: Datenbankfehler in Delphi
 
Delphi-Quellcode:
Datenmodul.ADOQuery4.Active := true;
->
Delphi-Quellcode:
Datenmodul.ADOQuery4.ExecSQL;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr.
Seite 1 von 2  1 2      

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