- Katılım
- 24 Nisan 2005
- Mesajlar
- 3,667
- Excel Vers. ve Dili
- Office 2016 EN 64 Bit
- Altın Üyelik Bitiş Tarihi
- 25/05/2022
Merhaba,
Çok aramama rağmen, sorgu yaptığım tablonun başlıklarını Userform listbox listesinde RS.GetRows komutu ile beraber kullanamadım.
Farklı cevaplar olmasına rağmen, testlerimde RS.GetRows un daha hızlı sonuç aktardığını gördüğüm için bun uygun çözüm bulmak istedim.
Biraz uğraştırıcı oldu ama benim için çözüm olan bir yöntem yaptım bu işin RS.GetRows kullanımı ile beraber daha kolay yolu var ise önerilere açığım
* İki listbox kullanıldı. ListboxHeader aşağıdaki özellikler belirlendi. Ayrıca TabStop false yapıldı.
Sorgu öncesinde, listbox1 de kolon genişlikleri tanımlandı. UserForm1.ListBox1.ColumnWidths = "0;120;250;160;160"
ListBoxHeader da TANIMLAR sayfasından O1:S1 de başlıklar yazıldı.
ListBoxHeader rowsource içinde O2:S2 tanımlandı. Bu hücreler boş içinde veri yok. UserForm1.ListBoxHeader.RowSource = "'TANIMLAR'!O2:S2"
ListBoxHeader ın kolon sayısı sorguya göre belirlendi. UserForm1.ListBoxHeader.ColumnCount = RS.Fields.Count
ListBoxHeader ın kolon genişlikleri Listbox1 e göre belirlendi. UserForm1.ListBoxHeader.ColumnWidths = UserForm1.ListBox1.ColumnWidths
TANIMLAR sayfasında tablo başlıklarından bağımsı istenilen başlıklar verilebilir.
Çok aramama rağmen, sorgu yaptığım tablonun başlıklarını Userform listbox listesinde RS.GetRows komutu ile beraber kullanamadım.
Farklı cevaplar olmasına rağmen, testlerimde RS.GetRows un daha hızlı sonuç aktardığını gördüğüm için bun uygun çözüm bulmak istedim.
Biraz uğraştırıcı oldu ama benim için çözüm olan bir yöntem yaptım bu işin RS.GetRows kullanımı ile beraber daha kolay yolu var ise önerilere açığım
* İki listbox kullanıldı. ListboxHeader aşağıdaki özellikler belirlendi. Ayrıca TabStop false yapıldı.
Sorgu öncesinde, listbox1 de kolon genişlikleri tanımlandı. UserForm1.ListBox1.ColumnWidths = "0;120;250;160;160"
ListBoxHeader da TANIMLAR sayfasından O1:S1 de başlıklar yazıldı.
ListBoxHeader rowsource içinde O2:S2 tanımlandı. Bu hücreler boş içinde veri yok. UserForm1.ListBoxHeader.RowSource = "'TANIMLAR'!O2:S2"
ListBoxHeader ın kolon sayısı sorguya göre belirlendi. UserForm1.ListBoxHeader.ColumnCount = RS.Fields.Count
ListBoxHeader ın kolon genişlikleri Listbox1 e göre belirlendi. UserForm1.ListBoxHeader.ColumnWidths = UserForm1.ListBox1.ColumnWidths
TANIMLAR sayfasında tablo başlıklarından bağımsı istenilen başlıklar verilebilir.
Kod:
Sub listboxdoldur()
UserForm1.ListBox1.Clear
UserForm1.ListBoxHeader.Clear
UserForm1.ListBoxHeader.RowSource = ""
Sql = ""
Sql = Sql + " SELECT LOGICALREF,CODE, NAME,NAME3,NAME4 FROM [" & LOGODATASI & "].[dbo].[" & LOGOTABLOSU & "] "
Sql = Sql + " WHERE CARDTYPE IN (10,11,12) AND ACTIVE=0 ORDER BY CODE"
UserForm1.ListBox1.ColumnWidths = "0;120;250;160;160"
UserForm1.ListBoxHeader.RowSource = "'TANIMLAR'!O2:S2"
RS.Open Sql, conn, 1, 1
On Error Resume Next
If Not RS.EOF Then
UserForm1.ListBoxHeader.ColumnCount = RS.Fields.Count
UserForm1.ListBoxHeader.ColumnWidths = UserForm1.ListBox1.ColumnWidths
UserForm1.ListBox1.ColumnCount = RS.Fields.Count
UserForm1.ListBox1.Column = RS.GetRows
End If
On Error GoTo 0
End sub