Avatar billede troelsm Nybegynder
11. august 2002 - 01:59 Der er 3 kommentarer og
3 løsninger

Felt størrelse - tekst kontra dato

Et ganske kort og hurtigt spørgsmål

MS Access 2000.

Hvilken løsning vil give den mindste størrelse eller giver de det samme ?
(Mit forslag(det jeg tror) er skrevet i [].)

En dato gemmes i (fx. 11-08-2002)

Datofelt : Format = Kort datoformat
[8 bytes]

samme dato gemmes istedet i tekstfelter
tekst felt 1 = feltstørrelse = 2 (her gemmes dd)
tekst felt 2 = feltstørrelse = 2 (her gemmes mm)
tekst felt 3 = feltstørrelse = 4 (her gemmes yyyy)
[2 + 2 + 4]

altså samme størrelse uanset om jeg vælger at gemme dato i et datofelt eller spiltter dato op i 3 tekstfelter

eller hvordan ??
Avatar billede neteffect Nybegynder
11. august 2002 - 08:29 #1
Det indbyggede datoformat, DATETIME, fylder 8 bytes og er i Access implementeret som double precision floating-point (type DOUBLE).

Ved at benytte det indbyggede format, får du bedremuligheder for sammenligninger i dine queries, dvs med >, < og BETWEEN
Avatar billede mugs Novice
11. august 2002 - 09:00 #2
Hvis du har dato i din db, bør du principielt vælge et datoformat, idet det forhindrer fejlindtastninger som f.eks dato 32, måden 13 o.s.v. Datoformatet tager ligeledes hensyn til skudår, og ikke mindst af de årsager som neteffect beskriver.

Men hvad er dit formål med at benytte tekstfelter?
Avatar billede nih Novice
11. august 2002 - 11:26 #3
Det klogeste ville være at bruge dateTime datatypen.

Men ellers kan du også bruge data typen byte og integer(heltal)
dag : byte (1 byte)
mnd : byte (1 byte)
aar : integer (2 byte) med 4 cifre.

det er også noget L... at sortere tekstfelter (11 kommer før 2)

Niels
Avatar billede troelsm Nybegynder
11. august 2002 - 12:09 #4
Jeg laver selv datoerne - jeg bruger dem i forbindelse med en kalender.
Og jeg gemmer dem alle med 2 karaktere altså 1 gemmes som 01 netop for at man kan sortere dem, men jeg kan godt se fordelene ved at benytte datoformatet.
Det som interesserede mig mest var hvad der fyldte mindst af hensyn til database størrelsen.

Men jeg hopper nok på den med datoformatet.

I må selvfølgelig gerne komme med yderligere kommentarere selvom jeg har accp. svar
Avatar billede mugs Novice
11. august 2002 - 12:17 #5
Hvordan tilføjer du dato til din kalender? Jeg har et eksempel i Access97 (virker også i 200 og XP), hvor du ved at indtaste 2 datoer (f.eks. 2003-01-01 og 2003-12-31) får tilføjet alle datoer i dette interval. Læg din e-amil, hvis du vil have det tilsendt.
Avatar billede troelsm Nybegynder
11. august 2002 - 12:29 #6
I dag gør jeg som nedenstående
Jeg gemmer også ugenummer - som forklaring til de 3 datoer jeg tester på fx 29-12-2003 er den simple grund af DatePart (og dermed oleaut32.dll) i nogle kalenderår returenere 53 som uge nummer hvor det burde være 1.
DU må da gerne sende dit script - jeg er altid interesseret i at kigge det kan jo være jeg kan bruge noget af det
email er troels@majlandt.dk

mvh
youknow

- - - - - - -
Do Until rs.EOF
  'Set start dato til 1/1-startÅr
  startDato = "01-01-" & startAar
  'Lig et år til og find slut dato
  slutDato = DateAdd("yyyy",1,startDato)
  'udskriv og lig en dag til ad gangen.
  id = rs("id")

  do while CDate(startDato) < CDate(slutDato)

  dag         = DatePart("d", startDato)
    if len(dag) = 1 then
      dag     = "0" & dag
    end if
  moned     = DatePart("m", startDato)
    if len(moned) = 1 then
      moned     = "0" & moned
    end if
  aar         = DatePart("yyyy", startDato)
  week         = DatePart("ww", startDato, vbMonday, vbFirstFourDays)

if startdato = "29-12-2003" then
  week = "1"
end if
if startdato = "31-12-2007" then
  week = "1"
end if
if startdato = "30-12-2019" then
  week = "1"
end if


  SQLstmt = "INSERT INTO Feriedatoer(ID,DD,MM,YYYY,WEEK) Values (" & id & ",'" & dag & "','" & moned & "','" & aar & "','" & week & "')"
  Conn.Execute (SQLstmt)
 
  startDato = DateAdd("d",1,startDato)
loop

rs.MoveNext
Loop
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