Avatar billede snej Nybegynder
16. juni 1999 - 20:35 Der er 12 kommentarer og
1 løsning

Indput Mask

Jeg er igang med at lave en database over mine CDer, og der har jeg brug for et felt, hvor jeg har længden på et stykke musik.

I det felt vil jeg kunne skrive tiden i minutter og sekunder som 12:56 eller 3:45 hvis der kun er et cifre i minutterne.

Problemet er, at jeg ikke kan få lavet en indput maske som går at jeg kan nøjes med at skrive 345 i stedet for 3:45.

Jeg har prøvet at bruge

09:00:00;0;_

som er standard masken til langt tidsformat, men hvis jeg forkorter den til kun fire cifre betragter den det som timer og minutter i stedet for minnutter og sekunder, og selvom jeg har prøvet at indsætte et ! som skulle gøre at man indtaster fra højre i stedet for venster, så kan jeg ikke nøjes med at indtaste de 3 - 4 cifre længden består af, og det er lidt iriterende at skulle indtaste tre nuller før hver længde.

Jeg kan godt få det til at fungere med en felttype som nummer eller tekst, men jeg har brug for dato/tid, da jeg ellers ikke kan bruge felterne til at regne tiden sammen pr. CD.

Håber der er nogen der kan hjælpe.

MVH

JFP
Avatar billede 127144146281 Nybegynder
16. juni 1999 - 21:07 #1
har du et link til databasen så kan jeg da ligw prøve, eller send den til web1@michael-jensen.dk (til alle der er imod email her på eksperten dk, skal nok poste svaret)
Avatar billede bkp Nybegynder
17. juni 1999 - 00:20 #2
Prøv med:
Sæt format til:  tt:nn:ss
eller  nn:ss

Og Inputmaske til 00:00:00
eller  00:00
Avatar billede snej Nybegynder
18. juni 1999 - 22:37 #3
Jeg har prøvet med at sætte formattet til n:ss for at undgå at den viser et nul foran minuttallet.

Jeg har også prøvet indputmaskerne
00:00:00
99:99:99
00:00
99:99
Både med og uden (udråbstegn)! men problemet er at hvis jeg har seks cifre, som i de to øverste, så skal jeg taste tre 0'er før jeg kan skrive de tre cifre der udgør længden, hvilket da også er bedre end at skulle have fat i kolon hele tiden, men ikke optimalt.

Og hvis jeg har fire cifre, så tror Access at det drejer sig om timer og minnutter, og så kan jeg stadig ikke bruge det til at regne med.

Jeg har prøvet med på en dansk version og en engelsk version af Access 97, og resultatet er det samme.

Det er ikke sådan at jeg har en spicifik base endnu, det er stadig på forsøgs stadiet, men jeg har bare prøvet at lave en ny tabel, hvor jeg laver et felt til tid/dato.

Jeg håber at der er nogen der har et bedre forslag, evt. om det ville hjælpe at opgradere til 2000.

MVH

JFP
Avatar billede bkp Nybegynder
20. juni 1999 - 11:25 #4
Dua har ret, den kan åbentbart ikke finde ud af det når time angivelse mangler.
Men du kan jo snyde den ved at sætte datatype til langtheltal, og antal decimaler til 2 og inputmaske til 00:00 og eventuelt valideringsregel til <24
Avatar billede midgaardsorm Nybegynder
25. juni 1999 - 23:47 #5
Du kan i egenskaber for feltet sætte både format og inputmaske til klokkeslæt

Derved får du automatisk sat : i tiden, så skal du bare taste 0345

En opdatering til 2000 er ikke nødvendig
Avatar billede snej Nybegynder
26. juni 1999 - 08:20 #6
bkp>> Hvis jeg sætter datatypen til langt heltal, så virker indputmasken helt fint, problemet er bare at så kan jeg ikke bruge feltet til at lægge tiden sammen, da den bruger 10 tals systemet, og ikke timer minutter og sekunder.

midgaardsorm>> Jeg har sat formatet til minutter og sekunder, og det virker også fint. Problemet er at hvis jeg sætter indputmasken til kort klokkeslet, så regner den det som timer og minutter, og så bliver det ikke lagt rigtigt sammen, og hvis jeg bruger det lange klokkeslet skal jeg taste 000345, hvilket er det bedste jeg kan komme frem til indtil videre. Men jeg ville allerhelst kunne nøjes med at taste 345.

Man skulle mene at det burde virke hvis man satte indputmasken til !99:99:99, da den så skulle udfylde felterne fra højre, og ingen af dem er nødvendige. Men det virker bare ikke når det er et tid/dato felt.
Avatar billede bkp Nybegynder
27. juni 1999 - 11:04 #7
Du har ret det virker ikke som det skal, MS har nok ikke regnet med at man kun skal bruge minut og sekunder!!

Hvad med at lave to felter som langt heltal, hvor du i den ene indtaster minutter og i den anden sekunder, og du kan så lave et modul der lægger værdien over i det felt der indeholder tidsangivelse!

Eller sådan her:

Function AngivTid()
  AngivTid = "00:" & inputBox("Skriv tidsangivelse i minutter og sekunder (00:00)")
end function

Og så laver du en henvisning i din formular til denne funktion

Tid = AngivTid
Avatar billede bkp Nybegynder
27. juni 1999 - 11:05 #8
Måske i den hendelse der opretter ny post!!
Avatar billede snej Nybegynder
03. juli 1999 - 22:16 #9
Da jeg er forholdsvis ny til Access, er jeg ikke helt inde i hvordan man laver sådan et modul.

Kan du ikke forklare hvordan jeg skal gøre, for at få det til at virke, altså hvor jeg skal skrive det.

Avatar billede bkp Nybegynder
03. juli 1999 - 23:16 #10
Opret et nyt modul og klip følgende ind i modulet:
Function AngivTid()
  AngivTid = "00:" & inputBox("Skriv tidsangivelse i minutter og sekunder (00:00)")
end function

I en formular hvor du har et felt fra tabellen som datatypen er sat til tid, hvis feltet hedder Tid så lav en hendelse der har denne kode (en trykknap med hændelsen VEDKLIK el.lign. måske den trykknap der opretter ny post):
Tid = AngivTid
Avatar billede snej Nybegynder
05. juli 1999 - 00:10 #11
Denne metode her ser ud til at kunne bruges,den er dog ikke så smart som en indputmaske ville have været.

Den måde du skriver gør dog at jeg stadig skal have fat i et kolon, og det var sådan set for at undgå det at jeg ville lave en indputmaske, men det har jeg løst ved at lave to gange indput box, en for minutter og en for sekunder.

Der er dog det problem, at hvis man ikke taster noget i disse indput bokse så kommer der en runtime error, og det samme hvis man taster tal større end 59, fordi det ikke er tilladte værdier, for henholdsvis timer og minutter.

Er der en mulighed for, at sige, hvis der ikke bliver indtastet noget, så skal der ikke ændres i feltet.

Og kan lave en regel, der gør at man ikke kan gå videre, hvis man tastet et tal der er større end de 59, som er det maksimale antal minutter. Altså en slags validering af det man indtaster i inputboxen.

MVH

JFP
Avatar billede bkp Nybegynder
05. juli 1999 - 19:47 #12
Prøv at lave dit modul om til følgende:

Function AngivTid()
  Dim x as string, y as string
  x = format(val(inputBox("Skriv minutter!")), "00")
  y = format(val(inputBox("Skriv sekunder!")), "00")

  AngivTid = "00:" & x & ":" & y
end function
Avatar billede bkp Nybegynder
05. juli 1999 - 19:51 #13
Eller:
Function AngivTid()
  Dim x as string, y as string, Svar
  Do
      x = format(val(inputBox("Skriv minutter!")), "00")
      if x < 60 then exit do
  loop
  do     
      y = format(val(inputBox("Skriv sekunder!")), "00")
      if y < 60 then exit do
  loop
  AngivTid = "00:" & x & ":" & y
end function
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