![]() |
Datenbank: MSDE • Version: SP3a • Zugriff über: dbGo / ADO
SQL Parameterübergabe
Hi,
ich habe folgendes Problem was ich nicht nachvollziehen kann. Über eine ADOQuery starte ich folgende Anfrage. (SN ist ein Integerwert)
Delphi-Quellcode:
Die Fehlermeldung lautet " Die Anwendung verwendet für den aktuellen Vorgang einen Wert vom falschen Typ "
if RadioButton1.Checked = True then
begin with Q_SUCHE do begin Close; SQL.Clear; SQL.Add(' SELECT * FROM CKIII '); SQL.Add(' WHERE SN LIKE :v_SUCHE '); Prepared := True; Parameters.ParamByName('v_SUCHE').Value := Edit1.Text+'%'; Open; end; end; Wie kann das sein? Ich glaube ich rate meinem Chef wieder zu Delphi 6!!! Thx für jegliche Antworten! Greets |
Re: SQL Parameterübergabe
Hi,
ich vermute mal, dass er dadurch, dass du noch ein % anhängst das ganze als string / varchar übergibt... Da der Parameter ein Value ist, und sich den Datentyp "aussucht"... ob man nauch nach ähnlichen Zahlen suchen kann / wie, weiß ich nicht... wie gesagt ist nur eine vermutung //edit: hast du mal ausprobiert, was passiert, wenn du das % wegnimmst? |
Re: SQL Parameterübergabe
Hi,
wenn ich das '%' weg lasse geht es aber dann kann ich eben nicht wie gewünscht nach einem Teil der SN suchen. Deshalb eben
SQL-Code:
Wenn ich das so mache geht es aber dann eben OHNE '%'
SN LIKE :v_SUCHE
SQL-Code:
Die Anwendung kommt wirklich nicht mit der Übergabe "Edit1.Text+'%'" als VALUE zurecht, das hatte aber sonst mit Delphi6/7 immer gefunzt. Ist das jetzt ein neues feature von Delphi 2005???? Wenn ich mich schon mit so kleinigkeiten rumärgern muß wechsel ich wieder zu meinem guten "alten" Delphi.
SN = :v_SUCHE
Greets |
Re: SQL Parameterübergabe
Hallo Mike,
Zitat:
SQL-Code:
Mit einem anderen Delphi erhältst du sicher die gleiche Fehlermeldung. Eine andere Datenbank könnte eventuell ein implizites type casting machen, aber darauf sollte man sich sowieso nicht verlassen.
SELECT * FROM ckiii WHERE sn BETWEEN :low AND :high
SELECT * FROM ckiii WHERE CAST(sn AS CHAR) LIKE :prefix Grüße vom marabu |
Re: SQL Parameterübergabe
Zitat:
Zitat:
|
Re: SQL Parameterübergabe
Hi,
Erstmal vielen Dank für die Antworten, leider komme ich heute nicht mehr dazu mich mit diesem Problem zu befassen und muß das ganze auf heute Abend verschieben. Ich werde eure Ansätze testen und versuchen das "irgendwie" umzusetzten. Mein Ergebnis bekommt ihr dann später :thumb: Greets |
Re: SQL Parameterübergabe
Zitat:
Es funktioniert auch nicht in C++ oder C# ! Das ist eine Regel von SQL, also der Datenbank. Zitat:
Es macht ja bei Integer auch keinen Sinn
Code:
ein Wert LIKE "1%" würde folgede Zahlen auswählen:
Wert
1 2 3 ... 10 11 12 ... 100 101 ... 10845180471
Code:
Wenn Du diese Zahlen wirklich so auswählen willst mach aus dem SN einen VARCHAR (String) in der Datenbank.
Wert
1 10 11 12 100 101 10845180471 oder verwende die Operatoren für Zahlen: =, >, <, ... z.B. Wert < 11 gibt folgendes zurück
Code:
Wert
1 2 3 ... 10 |
Re: SQL Parameterübergabe
Hi MaBuSE,
ich muß dir vollkommen recht geben. In meinem übereifer habe ich mal wieder völlig das Nachdenken vergessen. Da es ein Integerwert ist geht das so ja gar nicht :wall: deshalb als String und alle sind glücklich. Danke für deine Antworten!!! Greets |
Re: SQL Parameterübergabe
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 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 by Thomas Breitkreuz