Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Değişken' den sql in içerisini doldurma
#1
Herkese merhaba,

DELPHI 7' de

deger.ini isimli bir ini dosyam var ve içerisinde aşağıdaki gibi değerlerim mevcut.

[STOK]
stok_grup='SATIŞ,ÜRETİM,PAZARLAMA';

aşağıdaki kod ile ini dosyasındaki değerime ulaşabiliyorum.

inidosya := Tinifile.Create(Extractfilepath(application.ExeName) + 'deger.ini');
 try
   stok_grup := inidosya.ReadString('STOK', 'stok_grup', '');
 finally
   inidosya.Free;
 end;

ini dosyasından aldığım stok_grup degerlerini sql sorgumda IN içerisinde nasıl kullanabilirim?

SELECT STOKKODU, STOK_ADI
FROM STOK
WHERE ID>0 AND STOK_GRUP IN('SATIŞ','ÜRETİM','PAZARLAMA');

bu şekilde.

Yardımlarınız için şimdiden teşekkürler.
Cevapla
#2
Bu tür durumlarda ben direk sql sorgusunu string olarak oluşturup query.sql.text değişkenine atıyorum.
Topluluk mopluluk yok :/
Cevapla
#3
Şöyle birşey hazırladım. Uyarlayabilirsiniz.


procedure TForm1.Button2Click(Sender: TObject);
var
 List:TstringList;
 sqlText,inText:String;
 i:integer;
begin
  List:=TstringList.Create;
  List.Delimiter := ',';
  List.DelimitedText := 'aaa,bbb,ccc';

  for i:=0 to List.count-1 do
  begin
     if i<>List.count-1 then
     inText:= inText+QuotedStr(List[i])+','
     else
     inText:= inText+QuotedStr(List[i]);
  end;

end;
Cevapla
#4
Bununla ilgili bir çok yöntem uygulayabilirsin bunlardan 1 tanesi
Sql de aşağıdaki gibi bir fonksiyon yaz

Create function [dbo].[Fn_SplitString](@String nvarchar(4000), @Delimiter char(1))
returns @Results TABLE (Myval varchar(100))
as
  begin
  declare @index int
  declare @slice nvarchar(4000)
  declare @sno int

  select @index = 1
  if @String is null return
  
  set @sno = 0

  while @index != 0
      begin
       select @index = charindex(@Delimiter,@String)
         if @index !=0
          select @slice = left(@String,@index - 1)
         else
            select @slice = @String
           
         set @sno = @sno + 1
         insert into @Results(Myval) values(@slice)
         select @String = right(@String,len(@String) - @index)
         if len(@String) = 0 break
      end    return
end


Sonra bunu aşağıdaki gibi kullanabilrsin


SELECT STOKKODU, STOK_ADI
FROM STOK
WHERE ID>0 AND STOK_GRUP IN (Select Myval From Fn_SplitString('SATIŞ,ÜRETİM,PAZARLAMA', ',') ) ;

Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#5
(24-04-2019, Saat: 12:48)onurakman Adlı Kullanıcıdan Alıntı:
inidosya := Tinifile.Create(Extractfilepath(application.ExeName) + 'deger.ini');
 try
   stok_grup := inidosya.ReadString('STOK', 'stok_grup', '');
 finally
   inidosya.Free;
 end;
stok_grup := Format('''%s''', [StringReplace(stok_grup, ',', ''',''', [rfReplaceAll])]);
There's no place like 127.0.0.1
WWW
Cevapla
#6
(24-04-2019, Saat: 13:12)emrgln Adlı Kullanıcıdan Alıntı: Şöyle birşey hazırladım. Uyarlayabilirsiniz.


procedure TForm1.Button2Click(Sender: TObject);
var
 List:TstringList;
 sqlText,inText:String;
 i:integer;
begin
  List:=TstringList.Create;
  List.Delimiter := ',';
  List.DelimitedText := 'aaa,bbb,ccc';

  for i:=0 to List.count-1 do
  begin
     if i<>List.count-1 then
     inText:= inText+QuotedStr(List[i])+','
     else
     inText:= inText+QuotedStr(List[i]);
  end;

end;

İlgilenen herkese çok teşekkür ederim. @emrgln hocam yazmış olduğunuz kodu kullandım. Çok sağolun.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi ile Web Form Alanlarını Doldurma bünyamin68 13 2.563 30-09-2024, Saat: 14:14
Son Yorum: yhackup
Question Compiler Directive İle Değişken Kodlama YILDIRIMBEY 9 1.919 24-08-2023, Saat: 22:55
Son Yorum: veteran
  Array oluşan değişken (ÇÖZÜLDÜ) KUNTAY 1 1.122 10-02-2022, Saat: 01:40
Son Yorum: KUNTAY
  Fonksiyona gönderdiğim parametrelerin değişken olması ssmr 10 7.468 04-12-2021, Saat: 13:07
Son Yorum: CesuR
  değişken değerlere göre filtreleme seyyah 12 9.564 12-01-2020, Saat: 03:37
Son Yorum: seyyah



Konuyu Okuyanlar: 1 Ziyaretçi