Vba ile Acces Kayıt Ekleme/Değiştirme

leonadies

Excel Derya Deniz Bizde Kulaç Atmaya Çalışıyoruz:)
Altın Üye
Katılım
12 Şubat 2015
Mesajlar
520
Excel Vers. ve Dili
Office 2016 TR 64 Bit Windows
Altın Üyelik Bitiş Tarihi
01-02-2027
Arkadaşlar Merhaba

Acces Veritabanına Kayıt yapıyorum. İki sutun var A ve B
A sutunu birincil anahtar
B sütunu verileri değişebiliyor.

İsteğim şu A sutunundaki Sipariş numarası ACCES de yoksa eklesin, varsa sadece ona bağlı B satırını güncellesin.

Ekleme çalışıyor sorun yok ancak değiştirme için kodu nasıl revize etmeliyim.?

Dosyalarımı ekledim

ResimAcces.jpg



Kod:
 Dim Conn As ADODB.Connection
 Dim Rs As ADODB.Recordset
    Dim ConnString As String
    Dim DosyaYolu As String
    Dim satir As Long
    Dim SAYFA As Worksheet
    DosyaYolu = "\\NAS\Sistem\01-Data\SiparislerDBO.accdb"
    ConnString = "Provider=Microsoft.ace.OLEDB.12.0; Data Source=" _
    & DosyaYolu & ";"

Set Conn = New ADODB.Connection
Conn.Open ConnectionString:=ConnString

Set Rs = New ADODB.Recordset
    Rs.Open "SiparisTBL", Conn, adOpenKeyset, adLockOptimistic, adCmdTable

    satir = 2    ' the start row in the worksheet
    
    Set SAYFA = Sayfa1
    SAYFA.Activate
' yaz
    Do While Not IsEmpty(SAYFA.Range("A" & satir))

        With Rs
            .AddNew    ' create a new record
            .Fields("SiparisNo") = SAYFA.Range("A" & satir).Value
            .Fields("UrunAd") = SAYFA.Range("B" & satir).Value
            .Update
        End With
        satir = satir + 1
    Loop
    
    Rs.Close
    Set Rs = Nothing
    Conn.Close
    Set Conn = Nothing
End Sub
 

Ekli dosyalar

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub accesseyaz()

    Dim Conn As ADODB.Connection
    Dim Rs As ADODB.Recordset
    Dim ConnString As String
    Dim DosyaYolu As String
    Dim satir As Long
    Dim SAYFA As Worksheet
    DosyaYolu = "\\NAS\Sistem\01-Data\SiparislerDBO.accdb"
    DosyaYolu = ThisWorkbook.Path & "\SiparislerDBO.accdb"
    ConnString = "Provider=Microsoft.ace.OLEDB.12.0; Data Source=" _
                 & DosyaYolu & ";"

    Set Conn = New ADODB.Connection
    Conn.Open ConnectionString:=ConnString

    Set Rs = New ADODB.Recordset
    satir = 2    ' the start row in the worksheet

    Set SAYFA = Sayfa1
    SAYFA.Activate
    ' yaz
    Do While Not IsEmpty(SAYFA.Range("A" & satir))
        Rs.Open "SELECT * FROM SiparisTBL WHERE SiparisNo='" & SAYFA.Range("A" & satir).Value & "'", Conn, 2, 3

        With Rs
            If (.EOF Or .BOF) Then
                .Close
                .Open "SiparisTBL", Conn, 2, 3
                .AddNew
                .Fields("SiparisNo") = SAYFA.Range("A" & satir).Value
                .Fields("UrunAd") = SAYFA.Range("B" & satir).Value
                .Update
            Else
                If .Fields("UrunAd") <> SAYFA.Range("B" & satir).Value Then
                    .Fields("UrunAd") = SAYFA.Range("B" & satir).Value
                    .Update
                End If
            End If
            .Close
        End With
        satir = satir + 1
    Loop

    Set Rs = Nothing
    Conn.Close
    Set Conn = Nothing
End Sub
 

leonadies

Excel Derya Deniz Bizde Kulaç Atmaya Çalışıyoruz:)
Altın Üye
Katılım
12 Şubat 2015
Mesajlar
520
Excel Vers. ve Dili
Office 2016 TR 64 Bit Windows
Altın Üyelik Bitiş Tarihi
01-02-2027
Ellerine sağlık üstadım harika olmuş :) @veyselemre
 
Üst