Avatar billede sliber Nybegynder
13. november 2005 - 19:25 Der er 11 kommentarer og
1 løsning

dato problem

Hej Eksperter, nu er den gal igen.

Først har jeg et simpelt spørgsmål:
I en ny database, står der i øverste venstre hjørne ”Microsoft Access” Jeg har en database hvor der står noget andet, hvor henne er man herre over det? Har set mange der skriver sit navn der !

Så den svære:
Jeg har en tabel der bl.a. indeholder en dato, når jeg ændre denne dato, kunne jeg godt tænke mig, at den skrev en ny dato i en anden tabel, nøjagtigt et halvt år ud i fremtiden.
Altså hvis jeg i min formular skriver ”13-11-2005” tilføjer den i en bestemt tabel og et bestemt felt ”13-05-2006”
Nogen der har en ide til det ??

Ser frem til at høre fra Jer :-)
Avatar billede sjap Praktikant
13. november 2005 - 19:30 #1
Programmets navn kan ændres i menuen Funktioner/Start og her kan du så angive din programtitel.
Avatar billede sjap Praktikant
13. november 2005 - 19:32 #2
De 6 måneder kan lægges til datoen med DateAdd funktionen:

DateAdd("m", 6, dindato)
Avatar billede sliber Nybegynder
13. november 2005 - 19:41 #3
Programmets navn ! Bare perfekt - tak skal du ha'

DateAdd("m", 6, dindato) skal det f.eks. skrives i feltet "hændelser" og "ved ændret" og hvor fortæller jeg hvilken tabel og hvilket felt det er den skal ændre?
Avatar billede mugs Novice
13. november 2005 - 19:45 #4
Vedr. Dateadd kan du lægge den i en forespørgsel således.

Udtryk1:Dateadd("m";DITFELT)

derved bliver dateadd funktionen beregnet hver gang du ændrer datoen i DITFELT
Avatar billede mugs Novice
13. november 2005 - 19:47 #5
Bemærk syntaksforskellen mellem VBA og SQL.
Avatar billede sjap Praktikant
13. november 2005 - 19:53 #6
Hvis du vil lave det som en efterændring hændelse kan du prøve med


DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO XYTabel ( XYDato ) SELECT DateAdd('m',6,#" & Format(Me!DatoFelt, "m/d/yyyy") & "#) AS Nydato;"
DoCmd.SetWarnings True

Så skal du lige huske at ændre

XYTabel til navnet på den tabel datoen skal skrives i
XYDato til navnet på det felt som datoen skal skrives i
Me!DatoFelt ændres til navnet på det felt på formularen, hvor du skriver datoen.
Avatar billede sliber Nybegynder
13. november 2005 - 21:29 #7
Hømm jeg får hele tiden en Run-time error 3134, syntaxfejl i INSET INTO-sætningen.
Min kode er blevet som følger:

Private Sub Eftersynsdato_LostFocus()
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO Værktøj ( Næste Eftersyn ) SELECT DateAdd('m',6,#" & Format(Eftersynsdato, "m/d/yyyy") & "#) AS Nydato;"
DoCmd.SetWarnings True
End Sub

Nogen ideer til hvad jeg gør galt ?
Avatar billede sjap Praktikant
13. november 2005 - 21:35 #8
Det skyldes at dit feltnavn indeholder et mellemrum. Prøv med

DoCmd.RunSQL "INSERT INTO Værktøj ( [Næste Eftersyn] ) SELECT DateAdd('m',6,#" & Format(Eftersynsdato, "m/d/yyyy") & "#) AS Nydato;"
Avatar billede sliber Nybegynder
13. november 2005 - 22:18 #9
Ja det var det der var galt, nu indsætter den datoen lige så flot i den tabel jeg ønskede. Bortset fra at den opretter den som en ny post, den skal selvfølgelig gøre det i den post jeg arbejder med. Den kender jeg på et felt der hedder "Værktøj ID" Kan det også lade sig gøre.

Må jo også lige indrømme: I ved godt nok hvad i tale om her inde...
Avatar billede sjap Praktikant
13. november 2005 - 22:35 #10
Ja, så er det jo lige en anden type forespørgsel der skal bruges.

Hvis din Værktøj ID også er på formularen, kan du prøve med

DoCmd.RunSQL "UPDATE Værktøj SET Værktøj.[Næste eftersyn] = DateAdd('m',6,#" & Format(Me!DatoFelt, "m/d/yyyy") & "#) WHERE (((Værktøj.[Værktøj ID])=" & Me.[Værktøj ID] & "));"
Avatar billede sliber Nybegynder
13. november 2005 - 22:52 #11
Jamen du er simpelthen bare god !
Der var lige et Me. formeget og så måtte jeg rette det sidste "Værktøj ID" da den hed noget andet i den tabel jeg kom fra, men det virker bare.... Jeg er imponeret. Nu fandt jeg også selv ud af at gøre tallet "6" til en variabel fra en anden tabel, så jeg tror også jeg har lært noget af dig.

Endnu engang tusind tak....
Avatar billede sjap Praktikant
13. november 2005 - 22:56 #12
Ja, det var bare for at teste dig! (eller også var det ikke)

Det er helt suverænt, hvis du føler du har lært noget, og at du nu udvider funktionaliteten på egen hånd. Det er jo et af de væsentligste formål med Eksperten.

God fornøjelse. :0)
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