AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank-Programmierung mit UPDATE (SQL)
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank-Programmierung mit UPDATE (SQL)

Offene Frage von "haentschman"
Ein Thema von Reedx · begonnen am 19. Feb 2020 · letzter Beitrag vom 26. Feb 2020
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#1

AW: Datenbank-Programmierung mit UPDATE (SQL)

  Alt 19. Feb 2020, 13:58
Moin...
Zitat:
Kann ja die ID im Quelltext nicht vorher festschreiben
...sollst du auch nicht. Du brauchst aber die DatensatzID des zu bearbeiten Datensatzes. Die mußt du irgendwo gespeichert haben. Wo holst du die Einträge in das Grid?

Delphi-Quellcode:
Datamodule1.ADOQuery4.SQL.Text := 'UPDATE Fragen SET Fach = :FA, Schwierigkeit = :SW, Frage = :FR, L1 = :L1, L2 = :L2, L3 = :L3, Lösung = :LO WHERE ID = :ID'; // besser keine Umlaute in den Feldern verwenden
Datamodule1.ADOQuery4.Parameters.ParamByName('FA').AsString := Editfr.Text; // ist das richtig? ...doppelt?
Datamodule1.ADOQuery4.Parameters.ParamByName('SW').AsString := Editschw.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('FR').AsString := Editfr.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('L1').AsString := EditL1.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('L1').AsString := EditL2.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('L3').AsString := EditL3.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('LO').AsString := EditLr.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('ID').AsInteger := StrToInt(Editid.Text); // besser aus der geladenen Datenmenge holen
Datamodule1.ADOQuery4.ExecSQL;

Geändert von haentschman (19. Feb 2020 um 14:02 Uhr)
  Mit Zitat antworten Zitat
Reedx

Registriert seit: 19. Feb 2020
26 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Datenbank-Programmierung mit UPDATE (SQL)

  Alt 19. Feb 2020, 14:05
Moin...
Die mußt du irgendwo gespeichert haben. Wo holst du die Einträge in das Grid?
hier mit dieser procedure. so in der schule gelernt. ist für mich auch verständlich, aber evtl umständlich. aber das ist mir egal, solange ich verstehe, was ich geschrieben habe

Delphi-Quellcode:
procedure TFormbearb.ButtonausClick(Sender: TObject);
var query:ANSIstring;
begin
 datamodule1.ADOQuery3.SQL.Clear;

 if lb.ItemIndex >=0 then
 begin
 query:= 'SELECT Fr.ID, Fr.Fach, Fr.Schwierigkeit, Fr.Frage, Fr.L1, Fr.L2, Fr.L3, Fr.Lösung FROM Faecher Fa, Fragen Fr '+
         'WHERE Fa.Fach = Fr.Fach and '+
         'Fr.Fach = ' +#39+lb.Items.Strings[lb.ItemIndex]+#39 +
         'ORDER BY Fr.ID ';
          Datamodule1.ADOQuery3.SQL.Add(query);
       Datamodule1.ADOQuery3.Open;
        TStringGrid(DB2).ColWidths[1]:=30;
        TStringGrid(DB2).ColWidths[2]:=60;
        TStringGrid(DB2).ColWidths[3]:=30;
        TStringGrid(DB2).ColWidths[4]:=220;
        TStringGrid(DB2).ColWidths[5]:=150;
        TStringGrid(DB2).ColWidths[6]:=150;
        TStringGrid(DB2).ColWidths[7]:=150;
        TStringGrid(DB2).ColWidths[8]:=20;
    end else
    begin
    application.MessageBox('Auswahlfehler!','Fehler');
    end;
end;
  Mit Zitat antworten Zitat
Reedx

Registriert seit: 19. Feb 2020
26 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Datenbank-Programmierung mit UPDATE (SQL)

  Alt 19. Feb 2020, 14:13

Delphi-Quellcode:
Datamodule1.ADOQuery4.SQL.Text := 'UPDATE Fragen SET Fach = :FA, Schwierigkeit = :SW, Frage = :FR, L1 = :L1, L2 = :L2, L3 = :L3, Lösung = :LO WHERE ID = :ID'; // besser keine Umlaute in den Feldern verwenden
Datamodule1.ADOQuery4.Parameters.ParamByName('FA').AsString := Editfr.Text; // ist das richtig? ...doppelt?
Datamodule1.ADOQuery4.Parameters.ParamByName('SW').AsString := Editschw.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('FR').AsString := Editfr.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('L1').AsString := EditL1.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('L1').AsString := EditL2.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('L3').AsString := EditL3.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('LO').AsString := EditLr.Text;
Datamodule1.ADOQuery4.Parameters.ParamByName('ID').AsInteger := StrToInt(Editid.Text); // besser aus der geladenen Datenmenge holen
Datamodule1.ADOQuery4.ExecSQL;


wenn ich das so mache, dann kommt "undefinierter bezeichner Asstring und Asinteger"...
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datenbank-Programmierung mit UPDATE (SQL)

  Alt 19. Feb 2020, 14:24
Ado kennt auch Parameter mit "Asxxxx". Ich weiß schon warum ich ADO nicht mag.
Im Zweifelsfalle "Value". Da muß die Query aber die Parameter "casten". Asxxxc hast du gleich den Wert. Das ist besser.

Zitat:
so in der schule gelernt.
...von einem Lehrer?

Nachtrag:
Recherche:
Zitat:
unter D7 geht kein weg an .Value vorbei

Geändert von haentschman (19. Feb 2020 um 14:37 Uhr)
  Mit Zitat antworten Zitat
Reedx

Registriert seit: 19. Feb 2020
26 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Datenbank-Programmierung mit UPDATE (SQL)

  Alt 19. Feb 2020, 17:43
...von einem Lehrer?
unter D7 geht kein weg an .Value vorbei
Ja mit unseren Lehrern haben wir das so programmiert. Wir programmieren aber auch oft ziemlich schwammig, weswegen ich sehr viel recherchieren muss, damit das Projekt funktioniert.. Abgabe ist am 17.3. und ich hab jetzt schon Angst, dass ich das nicht schaffe. Aber mal sehen.

Das Problem mit dem speichern hat funktioniert und nun wird ALLES gespeichert, so wie ich mir das vorgestellt habe. DANKE!
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#6

AW: Datenbank-Programmierung mit UPDATE (SQL)

  Alt 20. Feb 2020, 04:53
Moin...
Zitat:
ich hab jetzt schon Angst, dass ich das nicht schaffe
...hier werden sie geholfen.
Zitat:
Das Problem mit dem speichern hat funktioniert und nun wird ALLES gespeichert, so wie ich mir das vorgestellt habe
Für die Anderen...poste bitte die Lösung.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Datenbank-Programmierung mit UPDATE (SQL)

  Alt 20. Feb 2020, 08:58
Das
Datamodule1.ADOQuery3.SQL.Add(query); solltest Du besser durch
 Datamodule1.ADOQuery3.SQL.Text:=query; ersetzen.

Falls bei Deiner Lösung der SQL.ext nicht leer ist, könntest Du böse Überraschungen erleben.
Und vorher ein
Datamodule1.ADOQuery3.Close; ist auch nicht falsch.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#8

AW: Datenbank-Programmierung mit UPDATE (SQL)

  Alt 20. Feb 2020, 16:12
Das
Datamodule1.ADOQuery3.SQL.Add(query); solltest Du besser durch
 Datamodule1.ADOQuery3.SQL.Text:=query; ersetzen.

Falls bei Deiner Lösung der SQL.ext nicht leer ist, könntest Du böse Überraschungen erleben.
Und vorher ein
Datamodule1.ADOQuery3.Close; ist auch nicht falsch.

Gruß
K-H
Am Anfang steht ein datamodule1.ADOQuery3.SQL.Clear; , so dass ein Add unkritisch ist.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Datenbank-Programmierung mit UPDATE (SQL)

  Alt 20. Feb 2020, 18:58
Stimmt, aber warum zwei Anweisungen wenn eine genügt?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Reedx

Registriert seit: 19. Feb 2020
26 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: Datenbank-Programmierung mit UPDATE (SQL)

  Alt 25. Feb 2020, 18:57
Für die Anderen...poste bitte die Lösung.
Kam erst jetzt wieder dazu
Lösung kommt hier:
Delphi-Quellcode:
procedure TFormneuFrag.ButtonhinzuClick(Sender: TObject);
var antw:integer;
begin
if (EditFach.Text='') or (EditSchw.Text='') or (Editfr.Text='') or (Editl1.Text='') or (Editl2.Text='') or (Editl3.Text='') or (Editlr.Text='') then
     begin
     application.MessageBox('Bitte alle Felder ausfüllen','Fehler');
     end else
      begin
        antw:= MessageDlg('Frage wirklich hinzufügen? ',mtConfirmation,[mbyes,mbNo],0);
                                          //Message mit Fragezeichen, Möglk. Ja/Nein
        Datamodule1.ADOQuery5.SQL.Clear;
      if antw = mrYes then //mrYes - Benutzer auf yes
       begin //Frage hinzufügen //hier direkt in SQL text rein -> Übersichtlicher
        Datamodule1.ADOQuery5.SQL.Text := 'INSERT INTO Fragen (Fach, Schwierigkeit, Frage, L1, L2, L3, Lösung) VALUES (FA, SW, FR, L1, L2, L3, LO);';
        Datamodule1.ADOQuery5.Parameters.ParamByName('FA').Value:= Editfach.Text;
        Datamodule1.ADOQuery5.Parameters.ParamByName('SW').Value:= Editschw.Text;
        Datamodule1.ADOQuery5.Parameters.ParamByName('FR').Value := Editfr.Text;
        Datamodule1.ADOQuery5.Parameters.ParamByName('L1').Value := EditL1.Text;
        Datamodule1.ADOQuery5.Parameters.ParamByName('L2').Value := EditL2.Text;
        Datamodule1.ADOQuery5.Parameters.ParamByName('L3').Value := EditL3.Text;
        Datamodule1.ADOQuery5.Parameters.ParamByName('LO').Value := EditLr.Text;
        Datamodule1.ADOQuery5.ExecSQL;
        application.MessageBox('Frage wurde hinzugefügt!','Meldung');
   end else
   begin
     application.MessageBox('Frage wird nicht hinzugefügt!','Meldung');
   end;
   end;
end;
  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 19:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz