AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Query mit Primary Key
Thema durchsuchen
Ansicht
Themen-Optionen

Query mit Primary Key

Ein Thema von berndberndbernd5b · begonnen am 4. Nov 2005 · letzter Beitrag vom 5. Nov 2005
Antwort Antwort
berndberndbernd5b

Registriert seit: 4. Nov 2005
30 Beiträge
 
#1

Query mit Primary Key

  Alt 4. Nov 2005, 17:58
Datenbank: MS Access 2003 • Zugriff über: data Source, Data Table .....
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:
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;
das klappt auch mit einer einfachen Tabelle, aber nicht mit einer Query.

da meldet der mir, dass er keinen PrimaryKey hat.

Als DBMS nutz ich Access.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Query mit Primary Key

  Alt 5. Nov 2005, 07:33
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:
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;
Hier bei werden alle Personalnummern gefunden in denen die Zeichenfolge aus Edit1.Text vorkommt.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
berndberndbernd5b

Registriert seit: 4. Nov 2005
30 Beiträge
 
#3

Re: Query mit Primary Key

  Alt 5. Nov 2005, 09:43
hi

kannst du mir das mit dem Parameter installieren
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Query mit Primary Key

  Alt 5. Nov 2005, 09:47
Zitat von berndberndbernd5b:
... kannst du mir das mit dem Parameter installieren
Was meinst Du mit installieren?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
berndberndbernd5b

Registriert seit: 4. Nov 2005
30 Beiträge
 
#5

Re: Query mit Primary Key

  Alt 5. Nov 2005, 12:00
sry ich mein erklären, war was durcheinander ....
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Query mit Primary Key

  Alt 5. Nov 2005, 12:21
Zitat von berndberndbernd5b:
... war was durcheinander ....

Eigentlich ganz einfach. Wenn in einem SQL-Kommande etwas mit einem Doppelpunkt davor steht wird dies als Parameter interpretiert.
SELECT * FROM tabelle WHERE feld1 = :blubb Hier ist "blubb" der Parameter. Dieser muss naürlich noch mit einem Wert gefüllt werden. Hierfür kannst Du Delphi-Referenz durchsuchenParamByName verwenden um ihn anhant seines Namens zu finden oder mit [oh]Params[nummer][/oh] um ihn anhant der Nummer (mit 0 beginnend) zu setzen.

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: SELECT * FROM tabelle WHERE feld1 = 'meow' Jetzt kannst Du entweder so etwas machen:
Delphi-Quellcode:
begin
  with query do
  begin
    SQL.Text := 'SELECT * FROM tabelle WHERE feld1 = ' + QuotedStr('meow');
  end;
end;
oder
Delphi-Quellcode:
const
  sqltext := 'SELECT * FROM tabelle WHERE feld1 = %s';
begin
  with query do
  begin
    SQL.Text := Format (sqltext,[QuotedStr('meow')];
  end;
end;
oder aber Du arbeitest mit Parametern und überlässt es dem "Treiber" die Daten richtig an die DB zu übergeben.
Delphi-Quellcode:
begin
  with query do
  begin
    SQL.Text := 'SELECT * FROM tabelle WHERE feld1 = :parameter1';
    ParamByName('parameter1').AsString := 'meow';
  end;
end;
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

Delphi-Quellcode:
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;
Egal wie das DBMS das Datum nun erwartet. Es kommt richtig dort an.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
berndberndbernd5b

Registriert seit: 4. Nov 2005
30 Beiträge
 
#7

Re: Query mit Primary Key

  Alt 5. Nov 2005, 12:27
jo cool
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:34 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