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
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ş
2 hocaya da tşk, harika çözüm ben de kullanacağım
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.
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..