Avatar billede dsjk Novice
13. juli 2004 - 11:50 Der er 5 kommentarer og
1 løsning

problemer med funktion

Hej

Jeg har et lille problem med denne kode, det skal lige siges at jeg har kopieret den og rettet den til.

Planen med den er at man kalder funktionen sammen med Debitorid, den skal så finde hvilken gruppe debitoren hører til ud fra tabellen Debitor og til sidst skal den finde ud af hvilket logo der hører til gruppen ud fra tabellen debitorgrupper.

Public Function VaelgLogo(F_DebitorID)
Dim MyDb As Database
Dim MyRe As DAO.Recordset
Dim MyDb1 As Database
Dim MyRe1 As DAO.Recordset
Dim StrUdsk
On Error GoTo Err_VaelgLogo

StrUdsk = ""
Set MyDb = CurrentDb
Set MyRe = MyDb.OpenRecordset("Select gruppe FROM Debitor Where FirmaID = '" & Forms!main!FirmaID & "' AND DebitorID = '" & F_DebitorID & "'", dbOpenDynaset)
If MyRe.RecordCount > 0 Then
    Set MyDb1 = CurrentDb
    Set MyRe1 = MyDb1.OpenRecordset("Select * FROM Debitorgrupper Where Gruppe = '" & MyRe1!GRUPPE & "'", dbOpenDynaset)
    If Not IsNull(MyRe1!Logo) Then StrUdsk = StrUdsk & MyRe1!Logo
End If
VaelgLogo = StrUdsk

Exit_VaelgLogo:
Exit Function

Err_VaelgLogo:
MsgBox Err.Describtion
Resume Exit_VaelgLogo
End Function

Problemet er at jeg får et blank svar, selv om jeg ved der står noget i tabelfeltet logo.

/dsjk
13. juli 2004 - 11:56 #1
Din sidste OpenRecordset skal se således ud:
Set MyRe1 = MyDb1.OpenRecordset("Select * FROM Debitorgrupper Where Gruppe = '" & MyRe!GRUPPE & "'", dbOpenDynaset)

Det var den forkerte MyRe, som du benyttede.

Men bortset fra det, så kan det forenkles som herunder. Du behøver ikke 2 recordsets, da sidste opslag kan klares lige så hurtgigt med DLookup:

Public Function VaelgLogo(F_DebitorID)
Dim MyDb As Database
Dim MyRe As DAO.Recordset
Dim StrUdsk
On Error GoTo Err_VaelgLogo

StrUdsk = ""
Set MyDb = CurrentDb
Set MyRe = MyDb.OpenRecordset("Select gruppe FROM Debitor Where FirmaID = '" & Forms!main!FirmaID & "' AND DebitorID = '" & F_DebitorID & "'", dbOpenDynaset)
If MyRe.RecordCount > 0 Then
    If Not IsNull(MyRe1!Logo) Then StrUdsk = DLookup("Logo", "Debitorgrupper", "Gruppe = '" & MyRe!Gruppe & "'")
End If
VaelgLogo = StrUdsk

Exit_VaelgLogo:
Exit Function

Err_VaelgLogo:
MsgBox Err.Describtion
Resume Exit_VaelgLogo
End Function
Avatar billede terry Ekspert
13. juli 2004 - 11:57 #2
Public Function VaelgLogo(F_DebitorID AS Long) as string


..
Avatar billede dsjk Novice
13. juli 2004 - 11:57 #3
ok, fandt også selv fejlen :)

Man tak for DLookup'en

/dsjk
13. juli 2004 - 11:57 #4
...og selv med 2 recordsets, kunne du også godt nøjes med ét database-object, da MyDb kan bruges af begge.
13. juli 2004 - 12:01 #5
Som terry antyder, bør du også erklære funktionen med String, ligesom Dim StrUdsk bør have datatype på.

Endelig bør du afslutte koden med:

MyRe.Close
Set MyRe = Nothing
MyDb.Close
Set MyDb = Nothing

Dette frigøre ojekterne fra hukommelsen.

blot en service-meddelelse :o)
Avatar billede dsjk Novice
13. juli 2004 - 12:02 #6
ok

Tak for info :)
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