• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü Acces'ten excel userform listbox a veri alma

Bu sorun verilen destek sayesinde çözüme ulaştırılmıştır.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

tukayf

Yeni Üye
Kullanıcı Bilgileri
Katılım
19 Eyl 2022
Mesajlar
418
Çözümler
9
Aldığı beğeni
97
Excel Versiyonu
Office 2019 TR
Konuyu Başlatan
Değerli hocalarım. Ekteki dosyada userform page2 deki listbox2 ye veri almak istiyorum. Hangi verilerin getirildiği önemli değil. Sadece bir örnek istiyorum, gerisini umarım kendim yapabilirim. Yapamazsam tekrar sorarım.
 

Ekli dosyalar

  • PTS.zip
    558.5 KB · Gösterim: 8
Çözüm
aşağıdaki kod işinize yarayabilir. önce RS.Open ile recordset açılır
sonra recordsetteki kayıt sayısına bakılır eğer kayıt sayısı 0 dan farklı ise listboxa atanır
RS.GetRows recordsetteki kayıtları diziye dönderir
ListBox2.ColumnCount = RS.Fields.Count'<==burada recordsetteki alan sayısına göre listboxtaki sütun sayısı belirtilir
If RS.RecordCount <> 0 Then Me.ListBox2.Column = RS.GetRows'eğer kayıt sayısı 0dan farklı ise atama yapılır
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
aşağıdaki kod işinize yarayabilir. önce RS.Open ile recordset açılır
sonra recordsetteki kayıt sayısına bakılır eğer kayıt sayısı 0 dan farklı ise listboxa atanır
RS.GetRows recordsetteki kayıtları diziye dönderir
ListBox2.ColumnCount = RS.Fields.Count'<==burada recordsetteki alan sayısına göre listboxtaki sütun sayısı belirtilir
If RS.RecordCount <> 0 Then Me.ListBox2.Column = RS.GetRows'eğer kayıt sayısı 0dan farklı ise atama yapılır
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Çözüm
Hocam yanıt için teşekkürler. Kod sadece bu kadar mı? ve bu kodu nereye uygulamam lazım. :(
 
Listboxa aktarma kodu sadece 2 satır tabi eğer siz listboxın sütun sayısını onceden ayarladıysanız sadece
If RS.RecordCount <> 0 Then Me.ListBox2.Column = RS.GetRows Satırı yeterli
 
Listboxa aktarma kodu sadece 2 satır tabi eğer siz listboxın sütun sayısını onceden ayarladıysanız sadece
If RS.RecordCount <> 0 Then Me.ListBox2.Column = RS.GetRows Satırı yeterli
Ben hiçbirşeyini ayarlamadım. Formda bulunan diğer userformdan uyarlamaya çalıştım ancak başaramayınca konu açmak zorunda kaldım.
 
kodu nereye uygulamam lazım.
Ben düğme ekleyip oraya yazmıştım siz verilerin ne zaman gelmesini istiyorsanız oraya eklersiniz
Isterseniz form yüklenirken - yanilmiyorsam initiliaze benzeri birseydi- çalıştırabilirsiniz
 
Hocam çok teşekkürler. Umarım sadece istenilen alanları döktürebilirim.
 
Bunun için recordsete sadece gerekli alanları çekmeniz yeterli
 
Hocam acces sorgudaki gibi alan adlarını alabilmemiz mümkün mü bunda?
 
Hocam acces sorgudaki gibi alan adlarını alabilmemiz mümkün mü bunda?
Tam olarak anlamadım? Eğer kastettiğiniz recordset ise evet sadece istediğiniz alanları alabilirsiniz.
strSQL = "Select * from [Personel]" sorgu kodu ile tüm alanlar alınırken
strSQL = "Select [ID], [TCNo], [ad] from [Personel]" gibi yazarak sadece gerekli alanlari alabilirsiniz. Alan adları virgül ile ayrılmalı
Not: alan isimlerini her zaman köşeli parantez içine almanıza gerek yok ama arada boşluk gibi şeyler olduğunda sorun çıkarabileceğinden kullanmaniz yerinde olur
 
Tam olarak anlamadım? Eğer kastettiğiniz recordset ise evet sadece istediğiniz alanları alabilirsiniz.
strSQL = "Select * from [Personel]" sorgu kodu ile tüm alanlar alınırken
strSQL = "Select [ID], [TCNo], [ad] from [Personel]" gibi yazarak sadece gerekli alanlari alabilirsiniz. Alan adları virgül ile ayrılmalı
Not: alan isimlerini her zaman köşeli parantez içine almanıza gerek yok ama arada boşluk gibi şeyler olduğunda sorun çıkarabileceğinden kullanmaniz yerinde olur
Select [ID], [TCNo], [ad]

Hocam listbox a aldıktan sonra bunları yeniden excele aktarmak istiyorum. Bu nedenle veritabanı alan adlarını başlık şeklinde excele aldırabilir miyiz diye sormuştum.
 
Tam olarak anlamadım
Recordsetten Alan adlarını almak için
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
benzeri bir kod kullanılabilir
Yada eğer alan adları ilk satıra sırayla eklenecekse
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
şeklinde kullanılabilir
 
Hocam mobildeyim inşallah yarın sabah deneyip dönüş yaparım.
 
Alan adlarını ilk satıra aldıramadım hocam. Belki de kodda ilave edeceğim yeri yanlış yaptım bilemiyorum.
 
Önce Rs.open ile recordseti açtiniz değil mi?
Yazdiginiz Kodu ekler misiniz?
 
PHP:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.


Hocam sizin yazdığınız kodları kullanıyorum. Bu kodda openden sonra ekledim ama hata verdi.
 
1 - kodu nereye yazdınız?
2 - nerede ne hatası verdi?
Dün eklediğiniz örnekte denemiştim veriler listboxa sorunsuz getirmişti.
 
Tam olarak anlamadım
Recordsetten Alan adlarını almak için
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
benzeri bir kod kullanılabilir
Yada eğer alan adları ilk satıra sırayla eklenecekse
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
şeklinde kullanılabilir


Hocam veriler geliyor. Sadece alan adlarını aldıramadım.
 
Alan adlarını nereye aldıracaksınız?
Ayrica Size önerdiğim kodu eklememişsiniz
 
Tekrardan merhabalar hocam. Hocam sizin kodlarınızı ekledim. İntranetten internete sürekli dosya taşımaktan yorulduğum için kodların ekli olduğu dosyayı ve kodu yazmadım.

Dim adoCN As ADODB.Connection
Dim RS As ADODB.Recordset
Dim strSQL As String
Dim i As Long, countRows As Long
' On Error GoTo ErrorHandler:
DatabasePath = ThisWorkbook.Path & "\VT.mdb"
Set adoCN = New ADODB.Connection
If Val(Application.Version) < 14 Then
adoCN.Provider = "Microsoft.Jet.OLEDB.4.0"
Else
adoCN.Provider = "Microsoft.ACE.OLEDB.12.0"
End If
adoCN.ConnectionString = DatabasePath
adoCN.Open
Set RS = New ADODB.Recordset
strSQL = "Select * from [Personel]"
RS.CursorType = adOpenKeyset
RS.LockType = adLockOptimistic
RS.ActiveConnection = adoCN
RS.Source = strSQL
RS.Open
for x=0 to rs.fields.count-1
SayfaAdi.cells(1, x+1)=rs(x).name
next x
ListBox2.ColumnCount = RS.Fields.Count
If RS.RecordCount <> 0 Then Me.ListBox2.Column = RS.GetRows
kodlar aynen bu şekilde ama alan adlarını excelin ilk satırına aldıramadım.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Konuyu okuyanlar

Geri
Üst