db As DAO.Database hatası

Katılım
31 Mart 2008
Mesajlar
91
Excel Vers. ve Dili
2003
Dim db As DAO.Database, rst As DAO.Recordset
Dim Say As Integer
Set db = CurrentDb
strSQL = "SELECT * From Srg "
strSQL = strSQL & "WHERE [Adet No]***** & Val(Me.Liste)
Set rst = db.OpenRecordset(strSQL)
Say = rst.RecordCount
Me.[Adet No] = Me.Liste
If Say = 0 Then
Me.[Dolum No] = "1"
Else
rst.MoveLast
eno = rst("[Dolum No]")

Me.[Dolum No] = eno + 1
End If


kullanmakta olduğum formda yukarıda belirtmiş olduğum srg sorgusu ile dolum no

yapılan kayıttaki adet no ya göre Liste açılan kutusundaki adet no seçilince

otomatik yazılıyordu, yani adet no ne ise ondan daha önce yapılan kayıtlar sayılarak yeni yapılan kaydın dolum no su +1 oluyordu, sorunlar çıktı ve ilgisiz alakasız sayılarda dolum no takılıp kalmaktadır
sebebini bulamıyorum.
 
Son düzenleme:

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhaba;

Sorunuz, sorununuz pek anlaşılmıyor. Liste kutusunun sütunları nelerdir? "adet no" sayı mı metin mi? "eno" nedir? "WHERE [Adet No]***** " bu nedir? srg sorgusu ya da kaynak tablosu/tabloları hangi alanlardan oluşuyor? Örnek eklemezseniz eğer mutlaka daha detaylı bilgiler vermeniz gerekiyor.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
İnanın ben yine birşey anlamadım, liste ile adet no'nun ne olduğunu.. Aynı veriler için mi kullanıyorsunuz siz bunları? Ayrıca çok basit olarak "DMax" fonksiyonunu da kullanabilirsiniz..

Kod:
me.[alan ismi]= DMax("alan_ismi", "sorgu_ya_da_tablo", "istenilen_alan = xxxxxx") +1
gibi...
 
Katılım
31 Mart 2008
Mesajlar
91
Excel Vers. ve Dili
2003
adet no dolum yapılan meyve nin kodudur

bu kodu hazır olan Liste den seçtiğinizde yapılmakta olan yeni dolum kaydındakı
meyvenin daha önce kaç defa kullanıldığını sorgu ile tespit ederek +1 ekliyorum
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhaba;

Dao kodunu silip, altta verdiğim kodu formun "güncelleştirme öncesinde" dener misiniz?

Kod:
If Me.NewRecord = True Then
   Me.dolumNO = Nz(DMax("[dolumno]", "[tablo1]", "adetno=" & Me.adetNO), 0) + 1
End If
 
Katılım
31 Mart 2008
Mesajlar
91
Excel Vers. ve Dili
2003
formun güncelleme öncesine demişsiniz hocam, öyle denedim ama hata verdi.
ilginiz ve gayretiniz için sonsuz saygılar, teşekkürler

ayrıca beab hocam, çok özür dilerim geç hatırladığım için..
yukarıda kullandığım kodu bana siz vermiştiniz.
sorgu ile kullanılan, ne oluyorda sonradan takılıp kalıyor anlamadım.
başlarda gayet sağlıklı iş görüyordu ve çok ta iyi oluyordu.
 
Katılım
22 Ocak 2007
Mesajlar
815
Excel Vers. ve Dili
2003
o kod bana ait ve değiştirilmiş sorun listedeki alanı kaldırmış olmanızdan kaynaklanıyor zaten val( ile aldığımızdan abuk sabuk rakamlar verir listedeki alanları kontrol et şayet liste 2 stunlu ve 1.stunda sizin seçtireceğiniz alan varsa Me.Liste.Column(0) yazın düzelir yada örneğinizi ekleyin bir dakikada düzeltelim o kod basit bir şey asla yanlış bir sayı vermez gayet güzel çalışır
burda bir recorset belirliyoruz
Dim db As DAO.Database, rst As DAO.Recordset
burda sayma yapacağımızdan say diye sanal bir alan belirliyoruz
Dim Say As Integer

burda srg sorgusunu çağırıyoruz
strSQL = "SELECT * From Srg "

burda srg sorgusunda birtek bizim listeden seçtiğimiz kayıtlar olacak şekilde liste bazlı süzdürüyoruz
strSQL = strSQL & "WHERE [Adet No]***** & Val(Me.Liste)

burda recorset e süzülmüş sorguyu alıyoruz
Set rst = db.OpenRecordset(strSQL)

zaten süzülmüş olan kayıtlar kaçtane ona bakma için RecordCount kullanıyoruz ve bunu say alanına alıyoruz

Say = rst.RecordCount
burda tıkladığımızda listedeki adet no yu formdaki adet noya alıyoruz
Me.[Adet No] = Me.Liste
burda say alanına bak diyoruz eğer 0 ise
If Say = 0 Then
dolum no alanıana 1 yaz diyoruz neden çünkü bu kaydı ilk defa giriyoruz
Me.[Dolum No] = "1"

say alanı 0 değilse son kayda git
Else
rst.MoveLast

ordaki dolum no alanındaki sayıyı al eno adlı sanal alana yaz onuda al ve dolum no alanına üzerine +1 ekleyerek yaz dedim diyeceksinki burda eno alanına ne gerek var işte oda ilerde biri çıkıp sen çok sağol bu kodu sen yazmıştım demesin diye kodun içine böyle gereksiz şeyler ile dolduruyorum
eno = rst("[Dolum No]")

Me.[Dolum No] = eno + 1
End If


neyse senin problemin 1 srg sorgusundaki sıralamayı bozmuşsundur. sırala adet noya göre olacakki son kaydı aldığında aslında sana ilk kaydı vermesin
2 alanın kendisini bozmuş olabilirsin alan sayı yada direkt metin olacak
3 liste kutusunda alan silinmiş olabilir
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhaba;

Kod:
If Me.NewRecord = True Then
   Me.dolumNO = Nz(DMax("[dolumno]", "[tablo1]", "adetno=" & Me.adetNO), 0) + 1
End If
Bende hata vermiyor. Örneği ekliyorum. "tablo1form"undan "adetno" alanına yaptığınız girişe göre sayım yapıyor ve "dolumno" alanına o sayıdan kaç tane olduğunu yazıyor. Ufak düzenlemeyle liste( açılankutu) ye göre de saydırılabilir. "Liste" ve "adetno" aynı veriler olduğu için neden sadece biri yok diye hala takılıyım ben ;)
 
Katılım
31 Mart 2008
Mesajlar
91
Excel Vers. ve Dili
2003
sayın gulsum1;
ben bu kodun size ait olduğunu bilmiyordum, dolayısıyla kusura bakmayın, eklediğim örnek ile ilgili sorun hakkında değerli fikrinizi paylaştığınız için de ayrıca teşekkür ederim.

ben kod yazamam vba dan çok anlamam standart işler için kullanacak kadar biliyorum, işin içinden çıkamadığımda ise siz değerli üstadların hiç bir zaman esirgemediğiniz yardımlarıyla çözüm bulurum.

bunun için sayın gulsum1, benim eklediğim örnek üzerinde hatalı olan yerlerini düzeltmenizi rica ediyorum.

Dim db As DAO.Database, rst As DAO.Recordset
Dim Say As Integer
Set db = CurrentDb
strSQL = "SELECT * From Srg "
strSQL = strSQL & "WHERE [Adet No]***** & Val(Me.Liste)
Set rst = db.OpenRecordset(strSQL)
Say = rst.RecordCount
Me.[Adet No] = Me.Liste
If Say = 0 Then
Me.[Dolum No] = "1"
Else
rst.MoveLast
eno = rst("[Dolum No]")

Me.[Dolum No] = eno + 1
End If


örnek ilk mesajımda dır.






sayın beab05;
verdiğiniz örneği inceledim mantık olarak aynı işi yapıyor, ben daha önce ilk eklediğim kodla çalışmamı kullandığımdan adet no ile liste aynı değerleri ifade ettiği halde mevcut kod için sözkonusu olmuştur, dediğiniz gibi verdiğiniz kod uygulanınca anlamsız kalıyor ikisinin birden olması:)

bu kodla dolum no yu saydırırsak bir hata olmaz inşallah garantilimi:)
benim için çok önemli bir ayrıntı...
 
Son düzenleme:
Katılım
22 Ocak 2007
Mesajlar
815
Excel Vers. ve Dili
2003
cevap

sadece listeden bir meyve seç
sonra tarihini yaz ve kaydet tuşuna bas
 
Son düzenleme:
Üst