• 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ü Ado ile Kayıt problemleri

Bu sorun verilen destek sayesinde çözüme ulaştırılmıştır.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

OğuzTürkyılmaz

Yeni Üye
Kullanıcı Bilgileri
Katılım
12 Eyl 2021
Mesajlar
263
Çözümler
1
Aldığı beğeni
30
Excel Versiyonu
Office 365 TR
Konuyu Başlatan
Merhaba Herkese sağlıklı günler dilerim.
Öğrenme amaçlı uygulamamda normal kodlarla ekleme silme düzenleme işlemlerini yapabiliyorum. Aynı işlemlerin ADO ile nasıl yapıldığını öğrenmek istiyorum. Bu amaçla izlediğim videolardan ve çeşitli forumlardaki örneklerden yola çıkarak sayfaya kayıt yapmak konusunda bağlantı problemini çözdüm sayfa ya kayıt yapıyor mu evet yapıyor ama sadece 1 satır kayıt yapabiliyorum ve ikinci kaydı yapmak istediğimde, tc no aynı olmamasına rağmen aynıymış gibi davranıyor ve kaydı gerçekleştirmiyor. Optionbotton ve resim yolunun adoset ile nasıl kaydedilebileceğinin yolunu da henüz bulamadım. Son olarak ilginç bir şekilde yapılan kaydı silip tekrar kayıt yaptığımda son silinen kaydın boş satırının altına kaydı gerçekleştiriyor. :) Bu sorunlarla la ilgili çözümlerinizi paylaşırsanız çok memnun olurum. Teşekkürler.

Screenshot_1.png
 

Ekli dosyalar

  • ADO KAYIT.xlsb
    32.5 KB · Gösterim: 9
Aşağıdaki kodu deneyin.
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
ADO ile girilmiş kaydı, el ile silme işlemini, Delete veya sağ tıklayınca çıkan İçeriği Temizle seçeneği ile değil, sağ tıklayınca çıkan SİL seçeneği ile yapın.
 
Son düzenleme:
Çözüm
Aşağıdaki kodu deneyin.
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
ADO ile girilmiş kaydı, el ile silme işlemini, Delete veya sağ tıklayınca çıkan İçeriği Temizle seçeneği ile değil, sağ tıklayınca çıkan SİL seçeneği ile yapın.
Alicimri hocam gün içinde deneme şansım yok akşam evdeki bilgisayarda deneyip dönüş yapacağım. İlginiz için teşekkür ederim.
Sağolun.
 
Eğer bir sayfa ADO ile yönetilecekse başlıklarını yazmak dışında o sayfaya asla müdahale etmemelisiniz. İster manuel ister kod ile her iki durumda da sıkıntı çıkartır.
 
On Local Error Resume Next gibi hata durumunda devam etme kodlarını eklediğiniz için hata olmasına rağmen devam ediyor, bu nedenle de if her zaman >0 gibi kayıt var uyarısı veriyor.
Mevcut kodunuzda 2 hata saptadım;
1 - excel sayfasındaki TC alanın veri türü genel olarak tanımlandığından sizin girdiğiniz haliyle veri uyumsuz oluyor, metin alanına sayısal değer girilmeye çalışılıyor gibi,
O nedenle; ya TC alanı sayısal olarak ayarlanmalı yada sorgu kodunda kullandığınız TC değeri aşağıdaki gibi tırnak içine alınmalı
where tckimlik = '" & Me.TextBox_TcNo & "'"
2 -
CSS:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
bu 2 satıra gerek yok recordset zaten veri eklemeye uygun olarak açılmış ve halihazırda açık o nedenle tekrar açmaya çalıştığınızda hata veriyor. o 2 satırı silmeniz gerek.
Not: excelde maalesef gerçek anlamda kayıt silme mevcut değil o nedenle silmek istediğiniz kaydı aşağıdakine benzer bir kodla silerseniz yeni kayıt eklemede sorun çıkmaz
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Son düzenleme:
hata durumunda devam etme kodlarını On Local Error Resume Next eklediğiniz için hata olmasına rağmen devam ediyor
2 hata saptadım
1 - excel sayfasındaki TC alanı genel olarak tanımlandığından sizin girdiğiniz haliyle veri uyumsuz oluyor metin alanına sayısal değer girilmeye çalışılıyor gibi o nedenle ya TC alanı sayısal olarak ayarlanmalı yada sorgu koduna kullandığınız TC değeri aşağıdaki gibi tırnak içine alınmalı
where tckimlik = '" & Me.TextBox_TcNo & "'"
2 -
CSS:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
bu 2 satıra gerek yok recordset zaten veri eklemeye uygun olarak açılmış ve halihazırda açık o nedenle tekrar açmaya çalıştığınızda hata veriyor. o 2 satırı silmeniz gerek.
Not: excelde maalesef gerçek anlamda kayıt silme mevcut değil o nedenle silmek istediğiniz kaydı aşağıdakine benzer bir kodla silerseniz yeni kayıt eklemede sorun çıkmaz
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
halily hocam dün akşam fırsatım olmadı deneyemedim. İnşallah bu akşam dönüş yaparım
 
Eğer bir sayfa ADO ile yönetilecekse başlıklarını yazmak dışında o sayfaya asla müdahale etmemelisiniz. İster manuel ister kod ile her iki durumda da sıkıntı çıkartır.
aeGNoR hocam kafam karıştı. Peki hangi durumda ADO ile kayıt silme güncelleme gibi işlemler avantajlı yani ben basit projeler yapıyorum kendimce personeldi cari kayıtdı vs ama sayfaya müdahale ettirmemek için sayfadaki tüm kayıt bilgilerini Userformlardaki listboxlarda gösterip, sayfayı göstermiyorum kullanıcıya. Normal klasik kayıt işlemlerinden şaşmamak mı lazım.
 
aeGNoR hocam kafam karıştı. Peki hangi durumda ADO ile kayıt silme güncelleme gibi işlemler avantajlı yani ben basit projeler yapıyorum kendimce personeldi cari kayıtdı vs ama sayfaya müdahale ettirmemek için sayfadaki tüm kayıt bilgilerini Userformlardaki listboxlarda gösterip, sayfayı göstermiyorum kullanıcıya. Normal klasik kayıt işlemlerinden şaşmamak mı lazım.
Sayfanızda personel bilgilerinizi tuttuğunuzu varsayalım örnek olarak 10 tane personele ait bilgi tutuyorsunuz diyelim. 9. ve 10. personelin bilgilerini sayfaya girerek delete ile sildiniz diyelim. Bu durumda ADO o hücreleri kayıt yok olarak değil NULL ya da "" (boş) kayıt olarak görür. Dolayısıyla bir sayfada ADO kullanacaksanız Ekleme, Silme, Güncelleme gibi bütün işlemleri ADO ile yaptırmalısınız.

Fakat siz zaten böyle yapıyorsanız bu durumda hatayı sorgularda aramak gerekir. Fazla vaktim olmadığı için inceleyemedim ama göndermiş olduğunuz görüntüye göre sayfaya elle müdahale edilmiş gibi duruyor. 2. ve 7. satırlar arasındaki kayıtlar ADO ile silinmiş gibi değil elle silinmiş.
 
Personelin müdahalelerini istemiyorsanız, tablolarınızı başka bir Excel dosyasında veya Access dosyasında tutabilirsiniz. Şimdiki kodlarınızda küçük değişiklikle hal edebilirsiniz.
 
Sayfanızda personel bilgilerinizi tuttuğunuzu varsayalım örnek olarak 10 tane personele ait bilgi tutuyorsunuz diyelim. 9. ve 10. personelin bilgilerini sayfaya girerek delete ile sildiniz diyelim. Bu durumda ADO o hücreleri kayıt yok olarak değil NULL ya da "" (boş) kayıt olarak görür. Dolayısıyla bir sayfada ADO kullanacaksanız Ekleme, Silme, Güncelleme gibi bütün işlemleri ADO ile yaptırmalısınız.

Fakat siz zaten böyle yapıyorsanız bu durumda hatayı sorgularda aramak gerekir. Fazla vaktim olmadığı için inceleyemedim ama göndermiş olduğunuz görüntüye göre sayfaya elle müdahale edilmiş gibi duruyor. 2. ve 7. satırlar arasındaki kayıtlar ADO ile silinmiş gibi değil elle silinmiş.
sn@aeGNoR tamam şimdi anladım. Ben şu anda sadece kayıt etme ile ilgili kısmı yapmaya çalışıyorum silme ile ilgili herhangi bir işlemde bulunmadım.Kayıt etme olayını öğrendikten sonra sıra silmeye sonrada düzenleme bölümü ile ilgileneceğim. Bu konuda izninizle son bir şey sormak istiyorum. ADO kullanmanın avantajı nedir. Bir yazılımcı VBA da neden ADO kullanmayı tercih eder. Hızmı güvenlik mi tam olarak nedir faydası. Klasik vba kodları ile kaydetme silme güncelleme işlemlerini yapmak varken neden ADO. Biraz fazla soru oldu ama kusuruma bakmayın lütfen.
 
Personelin müdahalelerini istemiyorsanız, tablolarınızı başka bir Excel dosyasında veya Access dosyasında tutabilirsiniz. Şimdiki kodlarınızda küçük değişiklikle hal edebilirsiniz.
Alicimri hocam ado kaydetme silme güncelleme konularını öğrendikten sonra aslında amacım personel için ayrı, müşteri carileri için farklı vb dosyalarda bu işlemleri yapmak. Yani bir personel kaydettiğimde onu Personel adlı excel dosyasına, firmaları ayrı bir excel dosyasına kaydetmeyi, cari işlemler için keza, ayrı bir excel dosyasında çalışmak, onlara bağlanarak onlar üzerinde işlemleri gerçekleştirebilmek nihai amacım. Sırası geldikçe yavaş yavaş öğrenmeye çalışarak netten videoları izleyip dersleri takip ederek duvara tosladığımda da sizler sayesinde yardım alarak sonuçlandırırım inşallah.
 
On Local Error Resume Next gibi hata durumunda devam etme kodlarını eklediğiniz için hata olmasına rağmen devam ediyor, bu nedenle de if her zaman >0 gibi kayıt var uyarısı veriyor.
Mevcut kodunuzda 2 hata saptadım;
1 - excel sayfasındaki TC alanın veri türü genel olarak tanımlandığından sizin girdiğiniz haliyle veri uyumsuz oluyor, metin alanına sayısal değer girilmeye çalışılıyor gibi,
O nedenle; ya TC alanı sayısal olarak ayarlanmalı yada sorgu kodunda kullandığınız TC değeri aşağıdaki gibi tırnak içine alınmalı
where tckimlik = '" & Me.TextBox_TcNo & "'"
2 -
CSS:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
bu 2 satıra gerek yok recordset zaten veri eklemeye uygun olarak açılmış ve halihazırda açık o nedenle tekrar açmaya çalıştığınızda hata veriyor. o 2 satırı silmeniz gerek.
Not: excelde maalesef gerçek anlamda kayıt silme mevcut değil o nedenle silmek istediğiniz kaydı aşağıdakine benzer bir kodla silerseniz yeni kayıt eklemede sorun çıkmaz
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
halily hocam sayfadaki sütunu sayısal olarak ayarladığımda veri sayı olarak hücrede gözüküyor sorguda dediğiniz kodu uyguladığımda ise sonuç değişmedi metin olarak saklanan sayı formatında hücreye yazıldı. Yada ben
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
yanlış uyguladım
 

Ekli dosyalar

  • Screenshot_1.png
    Screenshot_1.png
    8.6 KB · Gösterim: 2
Alicimri hocam dün akşam fırsatım olmadı deneyemedim. İnşallah bu akşam dönüş yaparım
Alicimri hocam teşekkür ederim. Kodu uyarladım, optionbutton vardı formda onun değerini de kaydettirdim sayfaya ve kayıt olayını bitirdim. Kayıtları listboxa çektim. Şimdi listbox üzerinden kaydı düzenleme modunda açmak ve değişiklikleri kaydetme yada direk listbox üzerinden silme işlemlerini araştıracağım.
 
Oğuz abey ado kullanma sebebi bence kapalı dosyalar ile çalışmak için ideal ve kısa sorgu ile normal kodlardan daha iyi.Ama söylendiği gibi ado bazen örneğin başıma geldiği için örnek vereyim bir sütunda 100 adet tarih varsa bazılarını listboxa alırken boş olarak alıyordu gerçi onuda çözmüştüm ama örnek olsun diye yazdım.Access yada sql server gibi vt kullanılırsa ekleme silme vs... bunlarda ado ile hiç sorun olmaz çünkü alan türlerinden dolayı.
Ben kendimde dosyamda ado kullanıyorum gerçekten çok pratik.
Birde kapalı bir excelde ado ile satır silinemiyor ama access olursa siliniyor biliyorum.Kısaca ado bazen cinslik yapıyor bazen süper işe yarıyor.
 
Oğuz abey ado kullanma sebebi bence kapalı dosyalar ile çalışmak için ideal ve kısa sorgu ile normal kodlardan daha iyi.Ama söylendiği gibi ado bazen örneğin başıma geldiği için örnek vereyim bir sütunda 100 adet tarih varsa bazılarını listboxa alırken boş olarak alıyordu gerçi onuda çözmüştüm ama örnek olsun diye yazdım.Access yada sql server gibi vt kullanılırsa ekleme silme vs... bunlarda ado ile hiç sorun olmaz çünkü alan türlerinden dolayı.
Ben kendimde dosyamda ado kullanıyorum gerçekten çok pratik.
Birde kapalı bir excelde ado ile satır silinemiyor ama access olursa siliniyor biliyorum.Kısaca ado bazen cinslik yapıyor bazen süper işe yarıyor.
Refaz Hocam açıklamanız için teşekkür ederim. Kapalı dosyadan kastınız Proje klasörünün içindeki bir dosyada çalışırken aynı klasörün içindeki farklı dosyaları açmadan o dosyalara erişebilmek değil mi. Eğer öyleyse anladığım kadarıyla ana proje klasörümdeki bir userform üzerinden diğer klasörlerdeki sayfalara kayıt yapmakta sorun yok ama silme işleminde bir veri tabanı kullanmıyorsam sorun yaşayacağım. Hay allah bu kötü oldu şimdi.
 
Rica ederim abey.Kapalı dosyada silme için normal kodla excel açtırılıp sildirilip kodla kapatılır bu şekilde.Yani workbook.open olayı.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Konuyu okuyanlar

Geri
Üst