• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Excel'den Acces' e Kayıtta (') Kesme İşareti Sorunu

Katılım
8 Mart 2005
Mesajlar
77
Excel Vers. ve Dili
EXCEL 2003 TR
Selamlar

Ekte Gönderdiğim çalışmamda; Acces Veritabanına Excel Form Textboxlarda ( ' ) Kesme İşareti kullanılan verileri kaydetmek istediğimde aşağıdaki hata mesajını veriyor. ( ' ) Kesme İşareti olan verilerin hata vermemesi için nasıl bir kod yazmak gerekir. Herkese İyi Çalışmalar
 

Ekli dosyalar

  • hata.jpg
    hata.jpg
    20.3 KB · Görüntüleme: 5
  • hata.rar
    hata.rar
    18.8 KB · Görüntüleme: 4
  • veritabanı.rar
    veritabanı.rar
    307.2 KB · Görüntüleme: 6
Merhabalar,

Kesme (Tek tırnak) işareti ('), SQL sorgularının baş belasıdır :) Geçmişte birçok hacker (korsan), bu kesme işaretinin kerametinden defalarca yararlanmışlardır.

Kesme işaretini, SELECT, INSERT, UPDATE vs SQL komutlarından kullanmadan önce Replace yapmalısınız. Yani değiştirmelisiniz.

Öncelikle yapmanız gereken, ASCII karakter setinden kullanılmayan (veya hiç kullanılmayacağı düşünülen) bir karakter seçmektir.

Örneğin, ben bir dönem chr(133) yani Üç Nokta yanyana (...) karakterini kullanmıştım. Ama setin içerisinde bir sürü opsiyon var tercih sizin.

Eğer INSERT yapıyosanız, cümle çalıştırılmadan önce, "Replace" komutu ile Kesme İşaretlerini, belirlediğiniz karakter seti elemanı ile -örn chr(133)- değiştiriniz. Sonra, veriyi database'e gönderiniz.

EĞER SELECT yapıyorsanız, kriter olarak belirlediğiniz değerde (WHERE parametreleri) Kesme işaretlerini belirlediğiniz karekter setindeki elemana -örn chr(133)- döndürüp, komutu öyle çalıştırınız.

SELECT'ten sonra RecordSet'e gelen değer, Kesme İşaretli değil, belirlediğiniz karakterle gelecektir. Ekrana getirmeden önce de, bunları Kesme işaretine Replace etmelisiniz ki düzgün gözüksün.

İyi çalışmalar

.
 
Merhabalar,

Kesme (Tek tırnak) işareti ('), SQL sorgularının baş belasıdır :) Geçmişte birçok hacker (korsan), bu kesme işaretinin kerametinden defalarca yararlanmışlardır.

Kesme işaretini, SELECT, INSERT, UPDATE vs SQL komutlarından kullanmadan önce Replace yapmalısınız. Yani değiştirmelisiniz.

Öncelikle yapmanız gereken, ASCII karakter setinden kullanılmayan (veya hiç kullanılmayacağı düşünülen) bir karakter seçmektir.

Örneğin, ben bir dönem chr(133) yani Üç Nokta yanyana (...) karakterini kullanmıştım. Ama setin içerisinde bir sürü opsiyon var tercih sizin.

Eğer INSERT yapıyosanız, cümle çalıştırılmadan önce, "Replace" komutu ile Kesme İşaretlerini, belirlediğiniz karakter seti elemanı ile -örn chr(133)- değiştiriniz. Sonra, veriyi database'e gönderiniz.

EĞER SELECT yapıyorsanız, kriter olarak belirlediğiniz değerde (WHERE parametreleri) Kesme işaretlerini belirlediğiniz karekter setindeki elemana -örn chr(133)- döndürüp, komutu öyle çalıştırınız.

SELECT'ten sonra RecordSet'e gelen değer, Kesme İşaretli değil, belirlediğiniz karakterle gelecektir. Ekrana getirmeden önce de, bunları Kesme işaretine Replace etmelisiniz ki düzgün gözüksün.

İyi çalışmalar

.





Ferhat Bey Öncelikle İlginize Teşekkürler. Excel dostu Başka bir Hocanın Çözümünü Aynen aktarıyorum.

---------------------------------------
Kodlarınızın ilgili kısmını aşağıdaki gibi değiştirin.



Kod:
 eadsoyad = Text_Ad_Soyad.Value
    eTcVno = Text_TC_VNO.Value
    ebankSube = Text_Banka_Sube.Value
    eHesNo = Text_Hes_No.Value
    eVergiDaire = Text_Vergi_Da.Value
    Call baglanti
 
    'Fiş maddeleri veri tabanına yazılıyor--------------------------
    sorgu = "INSERT INTO MIF_DATA(ADI_SOYADI,TC_VERGI_NO,BANKA_SUBE,HESAP_NO,VERGI_DAIRE) Values ('" & AyracDuzenle(eadsoyad) & "','" & eTcVno & "','" & AyracDuzenle(ebankSube) & "','" & AyracDuzenle(eHesNo) & "','" & AyracDuzenle(eVergiDaire) & "')"



Ayrıca aşağıdaki kodları da ya bir modül içine ya da formun kod bölümüne kopyalayın.

Kod:
Public Function AyracDuzenle(Metin) As String
   AyracDuzenle = Replace(Metin, "'", "''")
End Function

Bu işlemleri yaptıktan sonra sıkıntı yaşamazsınız.

-----------------------------------------------------

Bu Çözümü Gönderen ÜstadaTekrar Buradan Teşekkürlerimi iletiyorum.
 
Geri
Üst