• 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ü Userforma Yeni Alan ekleme sonrası acces kaydetme sorunu

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
Merhabalar hocalarım. Userforma yeni alan ekledim. Ancak yeni alanı acces e kaydettiremiyorum. Kodları kısaltma sonrası oluşan bir durum oluştu. İlgilenebilirseniz sevinirim.
 
Çözüm
sorun; for each kullandığınızda ID alanını da güncellemeye çalışması. oysa ID alanı otomatik tamsayı alanı yani ne eklemede ne de güncellemede siz bu alanın değerini belirleyemezsiniz eğer for each kullanacaksanız kodu aşağıdaki şekilde düzenlemelisiniz
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
eğer for x kullanacaksanız
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Not: eğer for x kullanacaksanız alan sayısını RS.Fields.Count - 1 ile otomatik olarak belirleyebilirsiniz
Değerli hocalarım güncelleme kodundaki kalın karakterli alanı nasıl düzeltebilirim. Bu kısmı çözemedim.

Private Sub GUNCELLEME_YAPSANA_Click()
'GÜNCELLE
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
' Office 2007 ve alt surumler icin Provider olarak "Jet.OLEDB.4.0", sonrasi icin "ACE.OLEDB.12.0" kullan...
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] where [ID]=" & ID
RS.CursorType = adOpenKeyset
RS.LockType = adLockOptimistic
RS.ActiveConnection = adoCN
RS.Source = strSQL
RS.Open
guncelle.Value = Date
For Each fld In RS.Fields
RS(fld.Name) = Controls(fld.Name)
Next fld


RS.Update
If RS.State = 1 Then
RS.ActiveConnection.Close
End If
MsgBox "İşlem tamamlandı!...", vbInformation, "...Koruma Şube Personel Bilgi Sistemi..."
If adoCN.State = 1 Then adoCN.Close
Set RS = Nothing
'Call RefreshForm
ExitHere:
temizle
Set RS = Nothing
Set adoCN = Nothing
Exit Sub
ErrorHandler:
MsgBox "Error No: " & Err.Number & vbCrLf & vbCrLf & _
Err.Description & vbCrLf & vbCrLf & "Source: " & Err.Source, vbApplicationModal, "...Koruma Şube Personel Bilgi Sistemi..."
GoTo ExitHere:
End Sub
Not : KVKK Nedeni ile dosya silinmistir.
 
Eklediğiniz yeni alanın özellği ne?
Nesne turu ne
 
Combobox eklemiştim ama textbox a da dönüştürebilirim. Güncelleme yaptıramadım. Daha önce sn. Balta nın kodlarını kullanıyordum. Başlıklar şeklindeki ancak yeni alan ekleyince o koda da ilave ettim ancak çözemedim.
Alan özelliği kısa metin.
 
Comboboxin kaç sütunu var?
Ayrıca alan adı ıle nesne adı birebir aynı mi? Alan adı ne, nesne adı ne
Combodan değer seçilmiş mi?
Şu an hata mesajı mi veriyor yoksa hata uyarısı vermemesine rağmen işlem mi yapmiyor?
Hata mesajı veriyorsa nerede ne mesajı veriyor
 
Merhabalar sn. halily. Hata mesajı vermiyor. Combobox tek sütun. Alan adı Nufus_ilce, nesne adı Nufus_ilce.
Combodan değer seçip seçmeme değiştirmiyor. Kayıtları güncellemiyor. Uyarı mesajı yok.
Kayıt yapıyorum, siliyorum ancak güncelleme yapamıyorum. Hiç bir şekilde.
For i = 0 To 109
RS(baslik(i)) = Controls(baslik(i))
Next i
daha önce bu kodu kullanıyordum. Yeni alandan sonra güncelleme yapmama rağmen kodda. Veritabanında güncelleme yaptıramadım
 
Merhaba, Access ve Excel dosyanızda değiştirmeniz gereken yerler.
Acces
1- Personel isimli tabloyu tasarım görünümünde açıp Nufus_ilce ve guncelle başlıklarının yerini değiştirmelisiniz.
1670839022370.png

Excel
1-Module2 içindeki kodlarda başlıkları 0 dan sıralama yapmışınız ancak Personel tablosunda 0 ID kolonuna denk gelir.
Buradaki sıralamayı 1 den başlatırsanız sondaki Nufus_ilce başlığı 111. sırada olur ve Nufus_ilce yi çift tırnak içinde yazmalısınız.

2- Kaydet işlemindeki döngüyü de For i = 1 To 111 olarak kullanmalısınız.
 
Deneyiniz.



Not : KVKK Nedeni ile dosya silinmistir.
 
Sn. Balta son alanı eklemeden de 110 du sayı. Son alanı ekledikten sonra 111 yaptım ama hata verdi nerde yanlış yapmışım.
 
Merhaba, Access ve Excel dosyanızda değiştirmeniz gereken yerler.
Acces
1- Personel isimli tabloyu tasarım görünümünde açıp Nufus_ilce ve guncelle başlıklarının yerini değiştirmelisiniz.
Ekli dosyayı görüntüle 13966

Excel
1-Module2 içindeki kodlarda başlıkları 0 dan sıralama yapmışınız ancak Personel tablosunda 0 ID kolonuna denk gelir.
Buradaki sıralamayı 1 den başlatırsanız sondaki Nufus_ilce başlığı 111. sırada olur ve Nufus_ilce yi çift tırnak içinde yazmalısınız.

2- Kaydet işlemindeki döngüyü de For i = 1 To 111 olarak kullanmalısınız
Hocam çift tırnağı sonra fark edip düzelttim ama yine de çözememiştim.
 
sorun; for each kullandığınızda ID alanını da güncellemeye çalışması. oysa ID alanı otomatik tamsayı alanı yani ne eklemede ne de güncellemede siz bu alanın değerini belirleyemezsiniz eğer for each kullanacaksanız kodu aşağıdaki şekilde düzenlemelisiniz
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
eğer for x kullanacaksanız
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Not: eğer for x kullanacaksanız alan sayısını RS.Fields.Count - 1 ile otomatik olarak belirleyebilirsiniz
 
Son düzenleme:
Çözüm
sorun; for each kullandığınızda ID alanını da güncellemeye çalışması. oysa ID alanı otomatik tamsayı alanı yani ne eklemede ne de güncellemede siz bu alanın değerini belirleyemezsiniz eğer for each kullanacaksanız kodu aşağıdaki şekilde düzenlemelisiniz
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
eğer for x kullanacaksanız
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Not: eğer for x kullanacaksanız alan sayısını RS.Fields.Count - 1 ile otomatik olarak belirleyebilirsiniz
Hocam çok teşekkür ederim. Zihninize sağlık.

Çözüme katkı veren diğer hocalarıma da çok teşekkürler.
 
Sn. Balta son alanı eklemeden de 110 du sayı. Son alanı ekledikten sonra 111 yaptım ama hata verdi nerde yanlış yapmışım.
Basliklar makrosu 111 satır tanımlama var ancak dizimiz 0 dan başlıyor ve 110 da bitiyor. Yani yine 111 veri var ama dizi eleman sıralama düzeni gereği böyle olmaktadır.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Konuyu okuyanlar

Geri
Üst