07. juni 2010 - 18:03Der er
10 kommentarer og 1 løsning
Flere inputmasker til samme felt
Jeg har et problem med visning af dataene i et felt. Skatteyder er et tekstfelt, hvor der enten står et arbejdsgivernummer (cvr.nr.) med 8 tegn eller et personnummer (cpr.nr) med 10 tegn, dvs. at i tabellen står alle cifrene uden mellemrum eller bindestreger.
Jeg vil gerne have feltet vist således i formularer og rapporter:
cpr.nr. = ######-#### cvr.nr. = ## ## ## ##
Det må være noget med:
If Len(Skatteyder) > 8 then
Inputmask(Skatteyder) = "######-####"
else
InputMask(Skatteyder) = "## ## ## ##"
End if
Ovenstående skulle være til VBA, men det virker (måske ikke så overraskende for eksperter)ikke.
Det ideelle er vel at lave det på et felt i en forespørgsel, men hvordan ville koden i givet fald skulle se ud.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Senere skriver du om inputmasker. En Inputmaske er den måde hvorpå du indtaster data i feltet. Du skal tænke på en formatering, som er den måde hvorpå dine øjne ser data på skærmen. Jeg mener ikke, at du kan ændre en inputmaske uden at ændre tabellens design. Hvorimod man sikkert kan ændre formatteringen i en forespørgsel eller formular.
Uden dog at jeg har nogen løsning.
Synes godt om
Slettet bruger
07. juni 2010 - 22:38#2
Din kode er ikke helt ved siden af, men det du prøver på kan ikke lade sig gøre. Dvs. det kan det godt men kun lige i et øjebliksbillede, du kan ikke bevare formateringen/inputmasken !~)
I stedet kunne du have et tekstfelt og gøre således:~)
Private Sub CprEllerCvr_AfterUpdate() If Len(Me.CprEllerCvr) = 10 Then Me.CprEllerCvr = Left(Me.CprEllerCvr, 6) & "-" & Right(Me.CprEllerCvr, 4) ElseIf Len(Me.CprEllerCvr) = 8 Then Me.CprEllerCvr = Left(Me.CprEllerCvr, 2) & " " & Mid(Me.CprEllerCvr, 3, 2) & " " & Mid(Me.CprEllerCvr, 5, 2) & " " & Mid(Me.CprEllerCvr, 7, 2) Else Me.CprEllerCvr = Null MsgBox "Ikke et gyldigt cpr. eller cvr. nr." End If End Sub
Mugs - jeg er enig, selvom jeg ikke helt forstår. Hvis jeg har en tabel, hvor dataene er indtastet som ########, og jeg i inputmasken i formularen skriver ## ## ## ##, vises feltet i formulen som ## ## ## ##.
Og til spg - det virker helt perfekt. Din kode må så skulle tilføjes under hver formular, hvor feltet skal vises. Dog må den også kunne oprettes i et modul og derefter føjes til AfterUpdate, hvor den ønskes anvendt.
Hmm Inputmasken er den måde du indtaster data på. I et datofelt kan du lave en inputmaske, hvor du indtaster f.eks.:
08062010
for datoen idag. Inputmasken vil så selv sætte separationstegn således:
08-06-2010
Men din formatering af feltet behøver jo ikke at være sådan. Du kan i formatteringen vælge at få vist data på en anden måde som f.eks:
08 JUN 10
Men det er kun den måde dine øjne ser data. På din HD vil der være en lagret en numerisk værdi svarende til antal dage efter 1 JAN år 1900.
Men jeg mener stadig ikke, at du kan ændre inputmasken "on the flying"
Synes godt om
Slettet bruger
08. juni 2010 - 22:47#9
Problemet er at ændrer man inputmasken, gælder det alle poster og når formularen åbnes på ny bliver den sat tilbage til det, der er valgt i designvisning!~)
Hej Mugs Spg's svar virker udmærket, men den er ikke uden problemer. Løsningen virker kun, hvis dataene indtastes i en formular, hvor koden er tilknyttet. Og dataene gemmes så i en tabel med den formattering, som koden angiver. Det må give problemer, hvis der er tale om data, der importeres fra en ekstern kilde til en tabel. Jeg vil i morgen - hvis arbejdet tillader det -læse nogle afsnit om samspillet mellem inputmasker og formattering.
Hej spg Nu har du vist fået dine points.
Synes godt om
Slettet bruger
08. juni 2010 - 23:13#11
!~)
Synes godt om
Ny brugerNybegynder
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.