![]() |
Datenbank: MS Access 2003 • Zugriff über: data Source, Data Table .....
Query mit Primary Key
Hallo!
Ich habe einen SQL Query gemacht, funzt auch .... Jetzt möchte ich nur, dass ich nur den Datensatz auswählen, der am meisten übereinstimmt mit meiner
Delphi-Quellcode:
das klappt auch mit einer einfachen Tabelle, aber nicht mit einer Query.
with table1 do
begin indexname:='Primarykey'; setkey; fieldbyname('Personalnummer').ASString:= edit1.text; gotonearest; edit2.text:=fieldbyname('Name').ASString; edit3.text:=fieldbyname('Vorname').ASString; edit4.text:=fieldbyname('Gehalt').ASString; da meldet der mir, dass er keinen PrimaryKey hat. Als DBMS nutz ich Access. |
Re: Query mit Primary Key
Hai berndberndbernd5b,
bei SQL (TQuery) gibt es das so nicht. Du musst Dir also eine passende SQL-Abfrage bauen. In diesem Fall könnte die so aussehen:
Delphi-Quellcode:
Hier bei werden alle Personalnummern gefunden in denen die Zeichenfolge aus Edit1.Text vorkommt.
procedure TForm1.btn_FindClick(Sender: TObject);
begin with Query1 do begin SQL.Text := 'SELECT * FROM tabelle WHERER personalnummer LIKE :pnummer'; //:pnummer ist ein Parameter ParamCheck := True; // Parameterverarbeitung aktivieren ParamByName(':pnummer').AsString := '%' + Edit1.Text + '%'; Open; // Abfrage durchführen Edit2.text:=fieldbyname('Name').ASString; Edit3.text:=fieldbyname('Vorname').ASString; Edit4.text:=fieldbyname('Gehalt').ASString; Close; end; end; |
Re: Query mit Primary Key
hi
kannst du mir das mit dem Parameter installieren |
Re: Query mit Primary Key
Zitat:
|
Re: Query mit Primary Key
sry ich mein erklären, war was durcheinander ....
|
Re: Query mit Primary Key
Zitat:
Eigentlich ganz einfach. Wenn in einem SQL-Kommande etwas mit einem Doppelpunkt davor steht wird dies als Parameter interpretiert.
SQL-Code:
Hier ist "blubb" der Parameter. Dieser muss naürlich noch mit einem Wert gefüllt werden. Hierfür kannst Du
SELECT * FROM tabelle WHERE feld1 = :blubb
![]() Warum nun der ganze Aufwand? Einer der vorteile von Parametern ist das Du dich nicht darum kümmern musst das Du etwas im richtigen Format übergibst. Viele DBMS wollen das Strings in ' eingeschlossen sind wenn sie in dem Query stehen. Also so:
SQL-Code:
Jetzt kannst Du entweder so etwas machen:
SELECT * FROM tabelle WHERE feld1 = 'meow'
Delphi-Quellcode:
oder
begin
with query do begin SQL.Text := 'SELECT * FROM tabelle WHERE feld1 = ' + QuotedStr('meow'); end; end;
Delphi-Quellcode:
oder aber Du arbeitest mit Parametern und überlässt es dem "Treiber" die Daten richtig an die DB zu übergeben.
const
sqltext := 'SELECT * FROM tabelle WHERE feld1 = %s'; begin with query do begin SQL.Text := Format (sqltext,[QuotedStr('meow')]; end; end;
Delphi-Quellcode:
Richtig lustig wird es wenn Du ein Datum übergeben möchtest. Dann muss das Datum, wenn Du es als String in das Query schreibst in dem Format stehen wie es von der Verwendeten DB verlangt wird. Im Zweiffelsfall kennst Du das Format aber überhaupt nicht. Die Lösung? Ja -> Parameter
begin
with query do begin SQL.Text := 'SELECT * FROM tabelle WHERE feld1 = :parameter1'; ParamByName('parameter1').AsString := 'meow'; end; end;
Delphi-Quellcode:
Egal wie das DBMS das Datum nun erwartet. Es kommt richtig dort an.
begin
with query do begin SQL.Text := 'SELECT * FROM tabelle WHERE datumsfeld = :datum'; Params[0].AsDate := date; // Den ersten Parameter mit dem heutigen Datum füllen. end; end; |
Re: Query mit Primary Key
jo cool
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 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 by Thomas Breitkreuz