Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Sql - Ado - Values (https://www.delphipraxis.net/99167-sql-ado-values.html)

poterp 7. Sep 2007 22:34


Sql - Ado - Values
 
hallo,
wie ist es, wenn man ne neue zeile bei SQL schreibt? ich habe folgendes gemacht:
Delphi-Quellcode:
procedure TForm2.Button3Click(Sender: TObject);
begin
with adoquery1 do
begin
sql.Text:= 'Insert Into Tab_Fb_Ziel(paul, simon, alex, jean, rene, alain, simon, dominique, '
           'Raymond, Sylax, jeanne, Yvonne, Claire, Nina, Pierre, Janson, Louis, Lila,'
           'maurice )Values (:paul, :simon, :alex, :jean, :rene, :alain, :simon, :dominique, '
           ':Raymond, :Sylax, :jeanne, :Yvonne, :Claire, :Nina, :Pierre, :Janson, :Louis, :Lila,'
           ':maurice )';


 Parameters.ParamByName('paul').Value:=Edit1.Text;
 Parameters.ParamByName('Simon').Value:=Edit2.Text;
 Parameters.ParamByName('alex').Value:=Edit3.Text;
 Parameters.ParamByName('jean').Value:=Edit4.Text;
 Parameters.ParamByName('rene').Value:=Edit5.Text;
 Parameters.ParamByName('alain').Value:=Edit6.Text;
.......
end;
end;
Ich habe fehler beim SQL.Text. Ich weisse nicht, ob bei neuer zeilen man die Hochklammer hinfügen soll.
poter

poterp 8. Sep 2007 00:50

Re: Sql - Ado - Values
 
die erste fehlern habe ich endeckt uzw.:
Delphi-Quellcode:
procedure TForm2.Button3Click(Sender: TObject);
begin
with adoquery1 do
begin
sql.Text:= 'Insert Into Tab_Fb_Ziel(paul, simon, alex, jean, rene, alain, simon, dominique, ' +
           'Raymond, Sylax, jeanne, Yvonne, Claire, Nina, Pierre, Janson, Louis, Lila,'      + 
           'maurice )Values (:paul, :simon, :alex, :jean, :rene, :alain, :simon, :dominique, '
           ':Raymond, :Sylax, :jeanne, :Yvonne, :Claire, :Nina, :Pierre, :Janson, :Louis, :Lila,'
           ':maurice )';


Parameters.ParamByName('paul').Value:=Edit1.Text;
Parameters.ParamByName('Simon').Value:=Edit2.Text;
Parameters.ParamByName('alex').Value:=Edit3.Text;
Parameters.ParamByName('jean').Value:=Edit4.Text;
Parameters.ParamByName('rene').Value:=Edit5.Text;
Parameters.ParamByName('alain').Value:=Edit6.Text;
.......
end;
end;
ich habe die '+' hingefügt aber ab Values geht es nicht mehr

marabu 8. Sep 2007 06:44

Re: Sql - Ado - Values
 
Bonjour poter,

um einen String aus einzelnen Literalen zusammen zu setzen musst du auch wirklich alle Literale verketten:

Delphi-Quellcode:
procedure TForm2.Button3Click(Sender: TObject);
const
  STMT
    = 'Insert Into Tab_Fb_Ziel('
    + 'paul, simon, alex, jean, rene, alain, simon, dominique, Raymond, Sylax, '
    + 'jeanne, Yvonne, Claire, Nina, Pierre, Janson, Louis, Lila, maurice '
    + ') Values ('
    + ':paul, :simon, :alex, :jean, :rene, :alain, :simon, :dominique, :Raymond, :Sylax, '
    + ':jeanne, :Yvonne, :Claire, :Nina, :Pierre, :Janson, :Louis, :Lila, :maurice '
    + ')'
    ;
begin
  with adoquery1 do
  begin
    // wenn STMT bis auf Parameter statisch ist,
    // dann genügt einmailiges Zuweisen in FormCreate
    // oder im Object Inspector und dann muss die Query
    // nur geschlossen werden:
    // Close;
    SQL.Text := STMT;

    Parameters.ParamByName('paul').Value := Edit1.Text;
    // ...
    Open;
  end;
end;
Bonne Chance

DP-Maintenance 8. Sep 2007 06:57

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Windows API / MS.NET Framework API" nach "Datenbanken" verschoben.
Auch wenn es evtl. nur um die Delphi-Grundlagen geht, dem Titel nach gehört das hier hin.

poterp 8. Sep 2007 11:04

Re: Sql - Ado - Values
 
Merci Monsieur,
je vais essayer :-D

poterp 8. Sep 2007 15:59

Re: Sql - Ado - Values
 
Danke, es lauft ganz gut :thumb:
wie kann ich vermeiden, dass ein datensatz 2mal gespeichert wird? bzw eine routine schreiben, die erstmal prüft, ob die identische daten in datenbank vorhanden ist?
grüß
poter

DeddyH 8. Sep 2007 16:02

Re: Sql - Ado - Values
 
Oder auf DB-Ebene einen passenden Unique-Index setzen.

poterp 8. Sep 2007 16:10

Re: Sql - Ado - Values
 
wie ist es praktisch gemeint?

DeddyH 8. Sep 2007 16:23

Re: Sql - Ado - Values
 
Du kannst in einer Tabelle ein oder mehrere Felder in Kombination mit einem Unique Index versehen. Dann sorgt das DBMS dafür, dass es nur einen Datensatz mit dem Wert des Feldes oder der Kombination geben darf.
Angenommen, Du hast eine Tabelle mit Benutzern und möchtest sicherstellen, dass die Kombination aus Name und Vorname eindeutig ist. Also legst Du einen Unique Index über diese beiden Felder (Achtung: 1 Index über 2 Felder, nicht jeweils einen!). Dabei ist zu beachten, dass beide Felder möglichst NOT NULL definiert sein sollten. Anschließend führt jeder Versuch, dieselbe Kombination von Namen und Vornamen (z.B. Meier,Heinz) erneut einzufügen, zum Fehler.

poterp 8. Sep 2007 16:55

Re: Sql - Ado - Values
 
wurde es ungefähr so aussehen?
Delphi-Quellcode:
procedure TForm2.Button3Click(Sender: TObject);
begin
  with adoquery1 do
  begin
CREATE UNIQUE INDEX ID_tabziel
ON Tab_Fb_Ziel ('Name,Kunde_nr, datum');
end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 Uhr.
Seite 1 von 3  1 23   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf