Access DB' de tarih alanlarını boş olarak güncellemek

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,172
Excel Vers. ve Dili
Office 2013 İngilizce
Merhabalar,
Excel ortamında Access db' de güncelleme yaparken;

BillDate ve DueDate alanları tarih formatında ve aşağıdaki sorguda güncelleme yapıyor, buraya kadar sorun yok;
yalnız arr dizide tarih alanları boş ise : arr(i, 4) =Empty , arr(i, 5) =Empty

DB' de bu alanları boş olarak güncellesin istiyorum ama; nasıl bir çözüm üreteceğimi bulamadım.

yardımlarınız için şimdiden teşekkürler,
iyi pazarlar.

Kod:
            For i = LBound(arr, 1) To UBound(arr, 1)
            
            bDate = CDate(arr(i, 4))
            pDate = CDate(arr(i, 5))
            
                SQL = "UPDATE " & tableName & " SET Bill=" & arr(i, 2) & ", BillDate=" & SQLDate(bDate) & _
                        ", Payment=" & arr(i, 3) & ", DueDate=" & SQLDate(pDate) & _
                        " Where ID= " & arr(i, 1)
                        
                cn.Execute SQL
            Next
Kod:
    Function SQLDate(tarih As Date)
    Dim Gun As String
    Dim ay As String
    Dim yıl As Integer
        Gun = Format(tarih, "dd")
        ay = Format(tarih, "mm")
        yıl = Format(tarih, "yyyy")

        SQLDate = "#" & ay & "/" & Gun & "/" & yıl & "#"

    End Function
Kod:
Sub Connect()
    Set cn = New ADODB.Connection

    With cn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Data Source = " & ThisWorkbook.Path & "\DB\Db.accdb"
        .Open cn
    End With
       
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,251
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Deneme şansım yok... Siz deneyip sonucu bildirirsiniz..

C++:
Function ToSQLValue(val As Variant) As String
    If IsEmpty(val) Or val = "" Then
        ToSQLValue = "NULL"
    Else
        ToSQLValue = val
    End If
End Function
C++:
    For i = LBound(arr, 1) To UBound(arr, 1)
        
        ' --- BillDate alanı ---
        If IsEmpty(arr(i, 4)) Or arr(i, 4) = "" Then
            bDate = "NULL"
        Else
            bDate = "#" & Format(CDate(arr(i, 4)), "yyyy-mm-dd") & "#"
        End If
        
        ' --- DueDate (PaymentDate) alanı ---
        If IsEmpty(arr(i, 5)) Or arr(i, 5) = "" Then
            pDate = "NULL"
        Else
            pDate = "#" & Format(CDate(arr(i, 5)), "yyyy-mm-dd") & "#"
        End If
        
        ' --- SQL oluşturma ---
        SQL = "UPDATE " & tableName & _
              " SET Bill=" & ToSQLValue(arr(i, 2)) & _
              ", BillDate=" & bDate & _
              ", Payment=" & ToSQLValue(arr(i, 3)) & _
              ", DueDate=" & pDate & _
              " WHERE ID=" & arr(i, 1)
        
        ' Sorguyu çalıştır
        cn.Execute SQL
    Next
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,172
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,

Deneme şansım yok... Siz deneyip sonucu bildirirsiniz..

C++:
Function ToSQLValue(val As Variant) As String
    If IsEmpty(val) Or val = "" Then
        ToSQLValue = "NULL"
    Else
        ToSQLValue = val
    End If
End Function
C++:
    For i = LBound(arr, 1) To UBound(arr, 1)
       
        ' --- BillDate alanı ---
        If IsEmpty(arr(i, 4)) Or arr(i, 4) = "" Then
            bDate = "NULL"
        Else
            bDate = "#" & Format(CDate(arr(i, 4)), "yyyy-mm-dd") & "#"
        End If
       
        ' --- DueDate (PaymentDate) alanı ---
        If IsEmpty(arr(i, 5)) Or arr(i, 5) = "" Then
            pDate = "NULL"
        Else
            pDate = "#" & Format(CDate(arr(i, 5)), "yyyy-mm-dd") & "#"
        End If
       
        ' --- SQL oluşturma ---
        SQL = "UPDATE " & tableName & _
              " SET Bill=" & ToSQLValue(arr(i, 2)) & _
              ", BillDate=" & bDate & _
              ", Payment=" & ToSQLValue(arr(i, 3)) & _
              ", DueDate=" & pDate & _
              " WHERE ID=" & arr(i, 1)
       
        ' Sorguyu çalıştır
        cn.Execute SQL
    Next
Çok teşekkürler Korhan Hocam
iyi ki varsınız !!
 
Üst