Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Sql insert into (https://www.delphipraxis.net/203708-sql-insert-into.html)

Never01 15. Mär 2020 13:18

Datenbank: Access • Version: 365 • Zugriff über: Access

Sql insert into
 
Hallo liebe Gemeinde.
Ich habe ein grundlegendes Problem:
Ich versuche mit Hilfe von INSERT INTO Datensätze aus Feldern in die Datenbank einzutragen.
Allerdings bekomme ich immer wieder die selbe Fehlermeldung. Die Namen stimmen überein.
Ich würde mich freuen, wenn mir jemand helfen könnte.

Vielen Dank im Voraus
Delphi-Quellcode:
 if (ednn.Text='') or (edvn.Text='') or (comge.Text='') or (ednn.Text='') or (edstr.Text='') or (edhnr.Text='') or (edort.Text='') or (edplz.Text='') or (edtele.Text='') or (edmitglied.Text='')
    then begin
    showmessage ('Daten eingeben') ;
    end else
      begin
        datamodule3.ADOQuery3.SQL.Text:='INSERT INTO Spieler(SpNName, SpVName, Geschlecht, Geburtsdatum, Straße, Hausnummer, Ort, PLZ, Telefon, Mitglied) VALUES (:NN, :VN, :GE, :GD, :ST, :HN, :OR, :PL, :TE, :MI);';
        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:= dategeb.Date;
        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;

DeddyH 15. Mär 2020 14:00

AW: Sql insert into
 
Und welche Fehlermeldung ist das?

ptietke 15. Mär 2020 14:57

AW: Sql insert into
 
Der Parameter OR könnte ein Problem sein? (SQL Schlüsselwort)

datamodule3.ADOQuery3.Parameters.ParamByName('OR') .Value:= edort.Text;

stifflersmom 15. Mär 2020 15:13

AW: Sql insert into
 
So ohne Fehlermeldung würde ich mal schätzen, dass das Quoten der Strings fehlt.

DeddyH 15. Mär 2020 15:14

AW: Sql insert into
 
Da SQL-Parameter verwendet werden, sollten Strings automatisch gequotet werden.

Redeemer 15. Mär 2020 15:36

AW: Sql insert into
 
Ich würde auf Sonderzeichen in Bezeichnern verzichten oder sie escapen.

DeddyH 15. Mär 2020 15:40

AW: Sql insert into
 
Stimmt, Straße könnte das Problem sein.

p80286 15. Mär 2020 20:43

AW: Sql insert into
 
Unter Umständen muß es 'Insert into Spieler([SpNName], [SpVName].....'
oder sogar 'Insert into Spieler([Spieler].[SpNName], [Spieler].[SpVName].....' heißen.
Acces ist manchmal etwas seltsam.

Gruß
K-H

jobo 15. Mär 2020 21:27

AW: Sql insert into
 
Zitat:

Zitat von p80286 (Beitrag 1459817)
..oder sogar 'Insert into Spieler([Spieler].[SpNName], [Spieler].[SpVName].....' heißen.
Acces ist manchmal etwas seltsam.

Ich muss Dich korrigieren, Access ist da immer gleich seltsam. ;-)
Also insofern lobenswert, dass es eine große Konstanz bei seinen Eigenarten zeigt. Für MS Verhältnisse bemerkenswert konstant.

Redeemer 15. Mär 2020 21:34

AW: Sql insert into
 
Zitat:

Zitat von jobo (Beitrag 1459819)
Zitat:

Zitat von p80286 (Beitrag 1459817)
..oder sogar 'Insert into Spieler([Spieler].[SpNName], [Spieler].[SpVName].....' heißen.
Acces ist manchmal etwas seltsam.

Ich muss Dich korrigieren, Access ist da immer gleich seltsam. ;-)

Dem würde ich gerne widersprechen.

Never01 15. Mär 2020 21:36

AW: Sql insert into
 
Zitat:

Zitat von DeddyH (Beitrag 1459790)
Und welche Fehlermeldung ist das?

Vielen Dank für die vielen Antworten.

Die Fehlermeldung:
Im Projekt ist eine Exception der Klasse EOleException aufgetreten. Meldung: Die INSERT INTO- Anweisung enthält folgenden unbekannten Feldnamen: Geburtsdatum. Stellen sie sicher, dass sie den Namen richtig eingegeben haben...

jobo 15. Mär 2020 22:17

AW: Sql insert into
 
Zitat:

Zitat von Redeemer (Beitrag 1459822)
Zitat:

Zitat von jobo (Beitrag 1459819)
Ich muss Dich korrigieren, Access ist da immer gleich seltsam. ;-)

Dem würde ich gerne widersprechen.

Bei Stackoverflow ...

hoika 16. Mär 2020 05:19

AW: Sql insert into
 
Hallo,
gibt es das Feld Geburtsdatum überhaupt?

Sinspin 16. Mär 2020 09:35

AW: Sql insert into
 
Hallo
[OT]
Das ist ja mal der Hammer! Nur weil sich der Threadstarter zu Schade ist zu seinem Quelltext auch noch die Fehlermeldung mit zu Posten wurden ihm erstmal alle anderen Fehler aufgezeigt. Und nun stellt sich heraus das es nur fehlendes / falsch geschriebenes Feld ist. :lol:
[/OT]

Never01 16. Mär 2020 13:35

AW: Sql insert into
 
Zitat:

Zitat von Sinspin (Beitrag 1459851)
Hallo
[OT]
Das ist ja mal der Hammer! Nur weil sich der Threadstarter zu Schade ist zu seinem Quelltext auch noch die Fehlermeldung mit zu Posten wurden ihm erstmal alle anderen Fehler aufgezeigt. Und nun stellt sich heraus das es nur fehlendes / falsch geschriebenes Feld ist. :lol:
[/OT]

Nein, das Feld ist ja nicht falsch geschrieben. Das habe ich schon überprüft. Habe danach sofort alle verglichen, aber es funktioniert nicht.

DeddyH 16. Mär 2020 13:41

AW: Sql insert into
 
Fakt ist aber, dass Access das Feld nicht findet.

hoika 16. Mär 2020 14:01

AW: Sql insert into
 
Hallo,
lass das Geburtsdatum einfach mal im SQL-Statement weg.

hoika 16. Mär 2020 14:44

AW: Sql insert into
 
Hallo,
etwas ist mir aufgefallen

if (ednn.Text='') or (edvn.Text='') or (comge.Text='') or (ednn.Text='')

ednn = Nachname wird doppelt abgefragt
der DateTimePicker das Geburtsdatum aber gar nicht.

Das sollte aber nicht das Problem für den Fehler sein.

PS:
dategeb muss ersetzt werden durch DTPGebDatum, sonst klappt das nicht wegen schlechter Lesbarkeit ...

Medium 16. Mär 2020 15:48

AW: Sql insert into
 
Zitat:

Zitat von Never01 (Beitrag 1459863)
Nein, das Feld ist ja nicht falsch geschrieben. Das habe ich schon überprüft. Habe danach sofort alle verglichen, aber es funktioniert nicht.

Access kann doch bestimmt auch das CREATE-Statement zu einer Tabelle erzeugen. Zeig uns das doch bitte mal.

p80286 16. Mär 2020 22:08

AW: Sql insert into
 
Zitat:

Zitat von Never01 (Beitrag 1459863)

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

Never01 17. Mär 2020 09:29

AW: Sql insert into
 
Zitat:

Zitat von p80286 (Beitrag 1459892)
Zitat:

Zitat von Never01 (Beitrag 1459863)

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.

haentschman 17. Mär 2020 09:34

AW: Sql insert into
 
Moin...8-)
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]

Never01 17. Mär 2020 09:48

AW: Sql insert into
 
Zitat:

Zitat von haentschman (Beitrag 1459915)
Moin...8-)
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;

Union 17. Mär 2020 22:24

AW: Sql insert into
 
Zitat:

Zitat von Never01 (Beitrag 1459917)
...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:

Delphi-Quellcode:
datamodule3.ADOQuery3.Parameters.ParamByName('GD').AsDateTime := StrToDate(Trim(edit1.Text));

Medium 17. Mär 2020 23:40

AW: Sql insert into
 
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.

hoika 18. Mär 2020 04:35

AW: Sql insert into
 
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.

Never01 27. Mär 2020 15:01

AW: Sql insert into
 
Liste der Anhänge anzeigen (Anzahl: 1)
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
Anhang 52276

Delphi.Narium 27. Mär 2020 15:12

AW: Sql insert into
 
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:

SQL-Code:
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.

Never01 27. Mär 2020 15:56

AW: Sql insert into
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Delphi.Narium (Beitrag 1460647)
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:

SQL-Code:
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. :oops:
Ich habe auch noch ein Bild von der Datenbank angehängt.
Schon mal vielen Dank

Anhang 52277

jobo 27. Mär 2020 16:20

AW: Sql insert into
 
Das Bild ist nett, aber was ist das Problem?

Never01 27. Mär 2020 17:04

AW: Sql insert into
 
Zitat:

Zitat von jobo (Beitrag 1460650)
Das Bild ist nett, aber was ist das Problem?

Das ich nicht weiß, wie ich die Updatezeile richtig schreiben muss

Delphi.Narium 27. Mär 2020 17:44

AW: Sql insert into
 
Zitat:

Zitat von Never01 (Beitrag 1460654)
Zitat:

Zitat von jobo (Beitrag 1460650)
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.

Never01 27. Mär 2020 21:29

AW: Sql insert into
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1460657)
Zitat:

Zitat von Never01 (Beitrag 1460654)
Zitat:

Zitat von jobo (Beitrag 1460650)
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.

Vielen Dank für deine Hilfe. Das hat mir wirklich sehr weitergeholfen :-D

p80286 27. Mär 2020 21:49

AW: Sql insert into
 
Xxxxxx

p80286 27. Mär 2020 22:03

AW: Sql insert into
 
Zitat:

Zitat von hoika (Beitrag 1460022)
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:mrgreen: aber man muß es denen janicht zu leicht machen.

Never01 28. Mär 2020 12:06

AW: Sql insert into
 
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.

Delphi.Narium 28. Mär 2020 13:03

AW: Sql insert into
 
Sehr grob sowas:
Delphi-Quellcode:
  datamodule3.ADOQuery3.Close;
  datamodule3.ADOQuery3.SQL.Text:='select * from Spiel where Spieler1vn = :sp1vn and Spieler1nn = :sp1nn');
  datamodule3.ADOQuery3.Parameters.ParamByName('sp1vn').Value := edsp1vn.Text;
  datamodule3.ADOQuery3.Parameters.ParamByName('sp1nn').Value := edsp1nn.Text;
  datamodule3.ADOQuery3.Open;
Damit bekommst Du z. B. alle Daten zum Spieler 1.

Prinzipiell funktioniert eine Auswertung über ein Select. In der Where-Bedingung stehen dann die Auswahlkriterien.

Um an den Aufgabenstellungen im Bezug auf den Umgang mit Datenbanken nicht zu verzweifeln, solltest Du Dir eventuell mal ein Tutorial zu SQL anschauen, lesen, verstehen, z. B. sowas: https://www.datenbanken-verstehen.de/sql-tutorial/
Derweil: Datenbankprogrammierung ohne SQL-Kenntnisse ist annähernd sinnfrei bzw. extrem anstrengend und fehleranfällig.

Never01 28. Mär 2020 13:09

AW: Sql insert into
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1460702)
Sehr grob sowas:
Delphi-Quellcode:
  datamodule3.ADOQuery3.Close;
  datamodule3.ADOQuery3.SQL.Text:='select * from Spiel where Spieler1vn = :sp1vn and Spieler1nn = :sp1nn');
  datamodule3.ADOQuery3.Parameters.ParamByName('sp1vn').Value := edsp1vn.Text;
  datamodule3.ADOQuery3.Parameters.ParamByName('sp1nn').Value := edsp1nn.Text;
  datamodule3.ADOQuery3.Open;
Damit bekommst Du z. B. alle Daten zum Spieler 1.

Prinzipiell funktioniert eine Auswertung über ein Select. In der Where-Bedingung stehen dann die Auswahlkriterien.

Um an den Aufgabenstellungen im Bezug auf den Umgang mit Datenbanken nicht zu verzweifeln, solltest Du Dir eventuell mal ein Tutorial zu SQL anschauen, lesen, verstehen, z. B. sowas: https://www.datenbanken-verstehen.de/sql-tutorial/
Derweil: Datenbankprogrammierung ohne SQL-Kenntnisse ist annähernd sinnfrei bzw. extrem anstrengend und fehleranfällig.

Dankeschön. Ich glaube, ich habe mich falsch ausgedrückt. Solche Auswertungen habe ich schon. Aber vielen Dank.
Ich möchte gern irgendwie die Spiele auswerten. Am besten mit Diagrammen. Aber ich weiß leider nicht, wie ich das am Besten umsetzen soll.

Delphi.Narium 28. Mär 2020 13:27

AW: Sql insert into
 
Das Prinzip ist immer gleich:

SQL-Code:
select wasduhabenmöchtest from Tabelle where wasduhabenmöchtest = :wasduhabenmöchtest


Mein Delphi kennt für Datenbankdiagramme die Komponente TDBChart. Keine Ahnung, was da aktuelle Delphis alles zu bieten.

Wenn Du also schon Auswertungen hast und die (vermutlich) in 'nem DBGrid anzeigst, muss Du halt schauen, ob Deine Delphi eine Komponente für die Anzeige von Daten in Chartform hat. Diese Komponente analog zum DBGrid an die Datenbankkomponente anbinden und schon sollte es bunt werden.

Und nein, das macht man nicht in fünf Minuten, ist schon etwas mehr Aufwand, aber er dürfte trotztem in einem erträglichen Rahmen bleiben.

Never01 28. Mär 2020 13:40

AW: Sql insert into
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1460704)
Das Prinzip ist immer gleich:

SQL-Code:
select wasduhabenmöchtest from Tabelle where wasduhabenmöchtest = :wasduhabenmöchtest


Mein Delphi kennt für Datenbankdiagramme die Komponente TDBChart. Keine Ahnung, was da aktuelle Delphis alles zu bieten.

Wenn Du also schon Auswertungen hast und die (vermutlich) in 'nem DBGrid anzeigst, muss Du halt schauen, ob Deine Delphi eine Komponente für die Anzeige von Daten in Chartform hat. Diese Komponente analog zum DBGrid an die Datenbankkomponente anbinden und schon sollte es bunt werden.

Und nein, das macht man nicht in fünf Minuten, ist schon etwas mehr Aufwand, aber er dürfte trotztem in einem erträglichen Rahmen bleiben.

Ok. Danke dafür. Ich habe davon noch nie twas gehört, wir haben das bisher immer nur über label oder Progressbar ausgewertet. Ich muss das für die Schule machen und keiner hilft uns wir sollen das aber machen und ich bin ziemlich aufgeschmissen.
Es wäre nett, wenn du noch etwas mehr erklären könntest.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 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