02. december 2004 - 16:36Der er
11 kommentarer og 1 løsning
like og elseif sætninger
Jeg må være træt.... Hvorfor virker nedenstående ikke?
Adresse er en tekststreng som f.eks. "Gothersgade 14, 1. sal" eller "Gothersgade 14, 5. sal". Tanken er at teksten skal oversættes til engelsk. Dermed skal alle "x. sal" oversættes. Men det virker kun med den første if/then - de andre bliver ignoreret. Det vil sige at 1. sal fint bliver oversat, men adresser på 5. sal gør ikke.
If Adresse Like "*[1. sal]" Then TXTadresse = Replace(Adresse, "1. sal", "1st floor") ElseIf Adresse Like "*[2. sal]" Then TXTadresse = Replace(Adresse, "2. sal", "2nd floor") ElseIf Adresse Like "*[3. sal]" Then TXTadresse = Replace(Adresse, "3. sal", "3rd floor") ElseIf Adresse Like "*[4. sal]" Then TXTadresse = Replace(Adresse, "4. sal", "4th floor") ElseIf Adresse Like "*[5. sal]" Then TXTadresse = Replace(Adresse, "5. sal", "5th floor") End If
Hvis jeg så, som test, i den første if/then sætning skriver 5. sal - så bliver 5. sal oversat og resten ignoreret!! Hvorfor fanger den kun den første?
Som en yderligere lille test satte jeg en msgbox("X") ind i hver if/then - hvor "x" blev erstattet af tallet for den sal der skulle erstates (den skulle så gerne skrive 3 i en dialogbox, hvis der stod 3. sal). Testen blev kørt på fem adresse, hvor af der var én adresse med 1. sal, én med 3. sal, én med 5. sal og to uden nogen sal. Dette resulterede i tre dialogboxe (som det også skulle) - MEN med tallet 1 på dem alle!!!!! Det vil altså sige at linien: If Adresse Like "*[1. sal]" Then også fanger 3. sal og 5. sal!!! Hvorfor!???
Prøv at bruge en Select Case struktur i stedet for disse If... Then. Det gør det hele meget mere overskuelig. Select Case er en udvikling af If.. Then og særdeles velegnet til flere betingelser:
Select Case Me.Adresse Case Is = Like "*[1. sal]" TXTadresse = Replace(Adresse, "1. sal", "1st floor") Case Is = Like "*[2. sal]" TXTadresse = Replace(Adresse, "2. sal", "2nd floor") End Select
Mugs: Ja, det burde give samme resultat med en Case - dog med jensen363's ændring. Om der i dette tilfælde er en egentlig performance forskel ved jeg ikke, for den skal teste på indholdet hver gang. Men det er en helt anden diskusion. ;)
Sjap: Det har du da egentlig ret i! Jeg må lige have fat i en englænder og en amerikaner (fordelen ved at arbejde på en sprogskole! ;)...
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.