Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
ComboBox da Veri Listelemek
#11
(19-04-2020, Saat: 20:40)Mr.Developer Adlı Kullanıcıdan Alıntı:
(19-04-2020, Saat: 20:32)OZCANK Adlı Kullanıcıdan Alıntı: Denedim olmadı :Sad  başka yol denemeliyim.

Denediğiniz kodu atar mısınız ? @41linea41 ve @Halil Han Badem arkadaşların anlattığı aynı şey iken birini yanlış diğerini doğru kabul ettiniz !

Kod Bu şekilde;
procedure TForm25.ComboBox7Change(Sender: TObject);
Var
Depo:String;
begin
Depo:=ComboBox7.Text;
with StokDepoList do
begin
StokDepoList.Close;
StokDepoList.SQL.Clear;
StokDepoList.SQL.Add('SELECT DISTINCT DEPO_KODU,DEPO_ISMI FROM TBLSTOKDP WHERE 1=1');
StokDepoList.Active:=True;
StokDepoList.First;
while not eof do
begin
ComboBox7.Items.Add(FieldByName('DEPO_ISMI').AsString);
StokDepoList.Next;
ComboBox7.Items.Add(Depo);
end;
End;
End;

(19-04-2020, Saat: 20:50)hi_selamlar Adlı Kullanıcıdan Alıntı:
(19-04-2020, Saat: 19:37)OZCANK Adlı Kullanıcıdan Alıntı: Arkadaşlar Merhaba; Yardımlarınıza ihtiyacım var. Konu şu;
Form üzerine ComboBox yerleştirdim ve AdoQuery den Listeleme yaptırıyorum fakat her liste yaptığımda içerisindeki veriler çoğalıyor bunu nasıl engelleyebilirim veya kodda nasıl değişiklik yapılabilir?


procedure TForm25.ComboBox7Change(Sender: TObject);
begin
with StokDepoList do
begin
StokDepoList.Close;
StokDepoList.SQL.Clear;
StokDepoList.SQL.Add('SELECT DISTINCT DEPO_KODU,DEPO_ISMI FROM TBLSTOKDP WHERE 1=1');
StokDepoList.Active:=True;
StokDepoList.First;
while not eof do
begin
ComboBox7.Items.Add(FieldByName('DEPO_ISMI').AsString);
StokDepoList.Next;
end;
End;
End;

Merhabalar,

İşleminize anlam vermedim ben kusura bakmayın!
Yanlış da anlamış olabilirim...

Şöyle ki ;

Neden  ComboBox7 OnChange
işleminde tekrar ComboBox7 items insert yapıyorsunuz?
procedure TForm25.ComboBox7Change(Sender: TObject);
ComboBox7.Items.Add(FieldByName('DEPO_ISMI').AsString);
Amacınız nedir?

Kolay gelsin.
Amacım Veri tabanındaki iki alanı ComboBox listelemek ve listelenen alandan istediğim kaydı seçip raporlamada kullanmak istiyorum.
Cevapla
#12
(19-04-2020, Saat: 20:52)OZCANK Adlı Kullanıcıdan Alıntı:
(19-04-2020, Saat: 20:40)Mr.Developer Adlı Kullanıcıdan Alıntı: Denediğiniz kodu atar mısınız ? @41linea41 ve @Halil Han Badem arkadaşların anlattığı aynı şey iken birini yanlış diğerini doğru kabul ettiniz !

Kod Bu şekilde;
procedure TForm25.ComboBox7Change(Sender: TObject);
Var
Depo:String;
begin
Depo:=ComboBox7.Text;
with StokDepoList do
begin
StokDepoList.Close;
StokDepoList.SQL.Clear;
StokDepoList.SQL.Add('SELECT DISTINCT DEPO_KODU,DEPO_ISMI FROM TBLSTOKDP WHERE 1=1');
StokDepoList.Active:=True;
StokDepoList.First;
while not eof do
begin
ComboBox7.Items.Add(FieldByName('DEPO_ISMI').AsString);
StokDepoList.Next;
ComboBox7.Items.Add(Depo);
end;
End;
End;

(19-04-2020, Saat: 20:50)hi_selamlar Adlı Kullanıcıdan Alıntı: Merhabalar,

İşleminize anlam vermedim ben kusura bakmayın!
Yanlış da anlamış olabilirim...

Şöyle ki ;

Neden  ComboBox7 OnChange
işleminde tekrar ComboBox7 items insert yapıyorsunuz?
procedure TForm25.ComboBox7Change(Sender: TObject);
ComboBox7.Items.Add(FieldByName('DEPO_ISMI').AsString);
Amacınız nedir?

Kolay gelsin.
Amacım Veri tabanındaki iki alanı ComboBox listelemek ve listelenen alandan istediğim kaydı seçip raporlamada kullanmak istiyorum.

Merhabalar,

Neden tek ComboBox ile yapmaya çalışıyorsunuz?

Bu işlem iki combo ile yapılması gerekli aslında diye düşünüyorum.

- ComboBox7  > SQL > Depo İsimleri Listelenir
   > ComboBox7 > OnChange işleminde ise > ComboBox8 içerisine; yeni bir SQL yazılarak ComboBox7 deki depo isimlerine göre alt depo isimleri listelenir.

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#13
if ComboBox7.Items.IndexOf( depoadi ) < 0 then ComboBox7.items. add( depoadi )

gibisinden bir yaklaşım ile, içerik yoksa ekleme yapabilir eski içeriğe zarar vermemiş olurdunuz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#14
(20-04-2020, Saat: 01:06)mrmarman Adlı Kullanıcıdan Alıntı: if ComboBox7.Items.IndexOf( depoadi ) < 0 then ComboBox7.items. add( depoadi )

gibisinden bir yaklaşım ile, içerik yoksa ekleme yapabilir eski içeriğe zarar vermemiş olurdunuz.

mrmarman üstadım çok teşekkür ederim. Ben biraz araştırma yaptım daha önceden başka bir arkadaşın yaptığı kodu buldum ve uyarlamaya çalıştım. Sadece ComboBox da seçim yaptığım zaman cursor kayboluyor tıklayınca veya enter basınca geliyor onu çözemedim. Bu haliyle  belki başka arkadaşların işine yarar diye paylaştım.


procedure TForm25.ComboBox7KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
 StokDepo: String;
begin
 with StokDepoList do
 begin
   StokDepoList.Close;
   StokDepoList.SQL.Clear;
   StokDepoList.SQL.Add('SELECT DEPO_KODU,DEPO_ISMI FROM TBLSTOKDP ');
   StokDepoList.SQL.Add('WHERE DEPO_ISMI LIKE ' + QuotedStr('%' + ComboBox7.Text + '%'));
   Prepared := True;
   StokDepoList.Open;
   if Not IsEmpty then // Kayıt Varsa
   begin
     StokDepo := FieldByName('DEPO_ISMI').AsString;
     with StokDepoList do
     begin
       if Key <> vk_Return then
       begin
         TComboBox(Sender).Items.Clear;
         TComboBox(Sender).AutoComplete := False;
         TComboBox(Sender).DroppedDown := True;
         while Not StokDepoList.Eof do
         begin
           TComboBox(Sender).Items.Add(FieldByName('DEPO_ISMI').AsString);
           StokDepoList.Next;
         end;
         TComboBox(Sender).SelStart := length(TComboBox(Sender).Text);
         TComboBox(Sender).SetFocus;
       end
       else
       begin
         TComboBox(Sender).DroppedDown := False;
      end;
     end;
   end;
 end;
End;
Cevapla
#15
dblookupcombobox kullanabilirsiniz. eğer herhangi bir tabloya bağlamayıp sadece lookup bilgilerini girerseniz combobox gibi kullanabilir  böylece  döngülerle uğraşmazsınız.


DBLookupComboBox1.KeyField := 'DEPO_KODU';
DBLookupComboBox1.ListField  := 'DEPO_ISMI'

Memo1.Lines.Add( DBLookupComboBox1.KeyValue +' - '+ DBLookupComboBox1.Text);


Not: Datasource bağlamayı unutmayın
Cevapla
#16
(23-04-2020, Saat: 16:36)ugorkem Adlı Kullanıcıdan Alıntı: dblookupcombobox kullanabilirsiniz. eğer herhangi bir tabloya bağlamayıp sadece lookup bilgilerini girerseniz combobox gibi kullanabilir  böylece  döngülerle uğraşmazsınız.


DBLookupComboBox1.KeyField := 'DEPO_KODU';
DBLookupComboBox1.ListField  := 'DEPO_ISMI'

Memo1.Lines.Add( DBLookupComboBox1.KeyValue +' - '+ DBLookupComboBox1.Text);


Not: Datasource bağlamayı unutmayın
ugorkem kardeşim öncellikle burada yardımlarını esirgemeyen ve size çok teşekkür ederim. Haklısın bu kadar döngüye gerek yok bende şu şekilde değiştirdim şimdilik işimi görüyor ihtiyacı olanlara bir fikir verebilir.

Öncelikle forma DBComboBox1 ekledim sonra Datasource yi ilgili tabloya bağlıyorum ve DataField de arayacağım alan adını yazıyorum.
ve DataSource de SQL de select cümlesini unutmayın. Sonra Kod;

procedure TForm25.DBComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
         while Not GrupList.Eof do
         begin
           DBComboBox1.Items.Add(GrupList['GRUP_ISIM']);
           GrupList.Next;
         end;
         end;
end.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Problem - ZKTeco Cihazlardan Anlık Veri Alma mad85 1 105 04-07-2020, Saat: 14:06
Son Yorum: SimaWB
  Webden Bir Alandan Veri Çekmek akissoftware 16 1.049 19-06-2020, Saat: 00:50
Son Yorum: mrmarman
  Firebird - İçinde veri olan bir alanın tipini değiştirme habikus 3 269 07-06-2020, Saat: 23:32
Son Yorum: habikus
  Blok Chain den veri çeken var mı ? enigma 3 405 22-04-2020, Saat: 16:06
Son Yorum: SimaWB
  Firebird veri tabanlı programda arama filitreleme baloglurecep 3 493 18-03-2020, Saat: 11:51
Son Yorum: anemos



Konuyu Okuyanlar: 1 Ziyaretçi