• DİKKAT

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

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?
 
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)

.
 
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.
 
( 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.)
 
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.
 
Geri
Üst