vba içinden sorgu çalıştırırken hata alıyorum.

1 2
09/10/2011, 23:52

WiniFred

Merhaba,
aşağıdaki sorguyu hazırlayıp kaydettim.

SELECT Sicil,Adi,Soyadi,Sinif,MuesseseID,MuhasebeID,57,DernekAidati FROM BilgiBankasi WHERE Sinif=[Formlar]![TopluAktarim]![comboSinif]

UNION

SELECT Sicil,Adi,Soyadi,Sinif,MuesseseID,MuhasebeID,58,BiriktirmeTutari FROM BilgiBankasi WHERE Sinif=[Formlar]![TopluAktarim]![comboSinif]

UNION

SELECT Sicil,Adi,Soyadi,Sinif,MuesseseID,MuhasebeID,59,IkrazTaksidi FROM BilgiBankasi WHERE Sinif=[Formlar]![TopluAktarim]![comboSinif];

WHERE kısmındaki parametreyi görüyorsunuz. TopluAktarim formu açıkken sorguya çift tıkladığımda, comboSinif alanının değerine göre sorgu problemsiz çalışıyor.

Ama bu sorguyu aşağıdaki gibi vb içinden çalıştırmaya istediğimde

Set rs = CurrentDb.OpenRecordset("DisketDisaAktarmaSorgusu")

çok az parametre. 1 bekleniyor (hata kodu:3061)

hatası alıyorum. Sorguya parametre eklemeden önce hiç hata vermeden problemsiz çalışıyordu kod. bunu aşmak için yapabileceğim birşey var mı?
Access ısrarla sorguyu olduğu gibi Vba içine almamı istiyor, ben de bunu yapmak istemiyorum
10/10/2011, 03:11

ozanakkaya

Örnek uygulamayı ekleyiniz.
10/10/2011, 18:32

WiniFred

Uygulamayı ekledim. Uygulama geliştirilme aşamasında olduğu için hatalı, eksik vs. kısımlar mevcuttur. Lütfen dikkate almayınız. sadece yukarıdaki mesajımda belirttiğim TopluAktarim formu ile DisketDisaAktarmaSorgusu'nu dikkate alınız.

TopluAktarim formunda Yapılacak İşlem:TEVKİFAT DOSYASI DIŞA AKTAR'ı seçin ve Sınıf alanından İŞÇİ veya MEMUR seçip "Dosyadan Oku" butonuna tıklayın. Sonra form açıkken ve Sınıf alanında İŞÇİ veya MEMUR seçiliyken Gezinti Bölmesinden DisketDisaAktarmaSorgusu'na çift tıklayın.
10/10/2011, 21:57

ozanakkaya

Referanslara "Microsoft Activex Data Objects 2.X Library" referansını ekleyip aşağıdaki kodu deneyiniz.


Sub KayitListele()
Call btnSil_Click
Refresh
Dim rs As New ADODB.Recordset
Dim DisaAktarSorgu As String
Dim Sinif As Integer
Sinif = Me.comboSinif
DisaAktarSorgu = "SELECT Sicil,Adi,Soyadi,Sinif,MuesseseID,MuhasebeID,57 AS KOD,DernekAidati FROM BilgiBankasi WHERE (((Sinif)=" & Sinif & "));" & _
"UNION SELECT Sicil,Adi,Soyadi,Sinif,MuesseseID,MuhasebeID,58 AS KOD,BiriktirmeTutari FROM BilgiBankasi WHERE (((Sinif)=" & Sinif & "));" & _
"UNION SELECT Sicil,Adi,Soyadi,Sinif,MuesseseID,MuhasebeID,59 AS KOD,IkrazTaksidi FROM BilgiBankasi WHERE (((Sinif)=" & Sinif & "));"
rs.Open DisaAktarSorgu, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
DoCmd.Hourglass True
Do Until rs.EOF
DoEvents
CurrentDb.Execute ("INSERT INTO DisketTemp(Sicil,Adi,Soyadi,SinifID,MuesseseID,MuhasebeID,Yil,Ay,KesintiKodu,Tutar) VALUES('" & rs.Fields(0) & "','" & rs.Fields(1) & "','" & rs.Fields(2) & "'," & rs.Fields(3) & "," & rs.Fields(4) & "," & rs.Fields(5) & "," & Nz(Me![txtYil], 0) & "," & Nz(Me![txtAy], 0) & "," & rs.Fields(6) & ",'" & rs.Fields(7) & "');")
rs.MoveNext
loop
rs.Close
Set rs = Nothing
DoCmd.Hourglass False
Refresh
End Sub
11/10/2011, 18:10

WiniFred

çok teşekkür ederim.
27/12/2017, 18:19

serbay33

başlık burası mı bilemedim ama sadece aynı hatayı burda gördüm.

Private Sub Komut25_Click()
Dim dno
dno = Me.Dosya_No

CurrentDb.Execute "INSERT INTO Zorunluİstihdam ([Dosya No],[Ad-Soyad],[TC Kimlik No],[Mezuniyet],[Bölümü],[Telefon],[Askerlik],[Görev Yeri-İl],[Görev Yeri-İlçe],[Görev Yeri]) SELECT [Dosya No],[Ad-Soyad],[TC Kimlik No],[Mezuniyet],[Bölümü],[Telefon],[Askerlik],[Görev Yeri-İl],[Görev Yeri-İlçe],[Görev Yeri] FROM [İşbaşıEğitimListesi]" _
& "WHERE  ([İşbaşıEğitimListesi].[Durum] = 'Zorunlu İstihdam')"
Debug.Print strSQL

End Sub

bu kodla insert işlemi oluyor.
ancak
aşağıdaki gibi "dno"yu da ekleyince olmuyor. 

Private Sub Komut25_Click()
Dim dno
dno = Me.Dosya_No

CurrentDb.Execute "INSERT INTO Zorunluİstihdam ([Dosya No],[Ad-Soyad],[TC Kimlik No],[Mezuniyet],[Bölümü],[Telefon],[Askerlik],[Görev Yeri-İl],[Görev Yeri-İlçe],[Görev Yeri]) SELECT [Dosya No],[Ad-Soyad],[TC Kimlik No],[Mezuniyet],[Bölümü],[Telefon],[Askerlik],[Görev Yeri-İl],[Görev Yeri-İlçe],[Görev Yeri] FROM [İşbaşıEğitimListesi]" _
& "WHERE (([İşbaşıEğitimListesi].[Dosya No] = dno) & ([İşbaşıEğitimListesi].[Durum] = 'Zorunlu İstihdam'))"
Debug.Print strSQL

End Sub

hata olarak da aşağıdaki hatayı veriyor: 
Çok az parametre. 1 bekleniyor

teşekkürler.
1 2