AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage Formulieren!

SQL Abfrage Formulieren!

Ein Thema von celinaw · begonnen am 21. Apr 2004 · letzter Beitrag vom 21. Apr 2004
Antwort Antwort
Benutzerbild von celinaw
celinaw

Registriert seit: 2. Apr 2004
162 Beiträge
 
#1

SQL Abfrage Formulieren!

  Alt 21. Apr 2004, 03:51
Hi

Folgende SQL Abfrage möchte ich ändern:
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
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: SQL Abfrage Formulieren!

  Alt 21. Apr 2004, 05:41
Das sollte so funktionieren:
SQL-Code:
SELECT *
FROM Table_OrderTracking
WHERE Customer_Number like :i_edKNR
ORDER BY Order_Number
in Delphi...
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;
  Mit Zitat antworten Zitat
Benutzerbild von celinaw
celinaw

Registriert seit: 2. Apr 2004
162 Beiträge
 
#3

Re: SQL Abfrage Formulieren!

  Alt 21. Apr 2004, 07:31
Hi Robert

Danke... Habs so hin bekommen:

Delphi-Quellcode:
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;
Gruß CelinaW
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: SQL Abfrage Formulieren!

  Alt 21. Apr 2004, 08:55
Das ganze würde funktionieren, aaaber....

Das Füllen des LV sollte vielleicht ein wenig dynamischer gemacht werden.

Delphi-Quellcode:
  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;
Änderst du das Select-STATEMENT wird auch der LV anders gefüllt.
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.

Edit:
1 Fehlerchen ausgemerzt
  Mit Zitat antworten Zitat
Benutzerbild von celinaw
celinaw

Registriert seit: 2. Apr 2004
162 Beiträge
 
#5

Re: SQL Abfrage Formulieren!

  Alt 21. Apr 2004, 09:00
Mhhhh...

Du hast wohl recht

Ich sollte das nocheinmal überarbeiten.

Danke für den TIP!

Gruß CelinaW
  Mit Zitat antworten Zitat
Benutzerbild von celinaw
celinaw

Registriert seit: 2. Apr 2004
162 Beiträge
 
#6

Re: SQL Abfrage Formulieren!

  Alt 21. Apr 2004, 09:14
Mhhh....... bekomme immer die Fehlermeldung Undefenierter Bezeichner "Prepared" , "Parameters".

Ich binn noch nicht so fit in Delphi. Woran kann das liegen?

Gruß CelinaW
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: SQL Abfrage Formulieren!

  Alt 21. Apr 2004, 09:22
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.
  Mit Zitat antworten Zitat
Benutzerbild von celinaw
celinaw

Registriert seit: 2. Apr 2004
162 Beiträge
 
#8

Re: SQL Abfrage Formulieren!

  Alt 21. Apr 2004, 17:27
Mhhh.....

Bekomme ich nicht ans laufen. Benutze die ZeosDB Komponeten in der Version 5.4!

Gruß CelinaW
  Mit Zitat antworten Zitat
MarkusB

Registriert seit: 3. Apr 2004
Ort: Hamburg
105 Beiträge
 
#9

Re: SQL Abfrage Formulieren!

  Alt 21. Apr 2004, 20:48
Hi CelinaW!

Wie ist das Feld "Customer_Number" in Deiner Datenbank definiert?

Viele Güße
Markus
  Mit Zitat antworten Zitat
Benutzerbild von celinaw
celinaw

Registriert seit: 2. Apr 2004
162 Beiträge
 
#10

Re: SQL Abfrage Formulieren!

  Alt 21. Apr 2004, 23:46
Hi

Das Feld ist in der SQl DB als varchar(10). Hier steht die Kunden Nummer drin!

Gruß CelinaW
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16: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