c# veya vb.net yardım arkadaşlar

Kodla Büyü

merkur

Aktif Üye
Mesajlar
158
merhaba arkadaşlar geliştirdiğim bi projenin bi yerinde takıldım kaldım iki gündür çözemedim internetten de bulamadım lütfen yardım edin :)

şimdi mssql de table_merkez diye bi tablom var burdaki kayıtları kaç kayıt varsa otomatik olarak label oluşturacak ve merkez alanındaki bilgileri tek tek o labellere yazdıracak umarım anlatabilmişimdir.

YAZDIĞIM KODLAR

Dim da As New SqlDataAdapter("select * from table_merkez", baglanti)
Dim dt As New DataTable
da.Fill(dt)

Dim lDizi As Label() = New Label(dt.Rows.Count) {}

For i As Integer = 0 To lDizi.Length - 1


lDizi(i) = New Label()
baglanti.Open()
Dim komut As New SqlCommand("select * from table_merkez", baglanti)
Dim oku As SqlDataReader
oku = komut.ExecuteReader
While oku.Read
lDizi(i).Text = oku("merkez")
End While
baglanti.Close()


Me.Controls.Add(lDizi(i))

Dim j As Integer = 8


lDizi(i).Top = i * 30


lDizi(i).Left = 20


lDizi(i).Width = 100
Next

KOD ÇALIŞINCA EKRAN GÖRÜNTÜSÜ

ekran.jpg
 
algoritması hatalı hocam,
bağlantı döngü içinde sürekli açılıyor ve hep ilk satırdaki veri geliyor sana
hem yüksek kaynak tüketiyorsun bu yöntemle hemde hatalı
üstte bağlanmışsın zaten
bence for döngünü kaldır
while ile kayıtlarda dön ve bir sayaç ile döndükçe labellara yazdır,
diziyide dinamik yaparsaın kayıtlarda döndükçe dizin genişler.
şimdi zamanım ve ortamım olmadığı için kodu yazamıyorum
 
hocam labelleri döndürmüşsünüz tamam. ama while döngüsünün içinde oku'nun tablosunu da satır satır döndürmeniz lazım.datatable veya datarow ile döndürebilirsiniz
 
teşekkürler hocam dediğiniz yöntemleri de bi deneyim. eğer olmazsa yine yardımcı olursanız çok sevinirim
 
Dim da As New SqlDataAdapter("select * from table_merkez", baglanti)
Dim dt As New DataTable
da.Fill(dt)

Dim lDizi As Label() = New Label(dt.Rows.Count) {}


baglanti.Open()
Dim komut As New SqlCommand("select merkez from table_merkez", baglanti)
Dim oku As SqlDataReader
oku = komut.ExecuteReader
While oku.Read
Dim i As Integer


MsgBox(oku("merkez"))



lDizi(i) = New Label()

lDizi(i).Text = oku("merkez")

Me.Panel1.Controls.Add(lDizi(i))
lDizi(i).Top = i * 20


lDizi(i).Left = 20


lDizi(i).Width = 100

End While
baglanti.Close()



bu kodlarla bütün kayıtları çekebiliyorum şimdi ama bu seferde label e atamıyorum ya kafayı yicem. sadece ilk kayıt gözüküyo diğerleri gözükmüyo
 
hocam
Dim i As Integer
bunu while dana önce yap
while içinde i=i+1
ile i yi arttır
 
BBNET
Geri
Üst