Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Suche nach Zahlen (https://www.delphipraxis.net/2346-sql-suche-nach-zahlen.html)

swoob 19. Jan 2003 10:44


SQL Suche nach Zahlen
 
Hi!
Ich hab da ein Problem wenn ich in Delphi in meiner Datenbank nach Zahlen suchen will. Um genau zu sein suche ich Nach verschiedenen ArtikelNr.
Der Befehl den ich benutze sieht wie folgt aus:

Zitat:

procedure TForm3.Button3Click(Sender: TObject);
var s : string;
begin
s := 'select * from Tabellenname where ' +
'(Produkttyp like "'+Edit4.Text+'%")';

try
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add(s);
Query2.Open;
except
end;
end;
Dieser funktioniert auch solange Edit4.Text = einem String entspricht.
Doch steht hier eine Zahl, also unsere KundenNr (Bsp: 1918001) funktioniert dieser Befehl nicht mehr.
Könnt ihr mir bei diesem Problem helfen?

mfg
swoob

Daniel B 19. Jan 2003 10:48

Re: SQL Suche nach Zahlen
 
Hi,

Zitat:

Zitat von swoob
Dieser funktioniert auch solange Edit4.Text = einem String entspricht.
Doch steht hier eine Zahl, also unsere KundenNr (Bsp: 1918001) funktioniert dieser Befehl nicht mehr.

Du musst einfach den String in einen Integer umwandeln.

Delphi-Quellcode:
var
  s: String;

  s := IntToStr(12345);
HTH

Grüsse, Daniel :hi:

swoob 19. Jan 2003 11:05

Danke
 
Vielen Dank für deine schnelle Hilfe.
Aber irgendwie bekomm ich das jetzt nicht gebacken deinen Vorschlag in meinen Befehl einzufügen.

mfg
swoob

Daniel B 19. Jan 2003 11:10

Hi,

Delphi-Quellcode:
procedure TForm3.Button3Click(Sender: TObject);
var s : string;
begin
s := 'select * from Tabellenname where ' + 
'(Produkttyp like "'+ IntToStr(Edit4.Text) +'%")';

try
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add(s);
Query2.Open;
except
end;
end;
Ich denke das wird es wohl sein, Du willst den Inhalt des Edits in der DB einfügen, oder genau andersrum?

Grüsse, Daniel :hi:

swoob 19. Jan 2003 11:28

Leider nicht...
 
Leider funktioniert der Befehl so nicht.
Es kommt die Fehlermeldung:
[Error] Kundenverzeichnis.pas(102): There is no overloaded version of 'IntToStr' that can be called with these arguments

Ich will das Delphi die KundenNr aus dem Edit4 Feld abliest und dann in einer anderen Tabelle nach dieser Nummer sucht. Und zwar in der spalte KundenNr.

mfg
swoob

Daniel 19. Jan 2003 11:32

@DanielB:
Sorry - aber so kann das nicht funktionieren. Die Eigenschaft 'Text' eines Edit-Feldes ist ein String. Diesen wiederum kannst Du nicht an 'IntToStr()' übergeben - das lässt sich nicht einmal kompilieren.

Wie ist denn das Feld mit der Kundennummer in der Datenbank deklariert? Als Zahlentyp? Dann dürfte es mit 'like'-Vergleichen ein wenig schwierig werden. Im ANSI-SQL ist der Operator 'like' lediglich auf Strings definiert - jedoch haben einige Systeme hier eigene Erweiterungen vorgenommen, um den Befehl 'like' auch auf numerischen Feldern zu unterstützen.
Welche Datenbank benutzt Du? Ich würde vorschlagen, dort mal in der Dokumentation zum Thema 'like' nachzuischlagen.

Daniel B 19. Jan 2003 11:32

Re: Leider nicht...
 
Zitat:

Zitat von swoob
Ich will das Delphi die KundenNr aus dem Edit4 Feld abliest und dann in einer anderen Tabelle nach dieser Nummer sucht. Und zwar in der spalte KundenNr.

Dann brauchst Du dies:

Delphi-Quellcode:
var
  i: integer;

i := StrToInt(Edit1.Text);
Jetzt musst/kannst Du i mit den Werten in den anderen Spalten/Tabellen suchen. Denn i hat jetzt den Wert der im Edit drin steht und ist in einen Integer umgewandelt.

Grüsse, Daniel :hi:

Daniel 19. Jan 2003 11:33

Jetzt habe ich Deine Antwort gelesen - nun, wenn Du nach exakt einer Kundennummer suchen willst, dann kannst Du auf 'like' verzichten und Gleichheit prüfen.

Daniel B 19. Jan 2003 11:36

Zitat:

Zitat von Daniel
@DanielB:
Sorry - aber so kann das nicht funktionieren. Die Eigenschaft 'Text' eines Edit-Feldes ist ein String. Diesen wiederum kannst Du nicht an 'IntToStr()' übergeben - das lässt sich nicht einmal kompilieren.

*grmpfl* Dann kann man so "einfache" sachen bei DBs nicht anwenden?
Ist ja Blöd. Ich weiss schon warum ich mich bis jetzt aud DB rausgehalten habe. Ich lass es bleiben. ;)

Grüsse, Daniel :hi:

Daniel 19. Jan 2003 11:40

Hallo Daniel,

Zitat:

Zitat von Daniel B
*grmpfl* Dann kann man so "einfache" sachen bei DBs nicht anwenden?

Weder das normale Edit-Feld, ein String im Allgmeinen oder die Funktion 'IntToStr()' haben etwas mit Datenbanken zu tun. Wir bewegen uns hier noch auf dem Terrain von Object-Pascal (Delphi-Language).
:mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 Uhr.
Seite 1 von 2  1 2      

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