Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Hilfe für Anfänger SQL (https://www.delphipraxis.net/9501-hilfe-fuer-anfaenger-sql.html)

schniede 27. Sep 2003 22:04


Hilfe für Anfänger SQL
 
Habe eine tabelle(paradox)mit feld summe(currency) und Datum (Date).

Bei input mit Date bekomme ich ne Fehlermeldung,was mache ich falsch??

So klappt es!!!

Code:
procedure TForm1.Button1Click(Sender: TObject);
begin

 query1.sql.clear;
Query1.SQL.Text :='insert into langzeittabelle (Summe)values(10)';
 Query1.ExecSQL;

end;
So nicht!!
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin

 query1.sql.clear;
Query1.SQL.Text :='insert into langzeittabelle (Datum,Summe)values(22.09.2003,10)';
 Query1.ExecSQL;

end;
P.S:Was müßte ich für edit und delete schreiben?
Da das mein Anfang mit SQL ist und in meinen sämtlichen Büchern nichts zu finden
ist hoffe ich auf eure Hilfe.

mfg schniede

Sharky 28. Sep 2003 06:53

Re: Hilfe für Anfänger SQL
 
Zitat:

Zitat von schniede
.....
So nicht!!
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
 query1.sql.clear;
 Query1.SQL.Text :='insert into langzeittabelle (Datum,Summe)values(22.09.2003,10)';
 Query1.ExecSQL;
end;
P.S:Was müßte ich für edit und delete schreiben?
Da das mein Anfang mit SQL ist und in meinen sämtlichen Büchern nichts zu finden
ist hoffe ich auf eure Hilfe.

mfg schniede

Hai schniede,

a) Frage 1
Versuche mal das Datum in Hochkommatas zu setzen (').

b) EDITE
SQL-Code:
 UPDATE tabelle SET feldname = wert WHERE bedingung
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
 query1.sql.clear;
 Query1.SQL.Text :='UPDATE langzeittabelle SET summe = 5 WHERE datum = '22.09.2003';
 Query1.ExecSQL;
end;
Wenn du verschiedene Felder gleichzeitig ändern möchtest werden diese nach dem SET durch kommas getrennt:
SQL-Code:
 UPDATE tabelle SET feldname1=wert1 , feldname2=wert2 , feldname3=wert3 WHERE bedingung
c) DELETE
c.1) Alle Zeilen einer Tabelle löschen
SQL-Code:
DELETE tabelle
c.2) Teilmenge einer Tabelle löschen
SQL-Code:
DELETE FROM tabelle WHERE bedingun
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
 query1.sql.clear;
 Query1.SQL.Text :='DELETE FROM langzeittabelle WERE datum = '22.09.2003';
 Query1.ExecSQL;
end;
Hoffe das hilft dir.

BTW: Suche mal auf deinem Rechner nach der LocalSQL.HLP. Das ist eine kleine Hilfe mit den wichtigsten SQL-Befehlen.
Die ist IMHO bei Delphi dabei. Wenn nicht schaue einfach mal im Internet.
Die hat mir am sehr geholfen. Ansonsten natürlich -> Fragen ;-)

schniede 28. Sep 2003 09:45

Re: Hilfe für Anfänger SQL
 
Hy Sharky!!

Hilft mir natürlich erst mal weiter.

Datum in Hochkomma funzt nicht.

Code:
begin

 query1.sql.clear;
Query1.SQL.Text :='insert into langzeittabelle (Datum,Summe)values('22.08.2003',10)';
 Query1.ExecSQL;

end;
[Fehler] Kundenverwaltung.pas(1230): Operator oder Semikolon fehlt

??? bin ich zu blöd :-((.

mfg schniede

schniede 28. Sep 2003 10:02

Re: Hilfe für Anfänger SQL
 
ich noch ma!

Code:
query1.sql.clear;
 Query1.SQL.Text :='DELETE FROM langzeittabelle WERE datum = '18.09.2003';
 Query1.ExecSQL;
bekomme auch die Fehlermeldung:[Fehler] Kundenverwaltung.pas(1235): Operator oder Semikolon fehlt

vieleicht kannst du noch mal ein Blick drauf werfen Sharky ?

schniede

Sharky 28. Sep 2003 10:08

Re: Hilfe für Anfänger SQL
 
Zitat:

Zitat von schniede
ich noch ma!

Code:
query1.sql.clear;
 Query1.SQL.Text :='DELETE FROM langzeittabelle WERE datum = '18.09.2003';
 Query1.ExecSQL;
bekomme auch die Fehlermeldung:[Fehler] Kundenverwaltung.pas(1235): Operator oder Semikolon fehlt

vieleicht kannst du noch mal ein Blick drauf werfen Sharky ?

schniede

Hai,

so kann es nicht gehen. Du musst ja einen String übergeben in dem Hochkommatas stehen.

Hatte ich in meinem Beispiel total vergessen ;-(

Versuche es mal so:

Code:
query1.sql.clear;
 Query1.SQL.Text :='DELETE FROM langzeittabelle WHERE datum = '
  + QuotedStr ('18.09.2003');
 Query1.ExecSQL;
Das QuotedStr gibt als Ergebniss '18.09.2003' zurück! Inkl. der Hochkommas. Bei deinem Code hast Du ja mit dem ' vor der 18. den String beendet.

Noch mal zum Verständiss: Der SQL-String muss so aussehen
SQL-Code:
 DELETE FROM langzeittabelle WERE datum = '18.09.2003'
Dummerweise werden in Delphi Strings halt auch in ' eingeschlossen.
Wenn Du nun den Teil der in Hochkommas sein musst mit QuotedStr übergibst läuft es.
Das gleiche Problem hättest du z.B. bei der Suche nach Text.

Uff... Ich hoffe Du verstehst was ich meine!?


[EDIT]ACHTUNG! Bei Dir im Code steht WERE und nicht WHERE

schniede 28. Sep 2003 10:25

Re: Hilfe für Anfänger SQL
 
Danke Sharky!!

Funzt!!!

Code:
begin
 query1.sql.clear;
 Query1.SQL.Text :='DELETE FROM langzeittabelle WHERE datum = '
  + QuotedStr (datetostr(vonpicker.date));
 Query1.ExecSQL
end;
Nur wie kann ich hier vonpicker.dateeinbauen???

Code:
begin

 query1.sql.clear;
Query1.SQL.Text :='insert into langzeittabelle (Summe,Datum)values( 10,"09/12/2003")';
 Query1.ExecSQL;

end
mfg schniede

Sharky 29. Sep 2003 06:11

Re: Hilfe für Anfänger SQL
 
Zitat:

Zitat von schniede
....
Nur wie kann ich hier vonpicker.dateeinbauen???

Na genauso!

Code:
begin
 query1.sql.clear;
Query1.SQL.Text :='insert into langzeittabelle (Summe,Datum)values( 10,'
   + QuotedStr (DateToStr (vonpicker.date))
   + ')';
 Query1.ExecSQL;
end

Honie 1. Okt 2003 08:18

Re: Hilfe für Anfänger SQL
 
Statt QuotedStr kannst Du auch zwei Hokommata in Folge schreiben:

var
a: string;

begin
a := 'Hier steht ein Hochkomma: ''!';
end;

Sharky 1. Okt 2003 08:37

Re: Hilfe für Anfänger SQL
 
Zitat:

Zitat von Honie
Statt QuotedStr kannst Du auch zwei Hokommata in Folge schreiben...

Jep, ich persönlich finde QuotedStr halt leserlicher ;-)

Hansa 1. Okt 2003 10:00

Re: Hilfe für Anfänger SQL
 
Hier noch mein Senf:

Schreibe alles groß oder klein, also vor allem die Bezeichner. Ich schreibe alles GROß und verzichte auf deutsche Sonderzeichen. Quoted Strings habe ich noch nicht gebraucht. Das ganze beruht zwar nur auf eigenen Erfahrungen und für Interbase, aber letztens hat irgendwo Jeff Overcash genau ein solches Verhalten beschrieben. Der müßte es eigentlich wissen.


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