Userform ile databaseden veri çekip gösterme,yazdırma ve değ

Kulanıcı arayüz formu

Userform ile databaseden veri çekip gösterme,yazdırma ve değ

İleti#1)  CEMKKAYAA » 08 Oca 2023 18:50

Merhabalar;

Private Sub UserForm_Initialize()
Set con = CreateObject("adodb.connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source = " & ThisWorkbook.Path & "\Datalar.accdb"
Set rs = CreateObject("adodb.recordset")
rs.Open "SELECT ADI, SOYADI, PUAN FROM DATAM", con, 1, 1
If rs.RecordCount > 0 Then
With ListBox1
.ColumnCount = 3
.ColumnHeads = True
For i = 0 To rs.Fields.Count - 1
Cells(1, i + 1).Value = rs.Fields(i).Name
Next i
Range("a2").CopyFromRecordset rs
.RowSource = "Sayfa1!a2:c" & Sheets("Sayfa1").Range("c65536").End(3).Row
End With
End If
con.Close
Set rs = Nothing: Set con = Nothing
End Sub

böyle bir kodumuz var;

Fakat userform u gerek açarken gerek kapatırken sayfalar gözüktüğünden hoşuma gitmiyor.
Userform u kapatırken exceldeki sayfaları sildirmemiz mümkünmüdür. Yani database den verileri çekip excel e yazdırıp oradan userform lisboxda gösteriyoruz. programı kullanan kişinin excelde verilerin görmesini istemiyorum ayrıca excele yazdırdığımda sayfaya her ne kadar yenile butonu koysamda veriler değişmiyor.
Kullanıcı avatarı
CEMKKAYAA
 
Kayıt: 25 Arl 2022 23:36
Meslek: Tasarımcı
Yaş: 25
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul/Tuzla

Yıllık Maaş Bordrosu Hesaplama 2022

Cevap: Userform ile databaseden veri çekip gösterme,yazdırma

İleti#2)  arschimet » 09 Oca 2023 11:42

Merhabalar,
Hali hazırda bulunan database dosyasına bağlanıp verileri recordset e alıyorsunuz. Recordset ten direkt olarak listbox a aktarmak yerine neden excel sayfasına alıp oradan listboxa alıyorsunuz anlayamadım?
Excelde görünmesini istemiyorsanız, direkt olarak rs.getrows ile listbox'a verilerinizi alabilirsiniz.
Örnek;
Kod: Tümünü seç
Private Sub UserForm_Initialize()
Set con = CreateObject("adodb.connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source = " & ThisWorkbook.Path & "\Datalar.accdb"
Set rs = CreateObject("adodb.recordset")
rs.Open "SELECT ADI, SOYADI, PUAN FROM DATAM", con, 1, 1
If rs.RecordCount > 0 Then
With ListBox1
.Column = rs.GetRows
End If
con.Close
Set rs = Nothing: Set con = Nothing
End Sub
Kullanıcı avatarı
arschimet
Yeni Başlamış
 
Kayıt: 06 Ağu 2019 09:14
Meslek: Topoğraf
Yaş: 43
İleti: 12
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Konya

Cevap: Userform ile databaseden veri çekip gösterme,yazdırma

İleti#3)  CEMKKAYAA » 09 Oca 2023 11:49

Çünkü database başlıklarını da almak istiyorum. Sizin dediğiniz yöntemle başlıkları alamıyorum.
Kullanıcı avatarı
CEMKKAYAA
 
Kayıt: 25 Arl 2022 23:36
Meslek: Tasarımcı
Yaş: 25
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul/Tuzla

Cevap: Userform ile databaseden veri çekip gösterme,yazdırma

İleti#4)  abdrdvn » 09 Oca 2023 23:24

Excel sayfalarının görünürlüğünü değiştirmek için, Application.Visible özelliğini kullanabilirsiniz. Örneğin, aşağıdaki kodlar ile Excel uygulamasını gizleyebilirsiniz:
Application.Visible = False

Bunun tersi olarak, aşağıdaki kodlar ile Excel uygulamasını gösterebilirsiniz:


Application.Visible = True

Bu özellik, True veya False değerlerini alabilir.

UserForm'u açarken Excel sayfalarını gizlemek için, UserForm_Initialize eventinin çalıştırıldığı anda Application.Visible özelliğini False yapabilirsiniz.

UserForm'u kapatırken Excel sayfalarını göstermek için ise, UserForm_QueryClose eventinin çalıştırıldığı anda Application.Visible özelliğini True yapabilirsiniz. Bu event, kullanıcının formu kapatmak için kapatma işlemini gerçekleştirdiğinde çalıştırılır.
Private Sub UserForm_Initialize()
' Excel sayfaları gizlenir.
Application.Visible = False

Set con = CreateObject("adodb.connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source = " & ThisWorkbook.Path & "\Datalar.accdb"
Set rs = CreateObject("adodb.recordset")
rs.Open "SELECT ADI, SOYADI, PUAN FROM DATAM", con, 1, 1
If rs.RecordCount > 0 Then
With ListBox1
.ColumnCount = 3
.ColumnHeads = True
For i = 0 To rs.Fields.Count - 1
Cells(1, i + 1).Value = rs.Fields(i).Name
Next i
Range("a2").CopyFromRecordset rs
.RowSource = "Sayfa1!a2:c" & Sheets("Sayfa1").Range("c65536").End(3).Row
End With
End If
con.Close
Set rs = Nothing: Set con = Nothing
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Excel sayfaları gösterilir.
Application.Visible = True
End Sub
Verilerin sayfaya yazdırıldıktan sonra güncellenmemesi problemine gelirsek, ListBox'ın RowSource özelliğini veritabanından aldığınız verileri kullanarak değiştirin. Örneğin, aşağıdaki gibi bir kod yazabilirsiniz:
Private Sub UserForm_Initialize()
' Excel sayfaları gizlenir.
Application.Visible = False

Set con = CreateObject("adodb.connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source = " & ThisWorkbook.Path & "\Datalar.accdb"
Set rs = CreateObject("adodb.recordset")
rs.Open "SELECT ADI, SOYADI, PUAN FROM DATAM", con, 1, 1
If rs.RecordCount > 0 Then
With ListBox1
.ColumnCount = 3
.ColumnHeads = True

' Veritabanından aldığınız verileri kullanarak ListBox'ı doldurun.
.Clear
While Not rs.EOF
.AddItem
For i = 0 To rs.Fields.Count - 1
.List(.ListCount - 1, i) = rs.Fields(i).Value
Next i
rs.MoveNext
Wend
End With
End If
con.Close
Set rs = Nothing: Set con = Nothing
End Sub
Bu şekilde, ListBox'ı veritabanından aldığınız verilerle doldurursunuz ve bu veriler değiştiğinde ListBox otomatik olarak güncellenir.
Ayrıca, Excel sayfalarına verileri yazdırmak yerine, verileri ListBox'ın List özelliğini kullanarak doldurabilirsiniz. Bu şekilde, veriler Excel sayfalarına yazdırılmaz ve sadece ListBox'ta görüntülenir.
Private Sub UserForm_Initialize()
' Excel sayfaları gizlenir.
Application.Visible = False

Set con = CreateObject("adodb.connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source = " & ThisWorkbook.Path & "\Datalar.accdb"
Set rs = CreateObject("adodb.recordset")
rs.Open "SELECT ADI, SOYADI, PUAN FROM DATAM", con, 1, 1
If rs.RecordCount > 0 Then
With ListBox1
.ColumnCount = 3
.ColumnHeads = True

' Veritabanından aldığınız verileri kullanarak ListBox'ı doldurun.
.Clear
While Not rs.EOF
.AddItem
For i
Private Sub UserForm_Initialize()
' Excel sayfaları gizlenir.
Application.Visible = False

Set con = CreateObject("adodb.connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source = " & ThisWorkbook.Path & "\Datalar.accdb"
Set rs = CreateObject("adodb.recordset")
rs.Open "SELECT ADI, SOYADI, PUAN FROM DATAM", con, 1, 1
If rs.RecordCount > 0 Then
With ListBox1
.ColumnCount = 3
.ColumnHeads = True
' Veritabanından aldığınız verileri kullanarak ListBox'ı doldurun.
.Clear
While Not rs.EOF
.AddItem
For i = 0 To rs.Fields.Count - 1
.List(.ListCount - 1, i) = rs.Fields(i).Value
Next i
rs.MoveNext
Wend
End With
End If
con.Close
Set rs = Nothing: Set con = Nothing
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Excel sayfaları gösterilir.
Application.Visible = True
End Sub

Bu şekilde, veriler sadece `ListBox`'ta görüntülenir ve Excel sayfalarına yazdırılmaz.
Kullanıcı avatarı
abdrdvn
 
Kayıt: 09 Oca 2023 23:10
Meslek: öğrenci
Yaş: 20
İleti: 7
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: samsun

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: Userform ile databaseden veri çekip gösterme,yazdırma

İleti#5)  CEMKKAYAA » 23 Oca 2023 11:43

Merhabalar;

öncelikle vermiş olduğunuz bilgiler için çok teşekkür ederim fakat.
sizin yazmış olduğunuz kodlar ile yaptığımda veritabanındaki başlıkları alamıyorum aslam bile sayfayı aşağı indirdiğimde başlıklar sabit kalmıyor.
Kullanıcı avatarı
CEMKKAYAA
 
Kayıt: 25 Arl 2022 23:36
Meslek: Tasarımcı
Yaş: 25
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul/Tuzla


Forum UserForm

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 1 misafir

Bumerang - Yazarkafe