20. marts 2001 - 18:25Der er
12 kommentarer og 1 løsning
Fast dato og måned ved indtastning af år
I et datofelt vil jeg gerne kunne nøjes med at indtaste året, fx 93 eller 01, hvorefter de data der registreres fast handler om 1. september pågældende år, altså respektive 01-09-93 og 01-09-01. Kan det lade sig gøre? Eller skal man indtaste hele datoen hver gang?
hvorfor bruger du så ikke bare en integer (heltal), hvor du lagrer 1993 eller 2001, for så derefter at bruge denne til at danne dato\'en i forespørgsler m.v.
Private Sub Text2_AfterUpdate() Me![Text2] = Format(\"01/09/\" & IIf(Val(Me![Text2]) < 50, \"20\" & Me![Text2], \"19\" & Me![Text2]), \"dd-mm-yyyy\") End Sub
Det giver dig følgende:
Hvis du taster et tal (00 - 49), så giver det \"01-09-2000\" - \"01-09-2049\" Hvis du taster et tal (50 - 99), så giver det \"01-09-1950\" - \"01-09-1999\"
Tak til alle for bidrag. Jeg beklager at jeg ikke reagerer så hurtigt, men jeg er kommet til at sætte flere spørgsmål i gang lidt tæt på hinanden, men har opdaget at jeg bedst arbejder færdig med en ting ad gangen. Vender tilbage når jeg har fået kigget på jeres forslag. Til mugs: Ang. spørgsmålet med et felt der styrer andre felter, har jeg netop svaret under det spørgmål: http://www.eksperten.dk/spm/57193
Så er jeg klar igen! Jeg starter helt fra toppen: Ang. snakken om en integer eller eller et integerfelt: Er der en der i første omgang vil forklare mig hvad det er?
Hej Visto Integer er et udtryk for den datatype / størrelse du vælger at benytte i tabeldesign. Du har f.eks Tekstfelt, Datofelt og et Talfelt. Integer er et udtryk for en talstørrelse VBA skal kunne arbejde med. Det definerer du i databasens Dim-definition som F.eks:
Dim Felt1 As String, Felt2 As Integer, Felt3 As Byte
Hvis Felt1 behandles som tekst, Felt 2 og Felt behandles som tal, men forskellen ligger i de talstørrelser der kan være indeholdt i felterne:
Integer rummer tal mellem -327668 til 32767 Byte rummer tal mellem o til 255
Det synes at være tillokkende at benytte så stor en værdi som overhovedet mulig, men du skal tage hensyn til at felterne ikke tager samme plads på harddisken:
Et Byte felt = 1 Byte En Integer = 2 Byte Long og Single = 4 byte hver
Så hvis du har mange talfelter i din database og mange talfelter til hvar post kan det hurtigt komme til at betyde en del, specielt hvis du har begrænset kaopacitet på din PC.
for at sige det kort, så skal du overveje at oprette et heltal i stedet for en dato i dit tabel-design. I dette heltal lagrer du så årstallet, for derved at kunne beregne den 1.september hver gang, du skal bruge det som en dato. =DateSerial([Årstal],9,1)
Jeg prøver i første omgang at gå videre med ProAccess sidste forslag. Jeg har pt desværre alt for svært ved at forstå hvad mugs og moses skriver. Til ProAccess: Hvor skal =DateSerial([Årstal],9,1,) stå? Et eller andet sted i tabellen, i en forespørgsel, i en formular, i en makro?
Til ProAccess: Jeg havde faktisk også prøvet at indtaste i en forespørgsel, men fik meldingen \"Det indtastede udtryk indeholder ugyldig syntaks.\" Jeg ændrede komma til semikolon, og nu virker det!! Spørgsmålet er hermed besvaret, så du får dine point. Men før jeg lukker spørgsmålet vil jeg høre om du vil hjælpe mig med en formaterings-ting i forbindelse med datoerne. Du hjalp mig på et tidspunkt med at løse problemet med at subtrahere to datoer. Det med at indtaste årstallet xx og så få det \"oversat\" til 01-09-xx skal bruges sammen med subtraheringen. Jeg anskueliggør det nok bedst på flg. måde (det handler om en formular, som er lavet på baggrund af forespørgslen med oversættelsen fra år xx til 01-09-xx):
I Felt1 indtastes et årstal som xx, fx 93 eller 01. I Felt2 \"oversættes\" årstallet i felt 1 til 01-09-xx (v.hj.a. DateSerial([Årstal];9;1) I Felt3 indtastes en dato (der altid er \"større\" end datoen i felt 2) I Felt4 subtraheres Felt2 fra Felt3.
Dette kan jeg godt lave ved at indsætte formlen =[Felt3]-[Felt2] i Felt4, MEN resultatet kommer ud i antal dage, hvor jeg gerne vil have det i år og måneder, fx 11.2 for 11 år og 2 måneder - ligesom resultatet i den database, hvor du hjalp mig med at subtrahere.
Felt1: Indtast et årstal som xx, fx 93 eller 01 Felt2: =DateSerial([Felt1];9;1) Felt3: Indtast en dato Felt4: =DateDiff(\"m\";[Felt2];[Felt3])\\12 & \".\" & DateDiff(\"m\";[Felt2];[Felt3]) Mod 12
Du skal stadig holde tungen lige i munden, hvis det drejer sig om felter i forskellige formularer eller sektioner, men ellers er det lige til at skifte felt-navnene ud med nogle, som er lidt mere sigende...
Til ProAccess: Smukt, den er helt hjemme nu! - Du ka bare det der, hva´\'? - Nu skal det så blot implementeres i den rigtige database, hvor du har ret i at tungen skal holdes lige i munden! Der kommer flere Access-spørgsmål, så vi \"mødes\" nok igen! Tak også for denne gang!
Også tak til de andre biddragydere.
Dette spørgsmål lukkes hermed.
Visto
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.