[VBA] Sql Içindeki Alanların Uyuşmaması
#1
access-sql-18 
Arkadaşlar kolay gelsin. Aşağıdaki ekleme sorgumda para birimi olarak tanımlı tablo alanlarını sayısal olarak giremiyorum. mecbur tek tırnaklı metin olarak tanımlarsam giriyor yoksa sorgu ile değişkenlerin sayılarının aynı olmadığı hatası alıyorum. Böyle olunca ilgili alanlarda veri olmadığında null atıyor ve hesaplarda sorun çıkartıyor. Buna nasıl çözeceğim? Çok ilginç ama sadece " & sozlesmefiyati & "  tanımı para olduğu halde böyle girmeme izin veriyor. Hatta tek tek tanımlama yaparak ilerledim ama para birimi alanına gelince takıldı kaldı. Mm



Visual Basic
  1. '########### GENEL MAHSUPLAŞMALAR
  2. Set db = CurrentDb
  3. Set rst = db.OpenRecordset("tbl_genel_mahsuplasmalar", dbOpenDynaset)
  4. With rst
  5.    Do While Not .EOF
  6.        Debug.Print ![id], ![hakedis_id], ![hakedis_no], ![ust_grup_id], ![hizmet_grubu], ![hizmet_turu], ![hizmet_sinifi], ![kesinti_yili], ![kesinti_ayi], ![mahsuplasma_tur_id], ![mahsuplasma_turu], ![mahsuplasma_tutari], ![durumu]
  7.        
  8.        If rst![ust_grup_id] = hizmetustgrupid And rst![kesinti_yili] = donemyil And rst![kesinti_ayi] = donemay Then
  9.        If rst![mahsuplasma_tur_id] = 1 And rst![durumu] = -1 Then sirketalacak = sirketalacak + rst![mahsuplasma_tutari]
  10.        If rst![mahsuplasma_tur_id] = 2 And rst![durumu] = -1 Then icra = icra + rst![mahsuplasma_tutari]
  11.        If rst![mahsuplasma_tur_id] = 3 And rst![durumu] = -1 Then ssk = ssk + rst![mahsuplasma_tutari]
  12.        If rst![mahsuplasma_tur_id] = 4 And rst![durumu] = -1 Then kisiborcu = kisiborcu + rst![mahsuplasma_tutari]
  13.         End If
  14.        .MoveNext
  15.    Loop
  16.    .Close
  17. End With
  18. Set rst = Nothing
  19. db.Close
  20. Set db = Nothing
  21.  
  22.        sirketalacak = sirketalacak
  23.        icra = icra
  24.        ssk = ssk
  25.        kisiborcu = kisiborcu
  26.      
  27.      
  28. Dim strSQL As String
  29. strSQL = "INSERT INTO tbl_hakedisler (hakedis_id, hakedis_no, donem_id, donem_yili, ay_id, donem_bs_tarihi, donem_bt_tarihi, donem_gun_sayisi, nihai_teklif_tarihi, tesis_acilis_tarihi, hizmet_ustgrup_id, hizmet_turu, hizmet_adi, kdv0, kdv8, kdv18, orijinalkullanim, eskaleorijinalkullanim, donem_kullanim, damga_vergisi, kullanim_kesintiler, kullanim_kesinti_tutari, elektrik_mahsuplasma, su_mahsuplasma, gaz_mahsuplasma, akaryakit_mahsuplasma, sirket_alacak, icra, ssk, kisi_borcu )"
  30. strSQL = strSQL & " VALUES (" & hakedisid & "," & hakedis_no & "," & donemid & "," & donemyil & "," & donemay & ",#" & Format(donembaslama, "MM\/DD\/YYYY") & "#,#" & Format(donembitis, "MM\/DD\/YYYY") & "#," & donemgunsayisi & ",#" & Format(nihaiteklif, "MM\/DD\/YYYY") & "#,#" & Format(tesisacilis, "MM\/DD\/YYYY") & "#," & hizmetustgrupid & "," & hizmetturu & ",'" & hizmetadi & "'"
  31. strSQL = strSQL & "," & kdv & "," & kdv & "," & kdv & "," & sozlesmefiyati & ",'" & eskalesozlesmefiyati & "','" & donemfiyati & "','" & damgavergisi & "','" & kesintiler & "','" & hesaplanankesintiler & "','" & elektrik & "','" & su & "','" & gaz & "','" & yakit & "','" & sirketalacak & "','" & icra & "','" & ssk & "','" & kisiborcu & "')"
  32.  
  33. CurrentDb.Execute (strSQL)





  Alıntı
Bu mesajı beğenenler:
#2
sorun çıkaran alanınız eskalesozlesmefiyatı alanınızla birebir aynı mı? tablonuzda bu 2 alan tanımlarında herhangi bir fark var mı?
Çünkü diyorsunuz ya sadece sozlesmefiyatı alanında sorun çıkarıyor diye? eskalesozlesmefiyatı  alanı da tahminimce aynı özellikte bir alan olması gerekiyor, onun için bu 2 alanı tabloda karşılaştırmanızı eğer var ise sorunlu alanı, eskalesozlesmefiyatı alanı ile birebir aynı yapmanız. Ayrıca formda da bu 2 alanı karşılaştırın, muhakkak bir farklılık vardır diye düşünüyorum. Bu önerilerimi yazarken eskalesozlesmefiyatı alanının doğru olarak tanımlandığını varsayıyorum.



  Alıntı
Bu mesajı beğenenler:
#3
merhaba.. onur_can üstadın önerisine ilaveten; sorun muhtemelen para birimi verisindeki ondalık ayracı. vba aktarımlarında virgül içeren alanlardaki veri, verilen sorgu içinde yeni bir alan olarak anlaşılıyor.. çözüm için sql cümlenizin içinde replace ile virgülleri noktaya çeviriniz..:

"," & replace(sozlesmefiyati,',','.') & " gibi..



  Alıntı
Bu mesajı beğenenler:
#4
Her ili öneri içinde teşekkür ediyorum arkadaşlarım. Lakin alanları özellikle tanımlarken birebir aynı olacak şekilde yaptım. Ancak taruz arkadaşımın dediği gibi galiba ondalık ifadedeki virgül olayı karıştırıyor. Sorudan önce değişkenleri int olarak veya currency olarak tanımadığım zaman bir hata ile karşılaşmadım. Teşekkür ediyorum.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [SORGU] Sorgu Ifadesi Içindeki Fonksiyon Ifade Içinde Kullanılamaz Hatası Mecnun24 7 664 27-08-2024, 16:53
Son Mesaj: Mecnun24
access-sql-18 Format([giris], "dd-mm-yyyy" Sorgu Ifadesi Içindeki Derleme Hatası. gncbil 5 601 07-06-2024, 10:48
Son Mesaj: dsezgin
  Excel Içindeki Tabloyu Access Vba Ile Refresh Etmek Hk. adnnfrm 2 528 05-08-2023, 02:23
Son Mesaj: adnnfrm
  Alt Formdaki Alanların kursun 3 346 10-01-2023, 20:28
Son Mesaj: BeyTor
  Alt Formdaki Alanların Yazı Boyutunu Küçültme Nasıl Yapabiliriz? kursun 2 451 09-01-2023, 20:46
Son Mesaj: kursun
  [FORM] Sürekli Form Düzeninde Her Kayıt Için Ayrı Ayrı Alanların Pasif Olması Hk. dormin 1 466 09-12-2022, 15:36
Son Mesaj: onur_can
  Rapor Içindeki Metin Kutusunun Yerini Koordinata Göre Değiştirme Hk. adnnfrm 1 386 30-01-2022, 00:34
Son Mesaj: dsezgin
  Görülmesi Istenilen Alanların Kullanıcı Tarafından Manuel Olarak Seçilmesi rerdem1903 2 532 11-10-2021, 16:21
Son Mesaj: rerdem1903

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi