Einzelnen Beitrag anzeigen

Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#14
  Alt 23. Jan 2003, 17:31
Ok, dann wirds doch etwas umfangreicher, aber ich fass das mal noch etwas zusammen.

Code:
  qry := TQuery.Create(Application);

  with qry do
  begin
    DatabaseName := 'wsprei';

    if genau = False then
    begin
      case idx of
        0 : begin
              SQL.Add('SELECT KDNR, N1, N2, N3, PLZ, ORT FROM Kunden.DBF');
              SQL.Add('WHERE UPPER(N1) LIKE UPPER(''%' + sstr + '%'')');
              SQL.Add('OR KDNR LIKE ''%' + sstr + '%''');
              SQL.Add('OR UPPER(N2) LIKE UPPER(''%' + sstr + '%'')');
              SQL.Add('OR UPPER(N3) LIKE UPPER(''%' + sstr + '%'')');
              SQL.Add('OR UPPER(ORT) LIKE UPPER(''%' + sstr + '%'')');
            end;
        1 : begin
              SQL.Add('SELECT KENN, KDNR, FGS, TYP, KM FROM Fahrzeug.DBF');
              SQL.Add('WHERE UPPER(KENN) LIKE UPPER(''%' + sstr + '%'')');
              SQL.Add('OR KDNR LIKE ''%' + sstr + '%''');
              SQL.Add('OR UPPER(FGS) LIKE UPPER(''%' + sstr + '%'')');
              SQL.Add('OR UPPER(TYP) LIKE UPPER(''%' + sstr + '%'')');
            end;
      end;
    end
     else
       begin
         case idx of
           0 : begin
                 SQL.Add('SELECT * FROM Kunden.DBF');
                 SQL.Add('WHERE KDNR = '+ sstr);  // HIER ist das Problem (naja im nächsten Punkt nochmal)

                 //SQL.Add('WHERE UPPER(N1) = UPPER(''%' + sstr + '%'')');
                 //SQL.Add('OR KDNR = '+sstr);            
                 //SQL.Add('OR UPPER(N2) = UPPER(' + sstr + ')');
                 //SQL.Add('OR UPPER(N3) = UPPER(' + sstr + ')');
                 //SQL.Add('OR UPPER(ORT) = UPPER(' + sstr + ')');
               end;
           1 : begin
                 SQL.Add('SELECT KENN, KDNR, FGS, TYP, KM FROM Fahrzeug.DBF');
                 SQL.Add('WHERE UPPER(KENN) = UPPER(' + sstr + ')');
                 SQL.Add('OR KDNR = ' + sstr);
                 SQL.Add('OR UPPER(FGS) = UPPER(' + sstr + ')');
                 SQL.Add('OR UPPER(TYP) = UPPER(' + sstr + ')');
               end;
         end;
       end;

    Open;
    First;

    while not EOF do
    begin
//... auslesen des Query

"sstr" ist wie ich geschrieben habe definitiv ein String!

Der Wert hinter dem Feld KDNR ist zwar normal eine Zahl, hat aber aber als Datenformat: Character auf 6 Stellen festegelegt, was SQL erkennen kann wie ich gelesen hab (ich Blick aber bei den vielen SQL-Standards nicht mehr durch).

Also die Datenbank hab ich nicht erstellt und kann/darf auch nichts an ihr ändern, da sie noch von einem anderen Programm verwendet wird(ok eigentlich sind es 2 Datenbanken).

[edit]
hab den Programmcode mal eben korrigert, wie er wirkich ist
  Mit Zitat antworten Zitat