IBDataSet DBLookupComboBox Sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

IBDataSet DBLookupComboBox Sorunu

Mesaj gönderen cempolat »

IBDataSet
örn:IBDataSet component'ini MUSTERILER Tablosu olarak ayarlardim.
1 Tane DBLookupComboBox Bagladim. ComboBox acinca müsterilerden sadece 1 tanesi geliyor. 2 kere tikliyorum digeri geliyor 1 daha tiklidiyorum digeri süreki bu sekilde.Tamam Gelmiyor. Normal Tablo'larda hiçbir sorun yoktur tamami geliyordu.

Bu Sorunun Çözümü varmi.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

IBDataset'i açtıktan sonra IBDataset.FetchAll yapmalısın.

Sorun şundan kaynaklanıyor. DBLookupCombo veritabanının cache lediği kadar veriyi sana gösteriyor. Bu da default olarak 1 dir. FetchAll methodunu kullanarak Dataset'in bütün veriyi çekip cache lemesini sağlıyoruz.

Daha iyi bir yöntem clientdataset kullanmak. ClientDataset'i bir DatasetProvider ile IBDataset'ine bağlayıp, lookupcombo da ClientDataset'i göstermek daha sağlıklı bir çözüm.
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Mesaj gönderen cempolat »

tesekkurler.

bir form üzerinde 5 adet dblookcombobox1 var. her biri ayri dataset bagli.

bunlarin bazilari normal olarak geliyor bazilari ise bahsettigim gibi eksik geliyor . Tum Datasetleri ve dblookuplari tek tek özellikleri karsilastirmali kontrol ettim hepsi ayni , hic birinde'de FetchAll yapmamama ragmen gösterme sekillerinde farkliliklar var.

Bu tip bir sorun yasadinizmi.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Bazılarında olmuyor dediğin datasetler muhtemelen bir dbgrid e bağlı. Grid güncellenirken FetchAll yapar.

Anlattıklarımı yargılama. Söylediğim sebepten olduğuna güven.
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Mesaj gönderen cempolat »

tamam
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Mesaj gönderen cempolat »

biraz IBDataSet ile Acemilik çekiyorum. Bu Konuda Yardim Alabilirmiyim.

_DataStok->STOKLAR_DB->Close();
_DataStok->STOKLAR_DB->DeleteSQL->Text = "delete from STOKLAR where STOK_KODU = '150.1'";
_DataStok->STOKLAR_DB->Open();

150.1 Stok'u Silmek istiyorum bu yöntemler silemedim.Sorun Ne Olabilir sizce.Yada Bu isi yapmanin daha kolay yolu varmi.

Simdiden Tessekkurler.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
ib dataset ile ilgili biraz çalışman gerek sanırım.

ibdatset.delete dediğin zaman
otomatik olarak deletesql deki kod çalışır.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Mesaj gönderen cempolat »

hangi kayit oldugunu nasil belirtecegim.params özelligindenmi.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
select sql e kod yazıp generatesql düğmesine tıkladığın zaman otomatik deletesql kodu oluşturuluyor. Oradaki parametre senin tablondaki primary alan. sen

Kod: Tümünü seç

dataset.delete;
komutunu verdiğin zaman dataset o parametereye seçili kaydın değerlerini gönderiyor.
yani aktif kaydı siliyor.
bi dene istersen.

kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Mesaj gönderen cempolat »

tamam..
Dedigin gibi yaptim silindi. Fakat Ben Sadece Edit1 içinde bir stok kodu yaziyorum bu gibi durumda yazmis oldugum kayit ustene'mi odaklanmam lazim , yoksa deletesql text sql komutlarini göndermem gerkiyor.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

valla üstad o senin zevkine kalmış.
istersen deletetext ini değiştir. istersen ayrı bir updatesql kullan sonra dataseti refresh et istersen datasette konumlanıp sil. istersen

Kod: Tümünü seç

dataset.parambyname('id').asstring:=edit1.text;
deyip atama yap
sana kalmış.
yalnız edite yazıp sildiğene göre ben olsam(tabiki programın diğer taraflarını bilmiyorum ama) ayrı bir ibquery(ibupdatesql vs.) kullanıp yapardım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla