Hej och tack Staffan jag fick följande kod av LarsG i WebForum SQL men när jag lägger in den i SQL Componenten, Delphi får jag den inte att fungera Alltså (:D) fungerar inte. Jag har provat med =:D och LIKE:D utan att lyckas. Är det någon som begriper bättre!
BGM
SELECT foo
FROM bar
WHERE
(:D)
BETWEEN
foo and baz
Skiver jag så här fungerar koden:
SELECT foo
FROM bar
WHERE
14
BETWEEN
foo and baz
Men jag vill kuna välja vilket värde.
Här är koden för knappen.:
procedure TForm1.Button1Click(Sender: TObject);
var
D : Smallint ; // D Nr
begin
Query1.Close;
D:=StrToInt(Edit1.Text);
Query1.Params[0].AsInteger := D;
Query1.Open;
end;
Jag har faktiskt aldrig använt mig av param funktionen på TQuery utan brukar lägga in allt i TQuery.SQL.
Alltså nåt sånt här:
aQuery := TQuery.Create(self);
aQuery.SQL.Add('select foo from bar where ');
aQuery.SQL.Add(Edit1.text);
aQuery.SQL.Add(' between foo and baz');
aQuery.Open;
Du måste koppla aQuery till en databaskomponent som i sin tur kopplar till din paradoxdatabas.
TQuery är till för att köra via BDE (Borland Database Engine), vilket kräver att du lägger upp ett bdealias i bde administrator. Du hittar alla bdegrejorna under BDE-fliken på verktygspaletten.
Om du vill köra via ADO så använder du dig av motsvarande ADO-komponenter osv.
Vilken version av Delphi använder du dig av?
Mitt exempel är för Delphi 7.
Tyvärr så har jag inget lite exempel som jag kan skicka iväg men jag ska försöka förklara vad jag menar.
Med aQuery := TQuery.Create(Self) så skapar jag ett TQueryobjekt. Man kan lika gärna placera ut en TQuery på formuläret och använda sig av den istället.
Med SQL.Add så lägger man till sql-koden i aQuery. För att rensa bort det som ligger i SQL så använder man SQL.Clear.
aQuery.Open kör frågan och retunerar resultatet. Om frågan inte ska retunera något, man kanske gör en insert så är det bättre att köra execSQL.
Följande exempelkod fungerar mot SQL Server.
aQuery := TQuery.Create(Nil);
aQuery.Database := MyDatebase; //Ansluter den mot min databaskomponent.
aQuery.SQL.Add('select * from sysobjects');
aQuery.Open;
While not aQuery.Eof do
ShowMessage(aQuery['name']);
aQuery.Close;
Hoppas att detta hjälper dig en bit på vägen.
263 ms totalt · 3 externa anrop · v20260731065814-full.767b4345