Avatar billede haraldblaatand Nybegynder
18. januar 2008 - 09:22 Der er 19 kommentarer

Indsæt aktuel dato et en tabel via VBA rutine

Kære alle
Jeg er ved at rive alt mit hår af i frustration. Jeg forsøger
via INSET INTO i VBA modul, at indsætte dags dato i en tabel jeg har oprette.
Jeg kan godt oprette en dato i feltet, men den er ikke dags dato, det er em dato som hedde 15.06.1895??? Jeg har lave en kontrol, således at når jeg kalder overførelsen poppe er Messagebox op og skrive værdien af Date. Denne værdi er korrekt men den oprettede værdig i tabellen er forkert??? Jeg har prøvet med Date og date$ uden held.

Er der nogen der kan hjælpe og ve dhvad problemet er? Ellers bliver det en meget lang weekend .-)

Mvh.

Morten
Avatar billede jensen363 Forsker
18. januar 2008 - 09:36 #1
Syntaxen Date() giver dags date
Syntaxen Now() giver dags dato incl. klokkeslet
Avatar billede haraldblaatand Nybegynder
18. januar 2008 - 09:55 #2
Uanset om jeg bruger Date eller Date$ så får jeg indsat en dato omkring år 1894 og ikke dagsdato!!! Når jeg forsøger med Now for jeg en fejlmelding "Syntaxfejl, der mangler en operator"
Det skal understreges at det kun er if. med INSERT INTO i et VBA Modul at jeg for problemer. Jeg har ikke problemer ved almindelig brug af Date ()

Min procedure er at jeg i en tabel skal oprette nogle poster (derfor INSERT INTO) Når disse poster oprettes skal der tilknyttes en dags dato. Ved nogen hvordan, altnernative løsninger er menget velkommen.

Og så vil jeg lige nævne at jeg arbejder i Access 2003


Mvh.

Morten
Avatar billede jensen363 Forsker
18. januar 2008 - 09:58 #3
Hvis der er tale om nye data i en tabel, kan du direkte i tabellen angive at default value er Date()
Avatar billede jensen363 Forsker
18. januar 2008 - 09:59 #4
dvs. du ikke behøver at gøre det i vba ... datoen indsættes automatisk ved nye poster
Avatar billede haraldblaatand Nybegynder
18. januar 2008 - 10:12 #5
Hej Jensen

Problemet er så bare at, når jeg indsætter i en tabel med eksempelvis 3 fleter så skal det via INSERT INTO kommandoen også indsættes 3 værdier. INSERT skal matche tabelen. Og hvis jeg opretter en auto dato fejlmelder INSERT INTO komandoen og siger der uoverensstemmelse mellem mellem tabel og INSERT komandoen. Hvordan klares det?

Problemet er det samme hvis der er et autonummerering som primær nøgle i en tabel, det spiller heller ikke sammen med INSERT kommandoren. Har du nogle løsninger?

Mvh.

Morten
Avatar billede jensen363 Forsker
18. januar 2008 - 10:18 #6
Det skulle ikke være nødvendigt ...

Hvordan ser din INSERT INTO sætning ud nu ?
Avatar billede haraldblaatand Nybegynder
18. januar 2008 - 10:31 #7
Kommandoen ser ud som følgende:

strSQL2 = "INSERT INTO tblMemory VALUES (" & LaantagerId & ", " & lstFilm.ItemData(lstFilm.ListIndex) & ", " & Date & ")"

Komandoen fun gere fint, det er bare at datoen der indsættes i tabelen eksempelvis lyder 15.06-1894 og ikke dagsdato. Men når jeg trækker Date ud på en massageboks for at kontrollere den overførte værdi, er datoen i messageboksen rigtige, men stadig forkert i tabellen. Det er da mærkeligt.

Feltet hvor datoen skal indsættes er formateret som et Dag og klokke felt, med et standarddato format

Mvh.

Morten
Avatar billede jensen363 Forsker
18. januar 2008 - 11:21 #8
Dette burde reelt være nok :

strSQL2 = "INSERT INTO tblMemory VALUES (" & LaantagerId & ", " & lstFilm.ItemData(lstFilm.ListIndex) & ")"
Avatar billede haraldblaatand Nybegynder
18. januar 2008 - 11:34 #9
Og hvordan så med dags dato? Tror du jeg kan løse problemet ved at refere til hvilke kolloner der skal skrives til i tblMemory, indsættes daterne jf. ovenstående INSERT INTO og så oprette et automatisk oprettende Date() felt i tabelen som der ikke refereres til i INSERT INTO komandoen.

Kan fejlen ligge i at jeg ikke refere specifikt til hvilke koloner der skal sættes data ind i,  med kun omtaler tblMemory som en samlet tabel? Og INSERT INTO så ser alle koloner i tabelen tblMemory som emner der skal fyldes data i?

Mvh.

Morten
Avatar billede jensen363 Forsker
18. januar 2008 - 11:48 #10
Det skulle "normalt" kunne lade sig gøre at benytte INSERT INTO på dele af tabellen, og så som foreslået automatisk oprettelse af Date() i tabellen
Avatar billede haraldblaatand Nybegynder
18. januar 2008 - 11:51 #11
Hvis jeg eksepmpelvis vil refere til en kolone som hedder "Film" i tabelen tblMemory, hvordan vil det se ud i nedenstående INSERT INTO kommando? Jeg er meget i tvivl om hvordan man bruger "" [] && osv.

strSQL2 = "INSERT INTO tblMemory VALUES (" & LaantagerId & ", " & lstFilm.ItemData(lstFilm.ListIndex) & ", " & LDate & ")"

Mvh

Morten
Avatar billede jensen363 Forsker
18. januar 2008 - 11:54 #12
Et lille fif :-)

Hvis du først opretter en almindelig forespørgsel ... meget lettere, kan du se den tilsvarende SQL-kode bagved som du efterfølgede kan benytte direkte i din modulkode.
Avatar billede haraldblaatand Nybegynder
18. januar 2008 - 12:02 #13
Det har du muligvis ret i. Jeg aner ikke hvordan jeg bruger INSERT INTO i en foresprøgelse :-)

Men eller stiller jeg vel det op på samme måde som det står i parantesen efter Values.
Så hvis jeg vil sættes data ind i kolonnen Film i tabelen tblMemory, så skal det da se sådan her ud: "INSERT INTO tblMemory (" & Film & ") Values... osv.

Eller hvordan?

Mvh

Morten
Avatar billede claus66 Nybegynder
18. januar 2008 - 13:07 #14
Når du arbejder med datoer i Access skal du huske havelåger rundt datoen

strSQL2 = "INSERT INTO tblMemory VALUES (" & LaantagerId & ", " & lstFilm.ItemData(lstFilm.ListIndex) & ", #" & LDate & "#)"
Avatar billede haraldblaatand Nybegynder
18. januar 2008 - 13:16 #15
Hej igen Claus

Hvad er der med de ##. Hvad betyder de?

Måske det er løsningen på mit lidt mærkelige problem.
Avatar billede claus66 Nybegynder
18. januar 2008 - 13:36 #16
De fortæller at der er tale om en dato. Husk at access tolker datoer som mm/dd/åååå. Det er nok derfor du ender i forrige århundrede.
Prøv med:
strSQL2 = "INSERT INTO tblMemory VALUES (" & LaantagerId & ", " & lstFilm.ItemData(lstFilm.ListIndex) & ", #" & format(LDate,'yyyy/mm/dd') & "#)"
Avatar billede haraldblaatand Nybegynder
18. januar 2008 - 13:39 #17
Super godt. Det virkede og løsningen var enkel, nemlig ##
Internettet længe leve!!!

Hvordan i alverden giver man point. Jeg har prøvet at trykke på accepter men det sende mig bare til toppen af siden???

Det er altså bare super fedt. Mange tak for hjælpen til Claus66 og Jensen 363.

Mvh

Morten
Avatar billede claus66 Nybegynder
18. januar 2008 - 13:53 #18
Svar herfra
Avatar billede claus66 Nybegynder
28. januar 2008 - 09:34 #19
Hej Morten
Du har vist glemt at lukke to tråde: denne her samt http://www.eksperten.dk/spm/815293
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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Sr. Test Analyst

DEIF A/S

DevOps Engineer

Danske Commodities A/S

Data technician trainee