Skip to main content

AccessTr.neT M.



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

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

Çözüldü #1
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 Img-grin

Cevapla
Çözüldü #2
Örnek uygulamayı ekleyiniz.

"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
...........
Çözüldü #3
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.

.rar kmts.rar (Dosya Boyutu: 98,79 KB | İndirme Sayısı: 19)
Cevapla
Çözüldü #4
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

"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
...........
Çözüldü #5
çok teşekkür ederim.

Cevapla
#6
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.

Cevapla
...........

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da