20. september 2005 - 00:38Der er
9 kommentarer og 2 løsninger
Brug af fordefineret query i VBA
Jeg har lavet en query under queries, nu går jeg ind i en form og gerne vil kalde den her query, og brug en værdi som kommer ud af query'en, jeg har prøvet med følgende kode, men den kommer med en fejl når jeg køre det, på den her linie: Set qry = db.OpenQueryDef("NyesteFaktura")
Kode:
Dim qry As DAO.QueryDef
Set qry = db.OpenQueryDef("NyesteFaktura") Set rs = qry.OpenRecordset() ' Open recordset on the query Do While Not rs.EOF If rs!nyeste Like -1 Then test = rs!fakturanr End If rs.MoveNext Loop rs.Close qry.Close
Du mangler at definere din variabel db. Skriv følgende:
Dim qry As DAO.QueryDef, db as DAO.Database
Set db = CurrentDb Set qry = db.OpenQueryDef("NyesteFaktura") Set rs = qry.OpenRecordset() ' Open recordset on the query Do While Not rs.EOF If rs!nyeste Like -1 Then test = rs!fakturanr End If rs.MoveNext Loop rs.Close qry.Close
når den kommer til linien: Set RS = CurrentDb.Openrecordset("NyesteFaktura", dbOpenSnapshot)
får jeg beskeden: To few parameters 1 Nogen ide? I nogle tilfælde at qurey'en godt risikere at returnere ingen ting, men lige den jeg tester med, returnere den 1 række
Claes, desværre, det har jeg gjort tidligere i min kode, uden succes :/
Du mangler også at erklære din rs variabel, men i dit tilfælde behøver du ikke at erklære en QueryDef variabel. I øvrigt er Like operatoren ikke god i din kode, idet jeg går ud fra Nyhed feltet er en Boolean (sand/falsk datatype)? Hvad er i øvrigt "test"? Hvis det er en variabel, skal den erklæres først (som string?). Prøv følgende som en test:
Dim qry As DAO.RecordSet, db as DAO.Database
Set db = CurrentDb Set rs = db.OpenRecordset("NyesteFaktura", dbOpenSnapshot, dbText) Do While Not rs.EOF If rs!nyeste = True Then MsgBox rs!fakturanr End If rs.MoveNext Loop rs.Close
Det er muligt. Forms er en Samling eller Collection, som refererer til samlingen af åbne formularer i din applikation. Det kræver at din formular Eksponeringer er åben, når forespørgslen (og koden) køres.
Jeg havde også lavet en mindre fejl. Første linie burde være:
Dim rs As DAO.RecordSet, db as DAO.Database
Hvis dét ikke virker, så prøv om følgende virker (forudsat at brandid er en tal-datatype):
Dim rs As DAO.RecordSet, db as DAO.Database, strSQL as String
Set db = CurrentDb strSQL = "SELECT brands.kundenummer, faktura.fakturanr, faktura.nyeste, eksponeringer.brandid FROM brands INNER JOIN (faktura INNER JOIN eksponeringer ON faktura.fakturanr = eksponeringer.fakturanr) ON brands.id = eksponeringer.brandid WHERE (((eksponeringer.brandid) = " & [FORMS]![eksponeringer]![brandid] & "))" Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot, dbText) Do While Not rs.EOF If rs!nyeste = True Then MsgBox rs!fakturanr End If rs.MoveNext Loop rs.Close
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.