![]() |
SQL Abfrage Formulieren!
Hi
Folgende SQL Abfrage möchte ich ändern:
SQL-Code:
qrMain.SQL.Text:='SELECT * FROM `table_ordertracking` WHERE `Customer_Number` like '''+edKNR.Text+''' ORDER BY `Order_Number`;';
Im Edit-KNR wird eine Kundennummer eingegeben. Hier muss aber immer die gesamte Nummer (6-stellen) eingegeben werden, damit estwa gefunden wird. Wie kann ich das ändern? Ich möchte das zum Beispiel bei der eingabe von nur drei stellen z.b(650), alle Datensätze angezeigt werden die mit 650 beginnen. Das muss doch irgendwie mit % gehen? Gruß Celina |
Re: SQL Abfrage Formulieren!
Das sollte so funktionieren:
SQL-Code:
in Delphi...
SELECT *
FROM Table_OrderTracking WHERE Customer_Number like :i_edKNR ORDER BY Order_Number
Delphi-Quellcode:
With qrMain Do
Begin SQL.Text := 'SELECT *' + #10 + 'FROM Table_OrderTracking' + #10 + 'WHERE Customer_Number like :i_KNR' + #10 + 'ORDER BY Order_Number'; // Parsen des Statements um Query Parameter zu finden... Prepared := True; // Werte an Query Parameter übergeben... Parameters.ParamByName('i_KNR').Value := edKNR.Text+'%'; Open; //... End; |
Re: SQL Abfrage Formulieren!
Hi Robert
Danke... Habs so hin bekommen:
Delphi-Quellcode:
Gruß CelinaW
procedure TForm1.Button1Click(Sender: TObject);
var ListItem : TlistItem; begin dbMain.Host:=edServer.Text; //Server dbMain.Login:=edLogin.Text; //Benutzername dbMain.Password:=edPassword.Text; //Passwort dbMain.Database:=edDB.Text; //Name der Datenbank dbMain.Connected:=True; //Verbindung herstellen lvAnzeige.Items.Clear; try qrMain.SQL.Text:='SELECT * FROM `table_ordertracking` WHERE `Customer_Number` like '''+edknr.Text+'''"%" and `Order_Number` like '''+edatnr.Text+'''"%" ORDER BY `Order_Number`;'; qrMain.Open; qrMain.FieldByName('Order_Type').AsString; while not qrMain.Eof do begin ListItem := lvAnzeige.Items.Add; ListItem.Caption:=qrMain.FieldByName('Order_Type').AsString; ListItem.SubItems.Add(qrMain.FieldByName('Customer_Number').AsString); ListItem.SubItems.Add(qrMain.FieldByName('Order_Number').AsString); ListItem.SubItems.Add(qrMain.FieldByName('First_Event').AsString); ListItem.SubItems.Add(qrMain.FieldByName('PrePrint').AsString); ListItem.SubItems.Add(qrMain.FieldByName('Print').AsString); ListItem.SubItems.Add(qrMain.FieldByName('BMSLogout').AsString); qrMain.Next; end; finally dbMain.Connected:=False; //Verbindung trennen end; end; |
Re: SQL Abfrage Formulieren!
Das ganze würde funktionieren, aaaber....
Das Füllen des LV sollte vielleicht ein wenig dynamischer gemacht werden.
Delphi-Quellcode:
Änderst du das Select-STATEMENT wird auch der LV anders gefüllt.
With qrMain Do
Begin SQL.Text := 'SELECT Order_Type' + #10 + ' ,Customer_Number' + #10 + ' ,Order_Number' + #10 + ' ,First_Event' + #10 + ' ,PrePrint' + #10 + ' ,Print' + #10 + ' ,BMSLogout' + #10 + 'FROM table_ordertracking' + #10 + 'WHERE Customer_Number Like :i_KNR' + #10 + 'ORDER By Order_Number'; // Parse Statement um Variablen zu erkennen Prepared := True; // Parameterzuweisung Parameters.ParamByName('i_KNR').Value := edKNR.Text + '%'; // Hier hatte ich + '%' vergessen lvAnzeige.Items.Clear; // Ausführen Open; While Not Eof Do Begin // neues ListItem With lvAnzeige.Items.Add Do Begin // erste Spalte als Caption Caption := Fields[0].asString: With SubItems Do // Spalte 2-X als Subitems For i := 1 To pred(FieldCount) Do Add(Fields[i].asString); End; Next; End; End; Wenn die Spaltennamen fest in den Code geschrieben werden, wird er schwerer wartbar. Außerdem Sorgen deine ´ für nichts mehr als erhöhtem Aufwand beim Parsing des Statements. :zwinker: Edit: 1 Fehlerchen ausgemerzt |
Re: SQL Abfrage Formulieren!
Mhhhh... :gruebel:
Du hast wohl recht :oops: Ich sollte das nocheinmal überarbeiten. :thuimb: Danke für den TIP! Gruß CelinaW |
Re: SQL Abfrage Formulieren!
Mhhh....... bekomme immer die Fehlermeldung Undefenierter Bezeichner "Prepared" , "Parameters".
Ich binn noch nicht so fit in Delphi. Woran kann das liegen? Gruß CelinaW |
Re: SQL Abfrage Formulieren!
Dann tippe doch einfach mal qrMain und dann einen .
In der Liste der Eigenschaften und Methoden wird doch sicher etwas dabei sein, dass ähnlich geschrieben wird. Falls es dann immer noch nicht geht, kannst du ja noch schreiben welche Kompos du für den DB-Zugriff verwendest. |
Re: SQL Abfrage Formulieren!
Mhhh..... :gruebel:
Bekomme ich nicht ans laufen. Benutze die ZeosDB Komponeten in der Version 5.4! Gruß CelinaW |
Re: SQL Abfrage Formulieren!
Hi CelinaW!
Wie ist das Feld "Customer_Number" in Deiner Datenbank definiert? Viele Güße Markus :gruebel: |
Re: SQL Abfrage Formulieren!
Hi
Das Feld ist in der SQl DB als varchar(10). Hier steht die Kunden Nummer drin! Gruß CelinaW |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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