Avatar billede 3xa Nybegynder
13. september 2002 - 15:23 Der er 8 kommentarer og
1 løsning

Foreslå bogstavskode

Jeg er igang med at lave en database, der indeholder  bogstavskoder:
AA
AB
AC
AE
Osv.
Jeg vil gerne have databasen til at foreslå et ledigt endelsesbogstav, når jeg siger at det første bogstav skal være f.eks. A. I ovenstående eksempel, skal database så foreslå koden: AD!
Avatar billede sjap Praktikant
13. september 2002 - 18:32 #1
Her er en funktion, der kan finde bogstavkoden. Så skal du selv få den sat ind i tabellen.


Function NyBogstavkode() As String
Dim strFound As Boolean
Dim strKode As String

numstr1 = 65
numstr2 = 65
strFound = False
Do Until numstr1 = 90 Or strFound
    Do Until numstr2 = 90 Or strFound
        strKode = Chr(numstr1) & Chr(numstr2)
        If IsNull(DFirst("Bogstavkode", "Bogstavkodetabel", "Bogstavkode='" & strKode & "'")) Then
            strFound = True
            NyBogstavkode = strKode
        Else
            numstr2 = numstr2 + 1
        End If
    Loop
    numstr1 = numstr1 + 1
Loop

End Function
Avatar billede sjap Praktikant
13. september 2002 - 18:34 #2
NB. Funktionen virker p.t. kun på store bogstaver og kun på det engelske alfabet (Z = 90). Hvis du skal have de danske bogstaver med, skal der lige laves nogen ekstra krøller i løkkerne.
Avatar billede 3xa Nybegynder
18. september 2002 - 08:18 #3
Jeg prøver at se om jeg kan finde hoved og hale i den og vender tilbage....
Avatar billede 3xa Nybegynder
18. september 2002 - 08:19 #4
Kan du måske prøve at forklare de forskellige trin, eller er det for meget forlangt?
Avatar billede sjap Praktikant
18. september 2002 - 08:27 #5
Nej det er ikke for meget for langt, men du må vente til lidt senere idag, da jeg er optaget. :-)
Avatar billede 3xa Nybegynder
18. september 2002 - 08:28 #6
Det er ok...
Avatar billede sjap Praktikant
18. september 2002 - 19:40 #7
3xa

Så prøver jeg at komme med en forklaring.

Hovedelementet i programmet er funktionen Chr, der returnerer et tegn, der er tilknyttet den angivne charkode. Charkoden for "A" er 65 og for "a" er 97.

Forklaring linie for linie:


    numstr1 = 65
    strFound = False
numstr1 og numstr2 er tællere for henholdsvis det første og det andet tegn i din bogstavkode. De sættes begge til at starte med 65 som er "A". strFound er en boolsk variabel, der angiver om en ledig kode er fundet - den sættes naturligvis til false (dvs. ikke fundet) til at begynde med.


    Do Until numstr1 = 90 Or strFound
Løkke for numstr1, der fortsætter enten til 90 (="Z") eller til en ledig kode er fundet (strFound=true).


        numstr2 = 65
BEMÆRK at jeg har flyttet numstr2 = 65 ind i den første løkke.


        Do Until numstr2 = 90 Or strFound
Løkke for numstr2, der fortsætter enten til 90 (="Z") eller til en ledig kode er fundet (strFound=true).


            strKode = Chr(numstr1) & Chr(numstr2)
Bogstavkoden sammensættes ved hjælp af de to tællere og Chr funktionen.


            If IsNull(DFirst("Bogstavkode", "Bogstavkodetabel", "Bogstavkode='" & strKode & "'")) Then
                strFound = True
                NyBogstavkode = strKode
Hvis bogstavkoden IKKE findes i tabellen, sættes strFound til at være sand og NyBogstavkode (dvs. det er det funktionen returnerer) sættes til strKode.


            Else
                numstr2 = numstr2 + 1
            End If
Hvis koden findes i databasen, sættes tællerværdien af numstr2 til at være 1 højere. numstr1 ændres ikke - dvs. først undersøges A? hvor ? kan være fra "A" til "Z".


        Loop
Looper gennem alle kobinationer af numstr2

        numstr1 = numstr1 + 1
    Loop
Looper gennem alle kobinationer af numstr1


Håber det giver en ide om hvad der foregår.
Avatar billede 3xa Nybegynder
19. september 2002 - 08:27 #8
Jeg kan ikke forlange mere, tusinde tak for hjælpen. Jeg har fået det til at virke, men det er jo rart at vide hvad der foregår, så jeg kan modificere den præcist til mit behov.

TAK!
Avatar billede sjap Praktikant
19. september 2002 - 08:57 #9
Det har du jo ret i. Held og lykke med opgaven.
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