08. juli 2002 - 23:39Der er
21 kommentarer og 1 løsning
Indputmaske i en kombinationsboks
Hjælp Jeg har en formular, hvor der er et felt til tlf-nr. Feltet er en kombinationsboks, jeg vil gerne lave en indputmaske på feltet. Med det giver problemer når jeg gerne vil benytte det automatiske opslag som følger med i kombinationsboksen. Jeg har prøvet at lave en indputmaske på tabellen, uden held. Hvad skal jeg gøre..???
Jeg har måske forklaret mig forkert. Feltet er et "tekst" felt. Grunden til at jeg vil lave inputmaske, er fordi det tvinger brugeren til at indtaste præsis 8 tegn, hverken mere eller mindre. Problemet med inputmasken er at når jeg taster det første tal, er at den finder det første tlf. med tallet og curseren sprinter til slutningen af tlf. Dette gør at jeg ikke kan indtaste resten af tlf. (autoopslag/autoordbog)
comboen bruges jo normalt mest hvis man vil vælge mellem allerede oprettede data, eller fx kombineret med en msgbox hvor bruger promtes "ønsker du at tilføje XX, da denne ikke eksisterer i forvejen" - hvis bruger så vælger ja, tilføjes data - Men pyt med det - hvis du ikke ønsker autoudfyldning, skal den bare slåes fra :)
- højreklik på comboen og sætte egenskaben "autoudfyldning" til NEJ
men hvis du slår denne facilitet fra, er det i højeste grad en god ide med lidt vba i baggrunden, da du jo kan komme til at rette i eksisterende data, uden brok fra access, medmindre dit felt er en p-nøgle --- eller du selvfølgelig vælger at kalde din formular så det kun er muligt at oprette nye records ....jeg forstår dog ikke den der med at taste 4 for autoopslag ?????? er det fordi det andet tal er 4, eller???
Selv tak, hvis det er meningen at du ikke vil have feltets til automatisk at give et forslag til tlfnr., kan du i feltets egenskabsark under fanen data sætte Autoudfyldning til Nej.
...ok here goes - lige så snart du bruger inputmaske gør der koks i sagerne, så den bliver du nødt til at undvære hvis du vil bibeholde autoudfyldning - sorry :/
på tabelniveau sætter du feltstørrelsen til 8, opretter en forespørgsel hvor du medtager feltet, og din form bygger på foresp
har lavet en lille test dB, men jeg kunne forestille mig at du gerne vil have formatet til at blive vist således 00 00 00 00 og den dutter desværre ikke, hvis du vil bibeholde autoudfyldning
men i og med feltstørrelsen er begrænset til 8 kan bruger ikke indtaste mere end 8 tegn i feltet - mit bedste bud - desværre :/
access er normalt ikke så kunstig, og problemet er der ikke hvis du kombinerer tal og bogstaver, men det hjælper dig jo desværre ikke
Tak susanne. Det med tabel og 8 karakter er gjort. Jeg vil gerne tvinge brugeren til at man SKAL taste 8 tal (00000000) uden mellemrum. Min inputmaske skal bare sikre mig at brugeren taster 8 tal. Men stadigvæk bruger autoopslag, hvis tlf. allerede findes.
Kan man lave en anden form for kontrol istedet for inputmaske. Så brugeren tvinges til at indtaste 8 tal.
Hvis du fjerne inputmasken, kan du i combo'ens FørOpdaterings-hændelse indsætte denne kode:
Dim Streng As String Streng = felt1 If Len(Streng) <> 8 Then MsgBox "Forkert indtastning" Me.Undo End If Den måler om længden af den indtastede streng er forskelling fra 8. Er den det annulleres indtastningen.
Men hvis du indtaster 8 tal, der ikke eksisterer i det felt du slår op i, ja så vil indtastningen blive godkendt hvis egenskaben BegrænsTilListe er sat til Nej. Hvis denne egenskab er sat til Ja, vil du få en advarsel om, at det indtastede ikke er et element på listen, og indtastningen vil ikke blive godkendt. Denne advarsel kommer før den indsatte kode.
Hvis du i det felt comboen slår op i laver din inputmaske, og egenskaben BegrænsTilListe i cpmbpen er sat til Ja, så opnår du vel det samme nemlig:
At det ikke er muligt at indtaste et tlfnr. i comboen som ikke eksisterer i det andet felt.
.mugs. Det virker, men den laver et nyt recordset, ved fejlindtastninger. Hvis jeg sætter den til efterupdate, når den at køre en anden hændelse ved udgang. Og det er ikke godt.
Hvis ikke andet er muligt, må jeg leve med dette. Tak.
Hvis du med fejlindtastninger mener at du indtaster 8 tal, vil det blive accepteret selvom tlfnr. ikke eksisterer i det felt du slår op i. Det er fordi egenskaben BegrænsTilListe er sat til Nej.
Med Me.Undo annullerer du en indtastning der ikke består af 8 tal. Formularen vil blive stående i den nye post. Hvis du f.eks. har 3 poster i tabellen, og du opretter en 4., men kun indtaster 7 tal, kommer MsgBox, og indtastningen bliver annulleret, men prøv at lukke formularen og åbne den igen, og du vil se, at du stadig kun har 3 poster. Men den sidste linie "DoCmd. osv" rykker du en post tilbage, altså væk fra de du forsøgte at oprette.
Dim Streng As String Streng = felt1 If Len(Streng) <> 8 Then MsgBox "Forkert indtastning" Me.Undo DoCmd.GoToRecord acForm, "form2", acPrevious, 1 End If
Det kan godt være det skyldes regnvejret. Og lige iøjeblikket står det ned i stænger (Sønderjylland). Pudsigt - for 10 min siden var det høj klar solskin og med torden, men nu er det så mørkt som i en brøndgravers ...
>>mugs sidder i øjeblikket og er ved at blive lettere irriteret over kode der kun vil acceptere at det indtastede er tal og ikke tekst - har brugt den før, men kan ikke huske hvor, og kan SLET IKKE huske hvordan jeg satte den op
- - har du ikke et rigtig godt bud :)
mhh jeg tror jeg skal til at oprette nogen små dB ligesom du har gør - god ide ;)
Jeg har ikke noget bud lige nu - men kan dog huske at spørgsmålet har været oppe før. De små db'er bruger jeg næsten daglig - specielt nu hvor min arbejdsplads er ved at skifte til XP, og en "klog" EBD-specialist har udtalt, at man ikke kan konvertere Access97 til XP
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.