30. november 2004 - 09:36Der er
26 kommentarer og 1 løsning
Sortering af poster
I min database er der 2 unikke felter i min "journal" tabel. Da jeg mener dette er uoverflødigt, vil jeg gerne ned på én. Der kan også lige tilføjes, at det ene felt ("ID") kun bruges til, at sortere journalerne i den rækkefølge de blev indtastet.
Jeg ønsker imidlertid ikke, at sortere dem i denne rækkefølge de blev indtastet men i stedet i forhold til deres journalnr, som er det andet unikke felt.
Journalnr. er bygget op efter følgende princip: ét løbenr. efterfulgt af årstal for oprettelse. Ved årsskifte starter løbenr. igen fra 1. Dvs. 12004, 22004, 32004, 12005 & 22005 osv. Dette giver mig et problem i sorteringen, da jeg også ønsker dem sorteret i ovenstående rækkefølge, hvilket jeg ikke kan få Access til at gøre. De bliver i stedet sorteret som følgende: 12004, 12005, 22004, 22005 & 32004.
Det skal lige siges, at min database oftest generere et journalnr af sig selv, udfra journalnr i den sidste post, hvorfor det igen giver problemer med Access sortering.
Jeg har været inde og kigge lidt på nogle SQL sætninger, men har på ingen måder SQL-viden nok til, at klare denne, ved ej heller om det overhovedet er muligt.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Det vil være et meget stort arbejde, da der så er mange VBA moduler der skal redigeres, nogle som jeg ikke lige kan se vil virke igen. Så jeg ser helst at jeg kan bibeholde min nuværende format.
Problemet ligger i, at vi har nummeret vores journaler på den måde i nogle år efterhånden, hvorfor man fortsat ønsker dem nummeret på denne måde. Det ville selvfølgelig være en mulighed, hvis man i tabellen kunde gemme i formatet ÅR + ID, men i formular feltet vise det som ID + ÅR.
Jeg tror dog, at det også vil give nogle problemer, hvorfor jeg kun ønsker dette gjort, hvis ikke andet er muligt.
Der findes en måde at gøre det på, men den er MEGET klodset, uelegant og langsom.
Der er at kode et modul, som skaber en ekstra tabel programmatisk med et autoID, og i denne sørger man for at lægge dataene i den rigtige rækkefølge programmatisk.
På denne tabel laves der så en query, som ikke med tager AutoID'et.
Dette vil få databasen til at fylde meget og det er kunne få databasen til at gå meget langsom. Jeg vil derfor anbefale at du koder det om til at bruge formatet År + ID istedet for. Da dette sikkert er lettere at lave og vil give en væsentlig mindre disk forbrug. - RBJ
Jeg havde egentlig håbet på, at det var muligt via en SQL sætning hvor der bliver sat nogle sorterings kriterier. Man kunne f.eks. lave noget i stil med "SORT BY KRITERIE 1 AND KRITERIE 2". Hvor KRITERIE 1 lavede en rest division og sorterede efter dette. og KRITERIE 2 lavede en division og sorterede tallene med samme årstal efter dette. Ovenstående kunne sættes ind i min forespørgsel og dermed ville journalerne være sorteret som ønsket.
Nej det er også uden for min viden, men det kunne nu være smart. :-)
Det kunne da godt være, at man skulle ændre det til to felter, jeg er bare ikke helt sikker på, hvordan jeg så skal få mine nuværende moduler til at fungere efter hensigten.
Man kunne lave et ekstra module, som kan samle eller skille et journalID alt efter behov
Function samlJournalId(ByVal id As Integer, ByVal year As Integer) Dim result As Integer: result = 0
'bruges til at flytte id ud på sig plads Dim temp As String temp = "" & year Dim i As Integer: i = 0 Dim shifter As Integer: shifter = id While i < Len(temp) shifter = shifter * 10 i = i + 1 Wend
result = shifter + year samlJournalId = result End Function
Sub skilJournalId(ByVal jid As Integer, ByRef id As Integer, ByRef year As Integer) 'caster til streng Dim jidstreng As String: jidstreng = "" & jid ' antager at løsning kun skal holde til år 9999 Dim yearstreng As String: yearstreng = Right(jidstreng, 4) Dim idstreng As String: idstreng = Left(jidstreng, (Len(jidstreng) - 4)) id = CInt(yearstreng) year = CInt(idstreng) End Sub
Synes godt om
Slettet bruger
30. november 2004 - 15:18#15
I tabellen som indeholder journalnr tilføjer du et felt der hedder årstal, så får du skrevet årstal på de journaler i allerede har (evt. med en tilføjelsesforespørgsel). Herefter åbner du din formular og her sorterer du først på årstal og derefter på journalnr. Du må så tilføje årstal i din formular, så i kan indtaste det i nye journaler (evt. sætte default årstal til 2004 og så skifte næste år).
det er jo da noget hurtigere at gøre i forhold til at de metoder jeg ville gøre... selvom at det ikke ligefrem er i bedste ide i forhold til den relationelle model :-D
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.