Userform textboxt sayı verisinde yapılan değişikliğin access veritabanına giderken tür uyuşmazlığı hatası vermesi

Katılım
8 Aralık 2013
Mesajlar
9
Excel Vers. ve Dili
2016 Türkçe
Excel Userform üzerinden çok sayıda textbox vasıtası ile değer alıp access veritabanına kayıtlar yapan bir program üzerinde çalışıyorum.
Accesste veri tipi sayı olarak belirtilen hücrelere kayıt düzeltmesi yaparken userform texboxta sayı varsa kaydet/güncelle butonu sorunsuz çalışıyor ancak;
Sayı verisi gönderilmesi gereken hane boşsa tür uyuşmazlığı hatası veriyor.
On error resume next ifadesini yazarsam program hatasız çalışıyor ancak daha önceden sayı girilmiş haneyi boş hane olarak düzelttiğimde düzeltme işlemi yapmıyor. Kayıt güncellendi demesine rağmen eski sayı verisi yerinde kalıyor.
Sabahtan beri bunla uğraşıyorum yardımlarınıza muhtacım.


Kod:
Private Sub bt_kaydet_Click()
    Dim baglanti As New ADODB.Connection
    Dim rs As New ADODB.Recordset

    baglanti.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & yol & ""
    
    sorgu = "SELECT * FROM envyas WHERE tesis_id=" & Me.Label11.Caption

    rs.Open sorgu, baglanti, adOpenKeyset, adLockOptimistic
'  On Error Resume Next
        For k = 1 To 28
            rs.Update (k), Me.Controls("box" & k + 9).Value
        Next k

    rs.Close
    baglanti.Close
    MsgBox "Kayıt güncellendi", vbInformation
    Unload Me
End Sub
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,344
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Merhaba "Update" metodunu opsiyonel iki parametresi vardır; bunlar da "Array", yani dizi tipindedir. Klasik yöntem değil de, Update metodunu tek celsede kullanmak isterseniz, aşağıdaki gibi önce kolon isimleri ve değerleri olarak iki dizi hazırlamanız gerekiyor.

C#:
dim arnames(27), arvalues(27)

for k = 1 to 28
    arnames(k - 1) = rs(k - 1).name
    arvalues(k - 1) = Me.Controls("box" & k + 9).Value
next

rs.update arnames, arvalues
.
 
Katılım
8 Aralık 2013
Mesajlar
9
Excel Vers. ve Dili
2016 Türkçe
Zeki bey verdiğiniz bilgi için teşekkür ederim. Malesef aynı sonucu alıyorum. Access veri tabanındaki veri türünü sayı yerine kısa metin yapmaktan başka aklıma başka çözüm gelmiyor.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,344
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
İlk mesajınızda boş kutuların boş olabileceğinden bahsetmiştiniz. Ben bu detayı kaçırdım; aşağıdaki gibi deneyin...

Kod:
dim arnames(27), arvalues(27)

for k = 1 to 28
    arnames(k - 1) = rs(k - 1).name
    arvalues(k - 1) = iif(Me.Controls("box" & k + 9).Value = "", 0, Me.Controls("box" & k + 9).Value)
next

rs.update arnames, arvalues
.
 
Katılım
8 Aralık 2013
Mesajlar
9
Excel Vers. ve Dili
2016 Türkçe
Zeki bey son mesajınızdaki kodları deneme ihtimalim kalmadı. Malesef Accessteki veri türlerinin hepsini metin tipine dönüştürdüm. Programda verileri excele rapor şeklinde döken bir bölüm var. Excele döktükten sonra sütunun tamamını seçip sayıya dönüştür deyince tüm veriler sayı şekline dönüşüyor, matematiksel işlem yapabiliyorum. İnşallah metin tipi değişkenler programın ileriki safhasında başıma bela olmaz. Yardımcı olmaya çalıştığınız için teşekkür ederim.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,344
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Açtığınız başlıklara yeni mesaj gelip gelmediğini sık sık kontrol etmenizi tavsiye ederim. Bu ve bunun gibi köklü değişikliklere gerek kalmayabilirdi.

Kolay gelsin...

.
 
Üst