Avatar billede itcon Nybegynder
15. januar 2004 - 13:00 Der er 7 kommentarer og
2 løsninger

Streng sammenligning

Jeg sidder og fedter med en funktion som skal kunne sammenligne to strenge, men får en fejl når den ene streng (eller begge) indeholder Null - er der en anden metode som er nemmere og som virker ?

Function StrForskellig(strNEW As String, strOLD As String) As Boolean
    If IsNull(strOLD) Or IsNull(strNEW) Then
        If IsNull(strOLD) And IsNull(strNEW) Then StrForskellig = False
        If IsNull(strOLD) And Not IsNull(strNEW) Then StrForskellig = True
        If Not IsNull(strOLD) And IsNull(strNEW) Then StrForskellig = True
    Else
        If Len(strOLD) <> Len(strNEW) Then
            StrForskellig = True
        Else
            If StrComp(strOLD, strNEW, vbTextCompare) <> 0 Then
                StrForskellig = True
            Else
                StrForskellig = False
            End If
        End If
    End If
End Function
Avatar billede mufoxe Nybegynder
15. januar 2004 - 13:02 #1
Du kunne f.eks. sætte strengen til en eller anden fast værdi, hvis den er NULL. F.eks. If ISNULL(strOld) Then strOld = "NULL"
Avatar billede itcon Nybegynder
15. januar 2004 - 13:07 #2
jo det har jeg også tænkt på, men det skulle vel så gøres inden funktionen kaldes, og det er ikke acceptabelt. Jeg har behov for at kunne kalde en sammenligningsfunktion som kan acceptere strenge med eller uden indhold
Avatar billede mufoxe Nybegynder
15. januar 2004 - 13:09 #3
Nej, du kan bare gøre det som det første i funktionen. På den måde kan du nøjes med at bruge StrComp til sammenligningen.
Avatar billede itcon Nybegynder
15. januar 2004 - 13:18 #4
Det lyder ellers snedigt, men selvom jeg har lavet funktionen om som nedenstående får jeg en fejl når jeg kalder funktionen når den ene streng er Null - hvad gør jeg forkert ?

Function StrForskellig(strNEW As String, strOLD As String) As Boolean
    If IsNull(strOLD) Then strOLD = "NULL"
    If IsNull(strNEW) Then strNEW = "NULL"
   
    If StrComp(strOLD, strNEW, vbTextCompare) <> 0 Then
        StrForskellig = True
    Else
        StrForskellig = False
    End If

End Function
Avatar billede mufoxe Nybegynder
15. januar 2004 - 13:35 #5
Hvad er fejlen?
Avatar billede itcon Nybegynder
15. januar 2004 - 13:39 #6
"Invalid use of Null" i den linie hvor funktionen kaldes
Avatar billede mufoxe Nybegynder
15. januar 2004 - 13:39 #7
Oh, nu tror jeg at jeg er med. Du får selvfølgelig en fejl, når du forsøger at sende NULL ind i en streng parameter. Du kan ændre lidt på funtionshovedet:

Function StrForskellig(strNEW As Variant, strOLD As Variant) As Boolean
    If IsNull(strOLD) Then strOLD = "NULL"
    If IsNull(strNEW) Then strNEW = "NULL"
   
    If StrComp(CStr(strOLD), CStr(strNEW), vbTextCompare) <> 0 Then
        StrForskellig = True
    Else
        StrForskellig = False
    End If
End Function
Avatar billede itcon Nybegynder
15. januar 2004 - 13:42 #8
den bliver kaldt med
if strforskellig (![nymaaned],![glmaaned]) then...
Avatar billede itcon Nybegynder
15. januar 2004 - 13:44 #9
selvfølgelig  - Super jeg takker mange gange for hjælpen
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