• DİKKAT !

    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 Dosya Yükleme tamamen ücretsizdir.

Çözüldü Kapalı Excel Dosyalarından ADO ve SQL Sorgusu (Left Join) ile Koşullu Veri Çekerken "Type Mismatch" ve Tarih Filtreleme Hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

yavuzali34

Yeni Üye
Aktivite

0%

Katılım
31 Ağu 2026
Mesajlar
4
Aldığı beğeni
0
Konu Sahibi
Windows 10 Google Chrome 152
Merhaba arkadaşlar, forumda bu spesifik türe rastlamadığım için sormak istedim.
Ağ sürücüsünde (Network üzerinde) duran ve personellerin sürekli güncellediği kapalı bir Excel dosyasından, ADODB.Connection ve Recordset kullanarak SQL sorgusu ile veri çekiyorum. Dosyayı açmadan arka planda işlem yapmak hız açısından harika oluyor.Ancak iki sorunla karşılaştım:
  1. Bağlantı kurduğum kapalı sayfadaki "Tarih" sütununa SQL üzerinden WHERE Fatura_Tarihi >= '01.01.2026' filtresi koyduğumda ya hiçbir veri gelmiyor ya da tarih formatı bölgesel ayarlardan dolayı sapıtıyor.
  2. Sorguda iki tabloyu LEFT JOIN ile bağladığımda, ID sütunundaki bazı değerler sayı bazıları metin olduğu için Type Mismatch (Tip Uyuşmazlığı) hatası alıyorum. Kapalı dosyaya müdahale edip hücre biçimini değiştiremiyorum.
Excel SQL (Jet/ACE OLEDB) motorunda bu tarz veri tipi uyuşmazlıklarını sorgu içinde (Örn: CSTR veya CDBL benzeri fonksiyonlarla) nasıl zorlarız ve hatasız tarih filtresini nasıl yazarız?
 
Windows 10 Microsoft Edge 152
left join ile ilgili 2 tablodan bahsetmişsiniz ama tek tablo var. diğer tabloyu da ekler misiniz?
mümkünse açık excelde kullandığınız kodları yada sadece ilgili kodları barındıran excel dosyasını da ekler misiniz?
 
Konu Sahibi
Windows 10 Google Chrome 152
halily hocam merhaba, hızlı dönüşünüz için çok teşekkür ederim.
Kusura bakmayın, aceleyle kullandığım kod bloğunu ve tabloların yapısını detaylandırmayı unutmuşum. İkinci bir dosya yüklemek yerine karmaşıklık olmaması adına tabloların kolon yapılarını ve yazdığım makroyu doğrudan buradan paylaşıyorum.
1) Tablo Yapılarım (İlişkilendirmek İstediğim Kolonlar):
  • 1. Tablo (Konuya eklediğim kapalı kaynak dosya): Sayfa adı Kaynak_Satislar. Sütunları: Musteri_ID (Gelişigüzel hem sayı hem metin girilmiş), Fatura_Tarihi (Formatlar karışık metin şeklinde) ve Satis_Tutari.
  • 2. Tablo (Ana Rapor Şablonum): Sayfa adı Merkez_Rapor. Sütunları: Musteri_ID (Sayısal formatta), Sirket_Adi, Bolge.
2) Kullandığım ve Hata Aldığım VBA Kod Bloğu:

HTML:
Apache config:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Extended Properties kısmına IMEX=1 eklememe rağmen bu veri tipi uyuşmazlığı hatasını (Type Mismatch) ve tarih filtresi krizini aşamadım. Jet/ACE OLEDB SQL motoru içinde bu veri tiplerini zorlayarak (CSTR, CINT veya #01/01/2026# gibi tarih kalıplarıyla) sorguyu nasıl revize etmeliyim? Değerli yardımlarınızı bekliyorum.
 
Windows 10 Microsoft Edge 152
tarih alanınız çok sıkıntılı sadece "/",".","-" ayraç farkından kaynaklanmıyor gün/ay/yıl yapıları da farklı kim yıl/ay/gün kimi ise gün/ay/yıl bunlar sorun çıkarabilir
aşağıdaki sorgu kodunu dener misiniz
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
joinle ilgili kodu ve tabloyu da paylaşır mısınız
 
Konu Sahibi
Windows 10 Google Chrome 152
halily hocam, elinize sağlık. Tarih filtresi için verdiğiniz sorgu mantığı harika çalıştı, o karmaşayı çözdü.
İstediğiniz LEFT JOIN kurgusunu ve veri tipi uyuşmazlığı (Type Mismatch) yaşadığım kod yapısını da şu şekilde detaylandırayım:
Ana rapor dosyamda (açık olan dosya) Merkez_Rapor adında bir sayfam var. Kapalı dosyada ise Kaynak_Satislar sayfası bulunuyor. Amacım; Musteri_ID sütunları üzerinden bu iki tabloyu sollu bağlamak. Ancak kapalı dosyada bazı ID'ler metin (Örn: "CARI_1004"), açık dosyada ise tamamen sayısal (Örn: 1001) olduğu için sorgu patlıyor.
Denediğim ama hata aldığım JOIN sorgu yapısı tam olarak şöyle

HTML:
ASP.net:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Bu bağlantıda ON M.Musteri_ID = K.Musteri_ID kısmında uyuşmazlık uyarısı alıyorum. Kapalı dosyaya müdahale edemediğim için, JOIN şartının içinde kapalı dosyadaki ID'leri sayıya veya açık dosyandaki ID'leri metne zorlayacak (VAL(), CSTR() veya VAL(K.Musteri_ID) benzeri) bir dönüşüm fonksiyonunu ACE OLEDB motoruna nasıl kabul ettirebiliriz?
Bu uyuşmazlığı aşacak son dokunuşunuzu rica ediyorum hocam.
 
Windows 10 Microsoft Edge 152
Son düzenleme:
Çözüm
Konu Sahibi
Windows 10 Google Chrome 152
halily hocam, tek kelimeyle harikasın, Sorun tamamen çözüldü.
Verdiğiniz cstr(M.Musteri_ID) = cstr(K.Musteri_ID) mantığını koda entegre ettim. İki taraftaki ID'leri de SQL içinde metne zorlayınca o inatçı Type Mismatch (Tip Uyuşmazlığı) hatasından eser kalmadı. Kapalı dosyaya hiç dokunmadan iki tabloyu arka planda saniyeler içinde sollu (LEFT JOIN) bağlamayı başardık.
Hem karmaşık tarih filtresi krizini hem de veri tipi çakışmasını sayenizde aşmış olduk. Bilginize, emeğinize ve sabrınıza çok teşekkür ederim hocam.
Saygılar.
 
Windows 10 Microsoft Edge 152
rica ederim )
iyi çalışmalar
not: aslında cevap zaten sorunuzda saklıydı
kapalı dosyadaki ID'leri sayıya veya açık dosyandaki ID'leri metne zorlayacak (VAL(), CSTR() veya VAL(K.Musteri_ID) benzeri) bir dönüşüm fonksiyonunu
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst