• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Excelde Userfom Üzerinden Access Veri Tabanına Kayıt, Değiştir, Sil ve Listele

Katılım
15 Nisan 2008
Mesajlar
303
Excel Vers. ve Dili
2010
Arkadaşlar excelde sayenizde yapmış olduğum userformlu programı etkin bir şekilde kullanıyorum. Programda veritabanı olarak excelin kendisini kullanmaktayım, buda veri sayısı arttıkça dosyanın büyümesine ve programım geç açılma, geç kaydetme vs. sorunlar oluşturuyor. Bende veri girişini excel userform üzerinden ado ile Access üzerine depolamak istiyorum. yapmak istediklerimi birarada bulabileceğim bir örnek bulamadım. örnek dosya ektedir.


yapmak istediklerim

userform üzerindeki verileri access tablolara kaydetmek
kaydedilen verileri listview üzerinde listelemek
daha sonra kaydedilen verileri listview üzerinde çift tıklayarak textboxlara vs. getirtip değiştirme yapmak,
ve herhangi bir kayıtı userform üzerinden silmek.

örnek dosyada sadece veri kaydetme işlemini yapabildim.

Yardım ve yönlendirmelerinizi bekliyorum. Saygılarımla.
 

Ekli dosyalar

Cevabını vermek değilde , cevabına bakma hususunda
Bende takipteyim.:)
 
Selam,
Access ile bağlantı kurmak için aşağıdaki örneği inceleyiniz, Eylem sorgusu gönderirseniz sonucu uygular (Access tablosuna kayıt eklemek için INSERT INTO ... şeklinde sorgu gönderebilirsiniz)
SELECT sorgusu gönderirseniz sonucu istenen hücreye yazar, burdan listview alabilirsiniz, yada sonucu bir yere yazdırmaz rs recordseti üzerinden okutursunuz size kalmış


Sub Access_Getir(sQL As String, Optional Eylem_Sorgusu As Boolean = False, _
Optional Dosya As String = "\\krfheddcs\users$\mk\My Documents\Access-Excel Proj\Fatura.mdb", _
, Optional Yaz_Hucre As String = "A1")


'Tools/Referans olarak Microsoft ActiveX ve Microsoft ADO ekle
Dim i As Long
Dim cn
Dim rs
Dim s1 As Object




Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

cn.ConnectionString = "Driver={Microsoft Access Driver " _
& "(*.mdb)};Dbq=" & Dosya

cn.Open


Set rs = cn.Execute(sQL)



If Eylem_Sorgusu Then 'Eğer eylem sorgusu ise
Exit Sub 'bundan sonra devam etme alttaki satırlar seçme sorgu sonucunun ekrana yazdırılması ile ilgili
End If



Range(Yaz_Hucre).CopyFromRecordset rs

rs.Close
Set rs = Nothing

cn.Close
Set cn = Nothing

End Sub
 
Yalnız silme ve güncelleme sorguları için tabloda tekil anahtar bir alan bulundurmanız lazım
SIRA NO bunun için düşündüğünüz bir alansa sorun yok, yok bunu başka bir amaç için düşündüyseniz tabloya TCNO, personel no vb. gibi bir alan eklemelisiniz
 
Mevcut uygulamayı temizleyip şu an için örnek bir dosya gönderme imkanım yok, takıldığınız yer ile ilgili örnek sublar atabilir yada kodunuz üzerinden düzeltmelere/eklemelere yardımcı olmaya çalışabilirim ancak
 
Merhaba.
Listviewde gösterim ve kaydet konusu halloldu.
Kalanları yarın yaparım.
İsterseniz siz devamda edebilirsiniz.Dosya ektedir.
Kolay gelsin.:)
 

Ekli dosyalar

  • 59.zip
    59.zip
    55.8 KB · Görüntüleme: 121
Valla hocam size helal olsun, gecenin bu saatine kadar benim için uğraştığınız için, çok sağolun varolun.
 
Değerli hocam göndermiş olduğunuz dosyayı denedim, kayıtta sorun yok, veriler listviewde görüntüleniyor, ancak;

listviewde sadece ilk sütuna tıklanabiliyor, satırın tamamı seçilemiyor, ayrıca silme ve değiştirme işlemlerini de maalesef yapamadım. Saygılar.
 
Dosyanız hazır.
Ekte yolladım.
 

Ekli dosyalar

  • 59_2.zip
    59_2.zip
    60.4 KB · Görüntüleme: 175
hocam çok makbule geçti teşekkürler. sizden öğrenecek daha çok şey var. saygılar.
 
dll hatası

Dosyanız hazır.
Ekte yolladım.

merhabalar hocam sizin yapmış olduğunuz örnek dosyaları açıp kendime uyarlamak istiyordum. ancak ekli resimlerdeki hataları alıyorum yardımcı olursanız sevinirim.
 

Ekli dosyalar

  • dll hatası.jpg
    dll hatası.jpg
    20.5 KB · Görüntüleme: 33
  • excel hatası.jpg
    excel hatası.jpg
    20.9 KB · Görüntüleme: 23
Merhaba,

Sayın @AyYıldızım ve sayın @Orion1 ve dğer üstadlarım buradakine benzer bir sorunum var yeni konu açmak istemedim. Biraz uzun bir konu anlatayım. Aylık maliyetleri hesapladığımız bir Excel dosyam var. Her ay aynı excel dosyasını kopyalayıp adını güncelleyip ve içindeki değerleri de güncelleyip yeni maliyetleri hesaplıyoruz. Ve dosyada =A2, =Sayfa1!A87 ... gibi şeylerle yani fonksiyon kullanılmadan hesaplamalar yapılmış. Her ay onlarca karışıklık ve hatalar oluyor. Gözden kaçanlar oluyor. Mesela maliyetleri hesapladım, bütün ürünlerin maliyetlerinin hepsinin bir arada bulunduğu sayfaya =maliyet!a2 gibi bir yerden çektim veriyor. Ertesi ay aynı dosyayı kullanınca bu formül yine aynı yerden veriyi çekiyor fakat bu farklı bir ölçünün maliyeti olabiliyor. Ya da bu formül nereden gelmiş nedmiş bir bakayım diye etkileyenleri izle deyince 20-30 farklı sekmede geriye gittiğimi görüyorum. Atıyuorum dolar kuru Veriler sayfasında var, 2. sayfaya çekilmiş, 3. sayfaya 2. sayfadan çekilmiş, 21. sayfaya gelniş dolar kuruna ihtiyaç duyulmuş gidip ana kaynaktan değil de 3.sayfadan çekilmiş. İnşallah derdimi anlatabilmişimdir.

Şimdi benim isteğime gelelim. Her ay hesapladığım maliyetleri stok kodu bazında ya da ürün bazında veya herhangi bir sabit değere bağlayarak bir veri tabanına çekip. İstediğim zamanlarda o verileri doğru bir şekilde çekebilir miyim? Bunu yapabilmek için neleri bilmem gerek? Tecrübem ve bilgim yeterli değil bu konuda. Sziden alacağım fikirlerle bir şeyler yapmaya çalışacağım. Çalıştığım yerde Access kullanılmıyor sadece Excel ve Netsis var. Benim böyle bir isteğim için kimse para verip program da almaz. Yani veri tabanım da, hesaplama programım da Excel olmak zorunda.
 
Son düzenleme:
ListView olmadan bul değiştir ve sil işlemleri

Merhaba Sayın Orion1 ve diğer Üstadlarım

Ekli olan YONETIM dosyasında iki adet verilerin girileceği (FIRMA ve STOKKARTI) adında usurform olusturdum. Bu usurformlarda yapılan kaydet, güncelle / değiştir ve sil işlemlerinde dataların tutulacağı Veritabanı1 isminde birde mdb dosyası oluşturdum. Veritabanı1.mdb dosyasının içerisinde Tablo1 ve Tablo2 isminde tablolarım var. Yönetim dosyasındaki ‘’FIRMA’’ userform daki veriler Veritabanı1 deki ‘’Tablo1’’ STOKKARTI usurformundaki veriler ise Tablo2 ye kayıt edilecektir. Sizlerin oluşturmuş olduğu örneği incelediğimde verilerin kayıt, güncelle / değiştir ve sil gibi işlemleri ListView üzerinden seçerek yapılmakta. Benim istediğim ise Bu işlemleri ListView kullanmadan TextBox2 üzerinden yapması.
Bir diğer yapmayı düşündüğüm işlem ise STOKKART userformunda ComboBox2 -3 ve 4 veriyi (Tedarikçiyi seçip) Tablo1 den alıp, Yine Aynı Toblo1 üzerinde bulunan (ilgili kişi, Telefon Numarası ve e-mail) gibi verileri TextBox8 den başlayıp sırası ile ilgili bilgileri getirmesini istiyorum. Bu konuda yardımlarınızı esirgemeseniz minnettar olurum. Şimdiden yardımlarınız için teşekkür ederim.
 

Ekli dosyalar

Merhaba,

11 inci mesaj ekindeki dosyaya sorgulama alanıd a ekleyebilir miyiz ? isim bulmak için.
 
Merhaba,

11 inci mesaj ekindeki dosyaya sorgulama alanıd a ekleyebilir miyiz ? isim bulmak için.
Önceden referanslardan Microsoft ActiveX Data Objects 2.8 Library eklemelisiniz.
Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub CommandButton4_Click()
    Dim yol As String, dosya As String
    Dim baglan As New ADODB.Connection, ks As New ADODB.Recordset
    yol = ThisWorkbook.Path & "\"
    dosya = "Veritabani.mdb"
    Set baglan = New ADODB.Connection
    Set ks = New ADODB.Recordset
    baglan.Open "provider=microsoft.ace.oledb.12.0;data source=" & yol & dosya & ";"
    ks.Open "select * from [Tablo1] where [İsim] like '" & TextBox5.Text & "%';", baglan, adOpenKeyset, adLockReadOnly
    ListView1.ListItems.Clear
    If ks.RecordCount > 0 Then
        ks.MoveFirst
        For i = 1 To ks.RecordCount
            ListView1.ListItems.Add , , ks(0).Value
            ListView1.ListItems(i).SubItems(1) = ks(1).Value
            ListView1.ListItems(i).SubItems(2) = ks(2).Value
            ListView1.ListItems(i).SubItems(3) = ks(3).Value
            ks.MoveNext
        Next i
    End If
    ks.Close: baglan.Close
    Set ks = Nothing: Set baglan = Nothing

End Sub
 

Ekli dosyalar

Önceden referanslardan Microsoft ActiveX Data Objects 2.8 Library eklemelisiniz.
Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub CommandButton4_Click()
    Dim yol As String, dosya As String
    Dim baglan As New ADODB.Connection, ks As New ADODB.Recordset
    yol = ThisWorkbook.Path & "\"
    dosya = "Veritabani.mdb"
    Set baglan = New ADODB.Connection
    Set ks = New ADODB.Recordset
    baglan.Open "provider=microsoft.ace.oledb.12.0;data source=" & yol & dosya & ";"
    ks.Open "select * from [Tablo1] where [İsim] like '" & TextBox5.Text & "%';", baglan, adOpenKeyset, adLockReadOnly
    ListView1.ListItems.Clear
    If ks.RecordCount > 0 Then
        ks.MoveFirst
        For i = 1 To ks.RecordCount
            ListView1.ListItems.Add , , ks(0).Value
            ListView1.ListItems(i).SubItems(1) = ks(1).Value
            ListView1.ListItems(i).SubItems(2) = ks(2).Value
            ListView1.ListItems(i).SubItems(3) = ks(3).Value
            ks.MoveNext
        Next i
    End If
    ks.Close: baglan.Close
    Set ks = Nothing: Set baglan = Nothing

End Sub

Teşekkürler.

Ama ilginçtir program ekteki hatayı veriyor sebebi ne olabilir ?
 

Ekli dosyalar

  • Hata.JPG
    Hata.JPG
    64.5 KB · Görüntüleme: 21
Teşekkürler.

Ama ilginçtir program ekteki hatayı veriyor sebebi ne olabilir ?

Bende çalışıyor.
Debuga basın hangi satırı sarı renge boyadı ise o satırı buraya yapıştırın.
 
Bende çalışıyor.
Debuga basın hangi satırı sarı renge boyadı ise o satırı buraya yapıştırın.

ks.Open "select * from [Tablo1] where [İsim] like '" & TextBox5.Text & "%';", baglan, adOpenKeyset, adLockReadOnly

bu satırda yapıyor ama işin tuhaf kısmı tüm işlemlerde bu hatayı veriyor yeni kayıt girdiğimde alttaki satır hataya düşüyor

ks("İsim") = TextBox2.Text
 
Geri
Üst