Avatar billede Slettet bruger
04. januar 2007 - 08:04 Der er 15 kommentarer og
1 løsning

Tjek på records

Hej, så er den gal igen

Jeg har et hurtigt opslag der kører på form open, som skal tjekke en forespørgsel for records. Jeg har fundet frem til følgende, men der mangler et eller andet:

Dim Form As String
Dim db As DAO.Database
Dim rs As DAO.Recordset

Form = Forms!Menu!txtReport

Set db = CurrentDb
Set rs = db.OpenRecordset(Form)

If Not rs.BOF And Not rs.EOF Then
MsgBox "Ingen Records"
Else
MsgBox "Records"


Problemet er at uanset om den forespørgsel jeg trigger har records eller ej, så kommer beskeden "Ingen Records" frem... Hvorfor?
Avatar billede terry Ekspert
04. januar 2007 - 08:07 #1
Try
If Not rs.BOF And Not rs.EOF Then
MsgBox "Records"
Else
MsgBox "Ingen Records"
Avatar billede terry Ekspert
04. januar 2007 - 08:08 #2
and if that doesnt work try

If rs.Recordcount = 0 Then
MsgBox "Ingen Records"
else
...
Avatar billede Slettet bruger
04. januar 2007 - 08:27 #3
Har lige prøvet begge uden held. Den siger "Records" begge steder.

Forespørgslen der bliver kørt har altid 1 eller ingen records,
kan det være det der driller?
Avatar billede mugs Novice
04. januar 2007 - 08:32 #4
Prøv med en DCount
Avatar billede mugs Novice
04. januar 2007 - 08:34 #5
msgbox = DCount("*", "forespørgslens navn")
Avatar billede Slettet bruger
04. januar 2007 - 08:41 #6
DCount giver 1 uanset om forespørgslen har 1 record eller 0 :-)
Avatar billede terry Ekspert
04. januar 2007 - 08:45 #7
Try

rs.moveLast
rs.MoveFirst
If rs.Recordcount = 0 Then
MsgBox "Ingen Records"
else
...
Avatar billede Slettet bruger
04. januar 2007 - 09:04 #8
Nu har jeg forsøgt med følgende (hvor jeg skriver hvilket recordset der skal bruges manuelt), men får nu en parameters fejl: Too Few paramaters. Expected 4.

Private Sub Form_Open(Cancel As Integer)
Dim db As Database
Dim rs As Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("q_Tracker_Agent", dbOpenDynaset)

If Not rs.BOF And Not rs.EOF Then
MsgBox "Ingen Records"
Else
MsgBox "Records"
End If
End Sub
Avatar billede terry Ekspert
04. januar 2007 - 09:11 #9
This works with a query

Private Sub Form_Open(Cancel As Integer)
Dim db As Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("query11")


If rs.BOF And rs.EOF Then
MsgBox "Ingen Records"
Else
MsgBox "Records"
End If
End Sub
Avatar billede terry Ekspert
04. januar 2007 - 09:19 #10
Try this
Private Sub Form_Open(Cancel As Integer)
Dim db As Database
Dim rs As Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("q_Tracker_Agent")

If rs.BOF And rs.EOF Then
MsgBox "Ingen Records"
Else
MsgBox "Records"
End If
End Sub
Avatar billede Slettet bruger
04. januar 2007 - 09:34 #11
I finaly figured it out.

First off, the code used the wrong query hehe,
after fixing that, I found out OpenRecordset doesn't work very well with queries that have parameters in them.

So I'm gonna go with DCount, which works perfectly.

Thanks Terry.
Avatar billede terry Ekspert
04. januar 2007 - 09:38 #12
Your welcome, but how does DCOunt help? The paramaters will still be needed to give you the correct result wont they?
Avatar billede Slettet bruger
04. januar 2007 - 09:51 #13
Yep, but DCount doesn't care if the query has parameters or not.

I'm using criterias such as [Forms]![Menu]![txtAccount] etc.

Messy but it's not a big project hehe
Avatar billede terry Ekspert
04. januar 2007 - 09:55 #14
OK
mugs if you want some or all of the points then drop a comment
Avatar billede mugs Novice
04. januar 2007 - 10:41 #15
It's all Yours terry.
Avatar billede terry Ekspert
04. januar 2007 - 10:44 #16
thanks mugs, have a good day both of you
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester