Liste Doldurmada Farklı Yaklaşım (Array)
#1
Access'te hep DB işlemi (Table/SQL) yapmak zorunda değiliz; başka amaçlarla da kullanabiliriz.
-Liste kutusunda değer listesi (Value List):
Bunun, yaptığım testler sonunda uzun satırlarda (kayıt) belli bir sınırı olduğunu farkettim. Yaklaşık 3.000 kusur kadar...(Yanılıyor olabilirim)
Değişkenin ";" ile ayraçlanıp RowSource' a atanmasından ibarettir ve sınırı aştığında hata dönecektir. AddItem hızı nispeten daha düşüktür ve bu nedenle konumuz süper "Array" lar ve diziyi liste kaynağına uyarlayan "özel" bir fonksiyondur.

Ekteki örnek ile, verilerin liste kaynağına "dizi" nin nasıl atandığını öğreneceksiniz.
"Özel fonksiyon" dedim çünkü fonksiyonun input argumanları(dikkat: değişken isimleri değil) sabittir ve sırf bu iş içindir. Ayrıntılı bilgiyi Access yardımda bulabilirsiniz.

Şu başlıktadır:
RowSourceType Property (User-Defined Function) - Code Argument Values

Visual Basic
  1. '************************************
  2. '********** Zeki Gürsoy *************
  3. '********** 2009 *************
  4. '************************************
  5.  
  6. 'Dizide, tüm sütunlar aynı veri tipinde
  7. 'olmayacağını varsaydım (Variant)
  8. Private arr() As Variant
  9.  
  10. Private Sub Komut2_Click()
  11. '50 bin satır, 3 sütun.. ;-D
  12. ReDim arr(1 To 50001, 1 To 3) As Variant
  13.  
  14. arr(1, 1) = "ADI"
  15. arr(1, 2) = "SOYADI"
  16. arr(1, 3) = "TEL NO"
  17.  
  18. For i = 2 To 50001
  19. arr(i, 1) = i - 1 & " - zeki"
  20. arr(i, 2) = "gürsoy"
  21. arr(i, 3) = "5339999999"
  22. Next
  23.  
  24. With Me.Liste0
  25. '.ColumnCount = 3 'Array dan alınacağından gerek yoktur.
  26. .ColumnHeads = True
  27. .RowSourceType = "Liste_Doldur"
  28.  
  29. MsgBox FormatNumber(.ListCount - 1, 0) & " adet kayıt eklendi..", _
  30. vbInformation, "::..Zeki..::"
  31. End With
  32.  
  33. End Sub
  34.  
  35. Private Function Liste_Doldur( _
  36. ctl As Control, _
  37. varId As Variant, _
  38. lngRow As Long, _
  39. lngCol As Long, _
  40. intCode As Integer)
  41.  
  42. Select Case intCode
  43. Case acLBInitialize
  44. 'İstenirse burada array doldurulabilir..
  45. Liste_Doldur = True
  46.  
  47. Case acLBOpen
  48. 'Fonksiyonun bu tip kullanımında böyledir..
  49. Liste_Doldur = Timer
  50.  
  51. Case acLBGetRowCount
  52. 'Satır(kayıt) sayısı..(-1 belirsizdir)
  53. 'İstenirse sınır verilebilir...
  54. Liste_Doldur = -1
  55.  
  56. Case acLBGetColumnCount
  57. 'Sütun sayısı..(Dizinin ikinci boyutundan alınıyor)
  58. Liste_Doldur = UBound(arr, 2)
  59.  
  60. Case acLBGetColumnWidth
  61. 'Sütun genişliği..TWIP (Birinci sütun indexi "0" dır)
  62. Select Case lngCol
  63. Case 0 'Birinci sütun
  64. Liste_Doldur = 0.75 * 1440
  65. Case 1 'İkinci sütun
  66. Liste_Doldur = 1.2 * 1440
  67. Case 2 'Üçüncü sütun
  68. Liste_Doldur = 2 * 1440
  69. End Select
  70.  
  71. Case acLBGetFormat
  72. 'Sütun formatları..(Birinci sütun indexi "0" dır)
  73. Select Case lngCol
  74. Case 0 'Birinci sütun
  75. '
  76. Case 1 'İkinci sütun
  77. 'Tarih olsaydı..
  78. Liste_Doldur = "dd/mm/yyyy"
  79. Case 2 'Üçüncü sütun
  80. Liste_Doldur = "000 000 00 00"
  81. End Select
  82.  
  83. Case acLBGetValue
  84. 'Nihayet veri...(Dizinin kaçıncı indexinden listeye doldurulacağı tanımlanır)
  85. 'arr dizi tabanını "1" olarak belirlediğim için, "+1" kullanmalıyım...
  86. Liste_Doldur = arr(lngRow + 1, lngCol + 1)
  87.  
  88. Case acLBEnd
  89. ' Boş..(Gerekliyse başka birşey..)
  90. End Select
  91. End Function
  92.  
  93. Private Sub Form_Unload(Cancel As Integer)
  94. Erase arr
  95. End Sub




Eklenti Dosyaları
.rar   Listeye_Diziyle_Alma.rar (Boyut: 16,86 KB / İndirilme: 320)



  Alıntı
Bu mesajı beğenenler:
#2
Çok ilgi çekici bir çalışma, farklı bir deneme olmuş sevgili Zeki.. Aklına koyduğunu yaptın sonunda.. Wink



  Alıntı
Bu mesajı beğenenler:
#3
Teşekkürler... benim için de keyifli bir çalışma oldu.



  Alıntı
Bu mesajı beğenenler:
#4
He zamanki gibi çok hızlı ve değişik bir çalışma olmuş.
Teşekkürler Zeki Wink
Javascript
  1. this.setState({sign:"Here comes the sun...."})







  Alıntı
Bu mesajı beğenenler:
#5
sayın üstadlar bu konunun uygulandığı bir örneği yükleyebilir misiniz?
hem konuyu daha iyi anlayabilmek hem de örnek üzerinden kendi çalışmalarımda nasıl kullanabileceğime dair fikir yürütebilmek için.



  Alıntı
Bu mesajı beğenenler:
#6
(10-10-2009, 22:10)abkbek demiş ki: sayın üstadlar bu konunun uygulandığı bir örneği yükleyebilir misiniz?
hem konuyu daha iyi anlayabilmek hem de örnek üzerinden kendi çalışmalarımda nasıl kullanabileceğime dair fikir yürütebilmek için.

Örnek üzerinde çalışıyoruz;bittiğinde ekleyeceğiz.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
access-sql-12 Form Üzerinden Bir Dosyayı Farklı Klasöre Kopyalama Taruz 9 5.483 29-05-2014, 15:11
Son Mesaj: ali rıza özer
access-sql-9 sayfadaki degerleri farklı bir sayfaya atama hatice.haa 4 2.072 14-08-2012, 08:11
Son Mesaj: hatice.haa
  Farklı Bir ProgressBar Örneği. (Bilgi Çubuğu) Taruz 18 13.349 29-04-2012, 00:09
Son Mesaj: aliyorga
  salavat-ı şerifeler version 2(tasarım çok farklı) kurt26 4 3.267 14-12-2011, 10:23
Son Mesaj: d_rago_n

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi