Selam arkadaşlar, Tquery nesnesinin SQL kısmına bi sorgu yazıyorum, Lıke kullanınca olay kopup gidiyo. Parametreyi Lıke ile nasıl gösterebilirim?
Bu şekilde yaptım ama hata veriyor.bulamıyo diyo depo parametresini. Syntaxının neresinde hata var? yoksa String List Editor bu şekilde Like kullanamıyomuyuz.
verdiği hata mesajı nedir.
birde parametre kullanıyorsanız tırnaklara ihtiyacınız yok.
where xxx like :depo
şeklinde parametreyi tanımlayabilrsiniz.
depo parametresine değer olarak %abc%' verdiğiniz zaman problem olmayacaktır.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
slm şöyle bir denermisin. sanırım kodunda DepoTipi.db koymamışsın belki bu kısmından kaynaklanıyor olabilir.
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select * from DepoTipi.db');
Query1.SQL.Add('WHERE Lower() like "%'+LowerCase('depo')+'%"');
Query1.ExecSQL;
Query1.Open;
dilersen query kullanmadan sorgulama yapabileceğin şöyle bi kod var.
//// exeklasör fonksiyonu,datalarımızın yolunu her seferinde yazmaaktan kurtarıyor, başka bir pc ye kurdunda datalar bulunamdı hatasınla karşılaşmassın
function TForm1.EXEKLASOR: string;
begin
Result := ExtractFilePath(Application.ExeName);
if Result[Length(Result)] <> '\' then
Result := Result + '\';
end;
---------------------------------------------- formuna Query bileşeni koyamadan arama yapabileceğin kod
function TForm1.Ayni_Kayit_Sorgusu(Data_Adi, AlanAdi, Kayitli_Bilgi, Aranan:String;Islem_Durumu:Integer):Boolean ;
var
Durum:boolean;
Sorgu:TQuery;
begin
Sorgu:=TQuery.Create(Self);
Durum:=true;
Sorgu.DatabaseName:=Form1.EXEKLASOR+'data';
if Aranan<>'' then begin
Sorgu.SQL.Clear;
Sorgu.SQL.Add('Select '+AlanAdi+' FROM '+Data_Adi+' WHERE '+AlanAdi+' = '+QuotedStr(Aranan));
Sorgu.OPEN;
Sorgu.FieldDefs.Update;
if Sorgu.FieldByName(AlanAdi).AsString=Aranan then Durum:=True else Durum:=False;
{1: if Kayitli_Bilgi<>Aranan then begin
if Sorgu.FieldByName(AlanAdi).AsString=Aranan then Durum:=True else Durum:=False;
end else Durum:=false;
}
Sorgu.CLOSE;
Result:=Durum ;
end else Result:=Durum;
Sorgu.Free;
end;
-------------------------------------- ve kullanım şekli
procedure TForm1.Button1Click(Sender: TObject);
var
mesaj:string;
begin
if Ayni_Kayit_Sorgusu('toptancilar','Firmadi',Table1Firmadi.AsString, Edit1.Text,StrToInt(Edit2.Text) )=True then begin
mesaj:=mesaj+#13+'MALZEME ADI Kullanılmaktadır...'+'('+Edit1.Text+')';
ShowMessage(mesaj);
end;
Cevap için tşk ederim.. Tqueryde string list editor kullanmak istemememin sebebi sorgularımın çok uzun olması, store procedure de kullanmamam gerekiyo. String list editorde yazınca Like sadece buna benzer onlanları getiriyo, sadece başındaki yada sonraki olarak alamıyorum, yada ortasında bi yerde benzer varsa getiremiyorum hata verdigi için.