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 3 von 5     123 45   
Never01

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

AW: Sql insert into

  Alt 17. Mär 2020, 09:29

Nein, das Feld ist ja nicht falsch geschrieben. Das habe ich schon überprüft. Habe danach sofort alle verglichen, aber es funktioniert nicht.
Nur weil Du zweimal das gleiche siehst, muß es ja nicht dasselbe sein! Seit es diese unsäglichen Proportionalfonts gibt, schleichen sich immer wieder Leerzeichen an Stellen ein, wo sie nichts zu suchen haben.

Gruß
K-H
Ich habe in Access auch noch einmal die Bezeichnung geändert und auch in Delphi verändert, allerdings funktioniert das immer noch nicht. Zudem lese ich jetzt nur noch das Jahr ein und dies funktioniert auch nicht und es erscheint die selbe Fehlermeldung.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Sql insert into

  Alt 17. Mär 2020, 09:34
Moin...
Zitat:
in Access
[OT]
Frage: Warum muß es Access sein? Access hat seine Eigenheiten. Könntest du dir vorstellen auf ein anderes DB System zu wechseln? (Firebird usw.)
[/OT]
  Mit Zitat antworten Zitat
Never01

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

AW: Sql insert into

  Alt 17. Mär 2020, 09:48
Moin...
Zitat:
in Access
[OT]
Frage: Warum muß es Access sein? Access hat seine Eigenheiten. Könntest du dir vorstellen auf ein anderes DB System zu wechseln? (Firebird usw.)
[/OT]
Nein, es wurde uns vorgegeben, dass wir das mit Access machen müssen- leider.

Ich habe jetzt komplett die Spalten Geburtsdatum und Mitglied gelöscht. Nun kommt auch keine Fehlermeldung mehr.
Nachdem dies nun endlich funktioniert hat, versuchte ich, das Geburtsdatum wieder aufzunehmen, allerdings
kommt nun folgende Meldung: "Datentypen in Kriterienausdruck unverträglich".

Delphi-Quellcode:
if (ednn.Text='') or (edvn.Text='') or (comge.Text='') or (edit1.Text='') or(edstr.Text='') or (edhnr.Text='') or (edort.Text='') or (edplz.Text='') or (edtele.Text='')
    then begin
    showmessage ('Daten eingeben') ;
    end else
      begin
        datamodule3.ADOQuery3.SQL.Text:='INSERT INTO Spieler(SpNName,SpVName,Geschlecht,Geburstsdatum,Straße,Hausnummer,Ort,PLZ,Telefon) VALUES (:NN, :VN, :GE, :GD, :ST, :HN, :OR, :PL, :TE);';
        datamodule3.ADOQuery3.Parameters.ParamByName('NN').Value:= ednn.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('VN').Value:= edvn.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('GE').Value:= comge.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('GD').Value:= edit1.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('ST').Value:= edstr.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('HN').Value:= edhnr.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('OR').Value:= edort.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('PL').Value:= edplz.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('TE').Value:= edtele.Text;
        //datamodule3.ADOQuery3.Parameters.ParamByName('MI').Value:= edmitglied.Text;
        datamodule3.ADOQuery3.ExecSQL;

Geändert von Never01 (17. Mär 2020 um 11:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#24

AW: Sql insert into

  Alt 17. Mär 2020, 22:24
...kommt nun folgende Meldung: "Datentypen in Kriterienausdruck unverträglich".

Delphi-Quellcode:
if (ednn.Text='') or (edvn.Text='') or (comge.Text='') or (edit1.Text='') or(edstr.Text='') or (edhnr.Text='') or (edort.Text='') or (edplz.Text='') or (edtele.Text='')
    then begin
    showmessage ('Daten eingeben') ;
    end else
      begin
        datamodule3.ADOQuery3.SQL.Text:='INSERT INTO Spieler(SpNName,SpVName,Geschlecht,Geburstsdatum,Straße,Hausnummer,Ort,PLZ,Telefon) VALUES (:NN, :VN, :GE, :GD, :ST, :HN, :OR, :PL, :TE);';
        datamodule3.ADOQuery3.Parameters.ParamByName('NN').Value:= ednn.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('VN').Value:= edvn.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('GE').Value:= comge.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('GD').Value:= edit1.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('ST').Value:= edstr.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('HN').Value:= edhnr.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('OR').Value:= edort.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('PL').Value:= edplz.Text;
        datamodule3.ADOQuery3.Parameters.ParamByName('TE').Value:= edtele.Text;
        //datamodule3.ADOQuery3.Parameters.ParamByName('MI').Value:= edmitglied.Text;
        datamodule3.ADOQuery3.ExecSQL;
Also erst mal schreibst Du Geburstsdatum. Und versuchst den Parameter als string zu setzen. Vermutliche ist das ein DATE. Also:

datamodule3.ADOQuery3.Parameters.ParamByName('GD').AsDateTime := StrToDate(Trim(edit1.Text));
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#25

AW: Sql insert into

  Alt 17. Mär 2020, 23:40
Ohne die Tabellendefinition, die offenbar ein Staatsgeheimnis ist, bleibt das alles hier ein fruchtloses Rätselraten. Mir wäre meine Zeit dafür zu schade.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
hoika

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

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
 
#27

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.415 Beiträge
 
Delphi 7 Professional
 
#28

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
 
#29

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
 
#30

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
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 00:18 Uhr.
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