![]() |
|
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 Merhabalar, Delphi 7 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); |