Liste Kutusunun Sutun Sayisinin Gelen Sonuca Gore Degismesi

1 2 3
04/05/2009, 13:33

adnanyurdakul

Sayın dengesiz
bak bu seferki sorun güzel ama şimdide örneğin garip
cevap Private Sub Metin0_AfterUpdate()
Dim Sql As String
sql = Metin0
Dim db As Database
Dim say As Integer
Dim rst As Recordset, intI As Integer
Dim fld As Field
say = 0
Set db = CurrentDb
Set rst = db.OpenRecordset(sql)
For Each fld In rst.Fields
say = say + 1

Next


Me.Liste2.RowSource = sql
Me.Liste2.RowSourceType = "table/query"
Me.Liste2.ColumnCount = say
Me.Liste2.ColumnWidth = 2
End Sub


ancak liste kutusunun satır kaynağı boş eleman sayısı default=1 de kalmalı
iyi çalışmalr
04/05/2009, 13:38

esrefigit

kodu bununla değiştir

Private Sub Metin0_AfterUpdate()
Me.Liste2.RowSource = ""
Dim Rs As New ADODB.Recordset
Dim Sql As String
Dim say As Integer
sql = Me.Metin0
Dim fld As ADODB.Field
Rs.Open sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
say = 0
For Each fld In Rs.Fields
say = say + 1
Me.Liste2.ColumnWidths = Me.Liste2.ColumnWidths & ";"
Next fld

Me.Liste2.ColumnCount = say
Rs.Close
Me.Liste2.RowSource = Me.Metin0
End Sub
özür adnan kardeş görmedim örneğine gelince garip değil yinelenmiş bir örnek aslında asıl örneği eklememiş yinelenmiş veritabanını eklemiş
04/05/2009, 13:45

okileturc

2 hocaya da tşk, harika çözüm ben de kullanacağım
04/05/2009, 14:04

dengesiz

Herkese tesekkur ederim cidden cok guzel bir paylasim ve ogrenim sitesi.
Sayin esrefigit kodlarinizi tekrar kontrol edebilir misiniz database baglantiniz hata veriyor.

Sayin adnanyurdakul sizin vermis oldugunuz ornekte de Select * from WLNDG yazdigimizda sutunlar oluyor ama genislikleri daraliyor ilgilenirseniz sevinirim.
04/05/2009, 14:45

Bilgisayarcı

Arkadaşlar bu örnekte çözümü yavaşlatmışsınız sanki.
İki örnekte sql'i 2 kere açıyor. bir kere alanları saymak için bir kere de rowsource olarak yanlıyor muyum?

Daha basit çözüm olarak (sanrıım daha da hızlı) metin0 içindeki texti parametre olarak alan bi rfonksiyon yazalım derim. İlk select - from arasındaki virgülleri sayıp birle toplarsa alan sayısı ortaya çıkar zaten.
fonksiyonun kilit noktası da aşağıdaki gibi olursa sorun yok
sayi=1
p=instr(1,sql,",")
while p>0
sayi=sayi+1
p= instr(1,sql,",")
sql= right(sql,len(sql)-p)
wend
sonuc=sayi+1


--

sonradan aklıma geldi gibi işlemlerde bu virgül olayı biraz saçmalar sanırım ama ( bularak onu da aşabilriz. Derdim sql'i iki defa açmamak. Eğer illa açıyorsak rowsource'u açtığımız dataset haline getirmeye yoğunlaşmak lazım. Küçük sorgularda sorun değil ama büyüklerinde bekleme süresi iki katına çıkar..
04/05/2009, 15:23

dengesiz

(04/05/2009, 14:45)Bilgisayarcı yazdı: Arkadaşlar bu örnekte çözümü yavaşlatmışsınız sanki.
İki örnekte sql'i 2 kere açıyor. bir kere alanları saymak için bir kere de rowsource olarak yanlıyor muyum?

Daha basit çözüm olarak (sanrıım daha da hızlı) metin0 içindeki texti parametre olarak alan bi rfonksiyon yazalım derim. İlk select - from arasındaki virgülleri sayıp birle toplarsa alan sayısı ortaya çıkar zaten.
fonksiyonun kilit noktası da aşağıdaki gibi olursa sorun yok
sayi=1
p=instr(1,sql,",")
while p>0
sayi=sayi+1
p= instr(1,sql,",")
sql= right(sql,len(sql)-p)
wend
sonuc=sayi+1


--

sonradan aklıma geldi

Sayin Bilgisayarcı verdigim eklenti uzerinde yapabilir misiniz ? nasil oldugunu gormemiz acisindan ?Tesekkurler
1 2 3