Adodb.Recordset Open olayında gelen No value is given for one or more required parameters. hatası

Katılım
16 Ağustos 2004
Mesajlar
137
Excel Vers. ve Dili
Office 2010 En 64 Bit
Merhaba Arkadaşlar, yıllar önce yazduğum bir sorgunun benzeri için ekli dosyayı oluşturdum,

Kod:
Private Sub UserForm_Initialize()
Dim SQL As String
Dim BasTarih As Long, BitTarih As Long
Dim VTSonSatir As Long
Dim ADO_RS As ADODB.Recordset
Dim ADO_CN As ADODB.Connection
Dim ToplamTutar As Double
'
ToplamTutar = 0
VTSonSatir = Sheets("DetayVeri").Cells(1048576, 8).End(xlUp).Row
BasTarih = Cells(1, Selection.Column)
BitTarih = Cells(2, Selection.Column)
SQL = "SELECT TARIH, NAKIT_AKIS_KODU, HESAP_KODU, HESAP_ADI, ACIKLAMA, Doviz_TL, Doviz_USD, Doviz_EURO "
SQL = SQL & vbCrLf
SQL = SQL & "FROM [DetayVeri$E10:AH" & VTSonSatir & "] "
SQL = SQL & vbCrLf
SQL = SQL & "WHERE SUBE_UNVAN = '" & Cells(Selection.Row, 11) & "' "
SQL = SQL & "AND RaporGrupKodu = '" & Cells(Selection.Row, 12) & "' "
SQL = SQL & "AND YilAyGun Between " & BasTarih & " AND " & BitTarih & " "
SQL = SQL & vbCrLf
SQL = SQL & "ORDER BY TARIH "
Cells(1, 1) = SQL
'
Set ADO_RS = New ADODB.Recordset

Set ADO_CN = New ADODB.Connection
ADO_CN.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.FullName & ";extended properties=""excel 8.0;hdr=yes"""
ADO_CN.Open
ADO_RS.Open SQL, ADO_CN, 3, 1
'
'   Eğer Hiç Kayıt Yoksa
    If ADO_RS.RecordCount = 0 Then
    ADO_RS.Close
    ADO_CN.Close
    Set ADO_RS = Nothing
    Set ADO_CN = Nothing
    MsgBox "Kayıt Bulunamadı.", vbCritical, "Veri Yok"
    Exit Sub
    End If
ADO_RS.MoveFirst
    Do While Not ADO_RS.EOF
    Lst_Detay.AddItem
'        Lst_Detay.Column(0, Lst_Detay.ListCount - 1) = ADO_RS.Fields("Departman").Value
'        Lst_Detay.Column(1, Lst_Detay.ListCount - 1) = ADO_RS.Fields("MuhasebeHesapNo").Value
'        Lst_Detay.Column(2, Lst_Detay.ListCount - 1) = Format(ADO_RS.Fields("FullTarih").Value, "DD/MM/YYYY")
'        Lst_Detay.Column(3, Lst_Detay.ListCount - 1) = ADO_RS.Fields("FisNo").Value
'        Lst_Detay.Column(4, Lst_Detay.ListCount - 1) = ADO_RS.Fields("Aciklama").Value
'        Lst_Detay.Column(5, Lst_Detay.ListCount - 1) = Format(ADO_RS.Fields("Tutar_TL").Value, "#,###.00")
'        ToplamTutar = ToplamTutar + ADO_RS.Fields("Tutar_TL").Value
    ADO_RS.MoveNext
    Loop



Lst_Detay.TextAlign = fmTextAlignRight
Txt_KayitSayisi.Text = ADO_RS.RecordCount
Txt_ToplamTutar.Text = Format(ToplamTutar, "#,###.00")

ADO_RS.Close
ADO_CN.Close
Set ADO_RS = Nothing
Set ADO_CN = Nothing
'
'Lst_Detay.Height = 445

DoEvents
End Sub
Ancak orijinal dosyada hata almadığım halde yeni dosyada
Kod:
ADO_RS.Open SQL, ADO_CN, 3, 1
kısmında "No value is given for one or more required parameters." hatası geliyor. Genellikle alan adlarının SQL cümlesine hatalı girilmesinden geldiği söylenen hatayı ben niye alıyorum bulamadım.
Yardımcı olabilir misiniz?
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Aşağıdaki kısımda bir sıkıntı var, burada başlangıç ve bitiş tarihlerini alamıyor ....

Kod:
BasTarih = Cells(1, Selection.Column)
BitTarih = Cells(2, Selection.Column)
.
 
Katılım
16 Ağustos 2004
Mesajlar
137
Excel Vers. ve Dili
Office 2010 En 64 Bit
Merhaba Haluk (Yine bana siz denk geldiniz 8-10 yıl öncesindeki gibi),

Alıyor aslında, ancak ben bir bilgi vermeyi atladım.

Kodu Rapor sayfasına girdiğim
Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Cells(Selection.Row, 11) <> "" And Cells(1, Selection.Column) <> "" Then
    Cancel = True
    FisleriGor
    Else
    Cancel = True
End If
End Sub
ile tetikliyorum.

Yani, teorik olarak Rapor sayfasında O8:Q10 aralığında bir yere çift tıklamanız ile kod tetiklendiği için BasTarih ve BitTarih değişkenleri oluşuyor, ancak buna rağmen o hatayı alıyorum.
 
Katılım
16 Ağustos 2004
Mesajlar
137
Excel Vers. ve Dili
Office 2010 En 64 Bit
( evet, tetikleme işlemi henüz herhangi hatalı bir hücreye tıklandığında da çalışıyor, onu en son düzelteceğim, orası kolay.)
 
Katılım
16 Ağustos 2004
Mesajlar
137
Excel Vers. ve Dili
Office 2010 En 64 Bit
Buldum,

Aslında her şey doğruymuş, sadece Db aralığını yanlış vermişim,

Kod:
SQL = SQL & "FROM [DetayVeri$E10:AH" & VTSonSatir & "] "
yerine

Kod:
SQL = SQL & "FROM [DetayVeri$E1:AH" & VTSonSatir & "] "
yazmak yeterli.
 
Üst