AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Sql insert into

Ein Thema von Never01 · begonnen am 15. Mär 2020 · letzter Beitrag vom 29. Mär 2020
Antwort Antwort
Seite 1 von 2  1 2   
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Sql insert into

  Alt 18. Mär 2020, 04:35
Hallo,
ist Geburtsdatum wirklich so falsch angelegt worden?
Mit 2 s?

Value sollte man eh nicht benutzen,
siehe etwa hier
https://stackoverflow.com/questions/...e-in-ms-access

AsDateTime wurde ja bereits vorgeschlagen.
Heiko

Geändert von hoika (18. Mär 2020 um 04:39 Uhr)
  Mit Zitat antworten Zitat
Never01

Registriert seit: 1. Mär 2020
15 Beiträge
 
#2

AW: Sql insert into

  Alt 27. Mär 2020, 15:01
Vielen Dank, für die vielen Antworten. Ich konnte das Problem klären. Es war ein ein Speicherfehler. Ich habe zunächst in der Backupdatei gearbeitet und aber die Datenbank im normalen Ordner bearbeitet.
Ich weiß, ich hätte euch einige Nerven ersparen können. Es tut mir leid...

Nun habe ich aber ein richtiges Problem:

Ich trage zuerst Spielernamen in die Datenbank und nachdem dies geschehen ist, möchte ich den dazu passenden Punktestand eintragen. Allerdings wird dies nicht alles in einer Zeile gespeichert, sondern in 2. Weiß jemand, wie ich beim Punkte eintragen die Daten mit in die vorher gesetzte Zeile schreiben kann.

Vielen Dank im Voraus

Delphi-Quellcode:
procedure TForm4.Button1Click(Sender: TObject);
var frage: Cardinal;
begin
// Frage, ob das neue Mitglied wirklich gespeichert werden soll
 if (edsp1nn.Text='') or (edsp1vn.Text='') or (edsp2vn.Text='') or (edsp2nn.Text='')
    then begin
    showmessage ('Daten eingeben') ;
     end else

frage := MessageDlg('Möchten Sie das Spiel erzeugen?',mtConfirmation,[mbYes,mbNo,mbcancel],0);
if frage = IDYES {IDNO} then
  begin
  showmessage('Spiel erfolgreich erstellt')
   end;

      begin
        datamodule3.ADOQuery3.SQL.Text:='INSERT INTO Spiel(Spieler1nn,Spieler1vn,Spieler2nn,Spieler2vn) VALUES (:sp1nn, :sp1vn, :sp2nn, :sp2vn);';
        datamodule3.ADOQuery3.Parameters.ParamByName('sp1nn').Value:= edsp1nn.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('sp1vn').Value:= edsp1vn.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('sp2nn').Value:= edsp2nn.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('sp2vn').Value:= edsp2vn.Text;
        datamodule3.ADOQuery3.ExecSQL;


      end;
                               // damit Punkte einragen erst beim Betätigen erscheint
      edrunde1.Visible:=true;
      edrunde2.Visible:=true;
      edrunde3.Visible:=true;
      edsnn.Visible:=true;
      label3.Visible:=true;
      label4.Visible:=true;
      label5.Visible:=true;
      label6.Visible:=true;
      btrein.Visible:=true;


end;

procedure TForm4.edrunde1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  edrunde1.Hint:='Bitte den Spielstand getrennt mit : (Doppelpunkt) eingeben!';
  edrunde1.ShowHint:=true;
  edrunde2.Hint:='Bitte den Spielstand getrennt mit : (Doppelpunkt) eingeben!';
  edrunde2.ShowHint:=true;
  edrunde3.Hint:='Bitte den Spielstand getrennt mit : (Doppelpunkt) eingeben!';
  edrunde3.ShowHint:=true;



end;

procedure TForm4.btreinClick(Sender: TObject);
var frage: Cardinal;
begin



if (edrunde1.Text='') or (edrunde2.Text='') or (edrunde3.Text='') or (edsnn.Text='')
    then begin
    showmessage ('Daten eingeben') ;
     end else

frage := MessageDlg('Möchten Sie die Spielergebnis eintragen?',mtConfirmation,[mbYes,mbNo,mbcancel],0);
if frage = IDYES {IDNO} then
  begin
  showmessage('Ergebnis erfolgreich eingetragen')
   end;

      begin
        datamodule3.ADOQuery3.SQL.Text:='INSERT INTO Spiel(Punktestand1,Punktestand2,Punktestand3,Sieger_NN) VALUES (:r1, :r2, :r3, :snn); ';
        datamodule3.ADOQuery3.Parameters.ParamByName('r1').Value:= edrunde1.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('r2').Value:= edrunde2.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('r3').Value:= edrunde3.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('snn').Value:= edsnn.Text;
        datamodule3.ADOQuery3.ExecSQL;



end;
 end;
Hier noch das Bild aus der Datenbank
Anmerkung 2020-03-27 155847.jpg
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Sql insert into

  Alt 27. Mär 2020, 15:12
Insert macht immer 'nen neuen Datensatz.

Willst Du einen Datensatz ändern, musst Du ein Update machen.

Beim Speichern der Punkte musst Du also wissen, welchen Datensatz du ändern möchtest und diesen in der Where-Bedingung des Updates benennen.

Da ich dein Datenmodell nicht wirklich kenne mal geraten in etwa sowas:

update spiel set r1 = :r1, r2 = :r2, r3 = :r3, snn = :snn where sp1nn = :sp1nn and sp1vn = :sp1vn and sp2nn = :sp2nn and sp2vn = :sp2vn

Das Befüllen der Paramter erfolgt ananlog zu Deinem bisherigen Code.
  Mit Zitat antworten Zitat
Never01

Registriert seit: 1. Mär 2020
15 Beiträge
 
#4

AW: Sql insert into

  Alt 27. Mär 2020, 15:56
Insert macht immer 'nen neuen Datensatz.

Willst Du einen Datensatz ändern, musst Du ein Update machen.

Beim Speichern der Punkte musst Du also wissen, welchen Datensatz du ändern möchtest und diesen in der Where-Bedingung des Updates benennen.

Da ich dein Datenmodell nicht wirklich kenne mal geraten in etwa sowas:

update spiel set r1 = :r1, r2 = :r2, r3 = :r3, snn = :snn where sp1nn = :sp1nn and sp1vn = :sp1vn and sp2nn = :sp2nn and sp2vn = :sp2vn

Das Befüllen der Paramter erfolgt ananlog zu Deinem bisherigen Code.
Vielen Dank, für deine bisherige Hilfe. Es wäre nett, wenn du mir nochmal helfen könntest.
Ich habe auch noch ein Bild von der Datenbank angehängt.
Schon mal vielen Dank

Anmerkung 2020-03-27 1558471.png
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Sql insert into

  Alt 27. Mär 2020, 16:20
Das Bild ist nett, aber was ist das Problem?
Gruß, Jo
  Mit Zitat antworten Zitat
Never01

Registriert seit: 1. Mär 2020
15 Beiträge
 
#6

AW: Sql insert into

  Alt 27. Mär 2020, 17:04
Das Bild ist nett, aber was ist das Problem?
Das ich nicht weiß, wie ich die Updatezeile richtig schreiben muss
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Sql insert into

  Alt 27. Mär 2020, 17:44
Das Bild ist nett, aber was ist das Problem?
Das ich nicht weiß, wie ich die Updatezeile richtig schreiben muss
SQL-Code:
update Spiel
set Punktestand1 = :r1,
    Punktestand2 = :r2,
    Punktestand3 = :r3,
    Sieger_NN = :snn
where Spieler1nn = :sp1nn
and Spieler1vn = :sp1vn
and Spieler2nn = :sp2nn
and Spieler2vn = :sp2vn
Statt des Insertsstatements weist Du dem SQL-Text halt das Updatestatement zu.
Das Zuweisen der Parameter hast Du ja beim Insert schon gemacht, das geht beim Update genauso, da kannst Du den vorhandenen Quelltext beibehalten, musst halt dafür sorgen, dass alle Parameter mit den zutreffenden Werten versorgt werden.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Sql insert into

  Alt 27. Mär 2020, 21:49
Xxxxxx
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (27. Mär 2020 um 22:04 Uhr) Grund: gelöscht Dicke Finger!!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Sql insert into

  Alt 27. Mär 2020, 22:03
Value sollte man eh nicht benutzen,
Lässt sich teilweise nicht vermeiden je nach Komponente/Treiber-Kombination. Sollte es doch gehen, dann natürlich mit asXXXXX !

Gruß
K-H

P.S.
Wenn
SQL-Code:
where Spieler1nn = :sp1nn
and Spieler1vn = :sp1vn
and Spieler2nn = :sp2nn
and Spieler2vn = :sp2vn
mehr als einen Datensatz ergibt, dann wird die Information halt doppelt abgelegt ? oder dreifach oder ....?
OK bei so einer kleinen Anwendung ist das nicht weiter wichtig, aber wenn's dann mal wichtig sein könnte, dann hat das bisher immer so geklappt und wenns zusammenklappt dann war's Coronna oder der dumme Benutzer?
Die Ansprache der Datensätze immer über die ID! das mag umständlich sein, hilft aber Fehler zu vermeiden, da diese ja wohl nicht doppelt sein sollte. Gut es gibt Spezialisten die bekommen auch das hin aber man muß es denen janicht zu leicht machen.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Never01

Registriert seit: 1. Mär 2020
15 Beiträge
 
#10

AW: Sql insert into

  Alt 28. Mär 2020, 12:06
Hi, ich bins nochmal.

Ich muss nun auch noch verschiedene Auswertungsmöglichkeiten bieten.
Hat da von euch jemand eine Idee, wie ich das am Besten umsetzten kann? Ich habe nämlich keine Idee, wie ich das machen soll.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:26 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