Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
CheckLisstBox ta seçilmiş öğelerin String katarına aktarılması
#1
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)


Ek Dosyalar Resimler
   
Cevapla
#2
(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
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#3
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);
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  string icinde alt satirda goster koduyla beraber nasil gonderilir sadikacar60 4 1.087 09-09-2024, Saat: 08:42
Son Yorum: damert6
  String Fonksiyon Kullanımıyla ilgili ermanispir@gmail.com 2 1.176 01-06-2023, Saat: 11:28
Son Yorum: ermanispir@gmail.com
  Memo içerisinde 4 kolonlu tablo tipi string göstermek (String Format) Syntax 4 2.400 05-05-2023, Saat: 11:02
Son Yorum: Bay_Y
  String değer okuma akuyumcu63 4 1.951 15-08-2022, Saat: 11:08
Son Yorum: akuyumcu63
  date and/or time from character string-[Çözüldü} Mesut 6 2.806 27-01-2022, Saat: 10:39
Son Yorum: Mesut



Konuyu Okuyanlar: