Delphi Can
CheckLisstBox ta seçilmiş öğelerin String katarına aktarılması - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: CheckLisstBox ta seçilmiş öğelerin String katarına aktarılması (/showthread.php?tid=8308)



CheckLisstBox ta seçilmiş öğelerin String katarına aktarılması - maydin60 - 25-05-2026

Aşağıdaki function CheckListBox ta seçilmiş kutucuklardaki items ismilerini tek tırnak içinde göstererek
bir string katarı oluşturuyor...

  Edit2 e atınca '0,75 lt','2,5 lt','15 lt' bu şekilde atama yapıyor. fakat Query nin Parametresıne aktarınca 

''0,75 lt','2,5 lt','15 lt''  başa ve sona çift tırnak atıyor.. ve derleme sonucunda hata alıyorum..


 Function TFUrunBilgileri.SecilmisKutulariGetir(CheckListBox: TCheckListBox): String;
var
  I : Integer;
begin
  for I := 0 to CheckListBox.Items.Count - 1 do
    if CheckListBox.State[I] = cbChecked then
      Result := Result + QuotedStr(CheckListBox.Items[I]) + ',';

      Result := Copy(Result, 0, Length(Result) - 1);

end;


procedure TFUrunBilgileri.BtnAktarClick(Sender: TObject);
var
  StrList:String;
begin
     edit2.text:=  SecilmisKutulariGetir (CheckListBox2);
     StrList:=edit2.text;
     

  Query1.Close ;
  Query1.ParamByName('LTGR_PARAM').AsString :=StrList;
//  Query1.Params [0].AsString :=StrList;
  Query1.Open ;


end;
**************************************

Sorum şu CheckList box taki seçili öğeleri daha farklı tek tırnak ve aralarında virgül atayarak string döndüren daha stabil yöntem varmı...
Şimdiden Sağolasınız arkadaşlar..

***************************************

Query nın SQL kodu :

SELECT 
             STOK_KODU
              STOK_ADI,
              DOLUM_LT
            FROM  STOK_BILGILERI

WHERE
             DOLUM_LT IN ( :LTGR_PARAM)


Cvp: CheckLisstBox ta seçilmiş öğelerin String katarına aktarılması - hi_selamlar - 26-05-2026

(Dün, Saat: 20:39)maydin60 Adlı Kullanıcıdan Alıntı: Aşağıdaki function CheckListBox ta seçilmiş kutucuklardaki items ismilerini tek tırnak içinde göstererek
bir string katarı oluşturuyor...

  Edit2 e atınca '0,75 lt','2,5 lt','15 lt' bu şekilde atama yapıyor. fakat Query nin Parametresıne aktarınca 

''0,75 lt','2,5 lt','15 lt''  başa ve sona çift tırnak atıyor.. ve derleme sonucunda hata alıyorum..


 Function TFUrunBilgileri.SecilmisKutulariGetir(CheckListBox: TCheckListBox): String;
var
  I : Integer;
begin
  for I := 0 to CheckListBox.Items.Count - 1 do
    if CheckListBox.State[I] = cbChecked then
      Result := Result + QuotedStr(CheckListBox.Items[I]) + ',';

      Result := Copy(Result, 0, Length(Result) - 1);

end;


procedure TFUrunBilgileri.BtnAktarClick(Sender: TObject);
var
  StrList:String;
begin
     edit2.text:=  SecilmisKutulariGetir (CheckListBox2);
     StrList:=edit2.text;
     

  Query1.Close ;
  Query1.ParamByName('LTGR_PARAM').AsString :=StrList;
//  Query1.Params [0].AsString :=StrList;
  Query1.Open ;


end;
**************************************

Sorum şu CheckList box taki seçili öğeleri daha farklı tek tırnak ve aralarında virgül atayarak string döndüren daha stabil yöntem varmı...
Şimdiden Sağolasınız arkadaşlar..

***************************************

Query nın SQL kodu :

SELECT 
             STOK_KODU
              STOK_ADI,
              DOLUM_LT
            FROM  STOK_BILGILERI

WHERE
             DOLUM_LT IN ( :LTGR_PARAM)

Merhabalar,

Delphi 7  Heart

En basit çözüm,

Query1.Close;

 // Parametre kullanma, direkt yaz
 Query1.SQL.Text := 'SELECT STOK_KODU, STOK_ADI, DOLUM_LT FROM STOK_BILGILERI ' +
                    'WHERE DOLUM_LT IN (' + SecilmisKutulariGetir(CheckListBox2) + ')';

 Query1.Open;


Kullandığınız veritabnı nedir belirtmemişsiniz. RDBMS tarzı bir DB kullanıyorsanız onlarında
kendi içlerinde bazı fonksiyonları mevcut.

Kolay gelsin


Cvp: CheckLisstBox ta seçilmiş öğelerin String katarına aktarılması - barutali - 26-05-2026

Daha güncel bir delphi sürümü kullansaydınız Generics.Collections ile çözerdik ama bu da işinizi görür. 

function CheckListBoxItems2CommaText(const ACheckListBox: TcxCheckListBox): string;
var
 TempList: TStringList;
begin
 TempList := TStringList.Create;
 try
   for var I := 0 to ACheckListBox.Items.Count - 1 do
   begin
     if ACheckListBox.Items[I].Checked then
       TempList.Add(ACheckListBox.Items[I].Text);
   end;

   // CommaText aralarına virgül koyarak listesi döndürür.
   // CSV Mantığında çalıştığı için boşluk, virgül vb. varsa otomatik olarak " karakteri atar.
   // Onu da ' karakteri ile değiştiriyoruz.
   // Kullandığın DB'nin Double Quote desteği varsa replace i iptal edebilirsin.
   Result := StringReplace(TempList.CommaText, '"', '''', [rfReplaceAll]);
 finally
   TempList.Free;
 end;
end;


Kullanımı 

Memo1.Text := CheckListBoxItems2CommaText(cxCheckListBox1);