Avatar billede -anders- Juniormester
25. maj 2015 - 13:04 Der er 8 kommentarer og
1 løsning

Spørge på om en dato allerede findes som post i en tabel (VBA) Access 2010

Hej eksperter

Jeg bokser med et problem som jeg ikke kan løse. jeg har en tabel med navnet TBLjob. I denne tabel er der et felt med navnet JobDato, feltet er af datatypen Dato/klokkeslet med formatet kort datoformat. Jeg har så en formular med navnet FRMredigerjob, hvor feltet JobDato indgår. Når jeg åbner denne formular på en valgt post (denne kode er på plads) er det muligt ændre datoen i feltet JobDato. Hvis man ændre datoen i feltet JobDato vil jeg gerne spørge på om den nye JobDato allerede findes i TBLjob. Hvis den nye dato allerede findes som en post i tabellen TBLjob skal der vises en fejlmeddelse (msgBox). Hvis den nye dato ikke findes som en post i tabellen TBLjob, skal der vises en meddelse (Msgbox) med knapperne Ja og Nej. klikker man på Ja ændres JobDato, klikker man på Nej skal datoen ikke ændres.

Jeg har forsøgt med DlookUp, og DCount, men kan ikke få det til at virke. Er der nogen som har et forslag til en løsning på dette problem, er der 100 "gode" point på spil :-)

Hilsen
Anders.
Avatar billede mugs Novice
25. maj 2015 - 13:31 #1
Ikke afprøvet:

If MsgBox DCount("*", "TBLjob", "[JobDato]= #" & Me.JobDato& "#")>0 Then
Me.undo
exit sub
end if
Avatar billede terry Ekspert
25. maj 2015 - 13:51 #2
Hi Anders
If the field only contains a date (no time)then try putting a unique index on the field, then you can catch the error when you try and create record. If you get no error then display

your msgbox

If there is a time then try using something like this (not tested)

Dcount("*", "TBLjob", "Format([JobDato], 'YYYY-MM-DD') = Format(#" & me.JabDato &  "#, 'YYYY-MM-DD')")
Avatar billede -anders- Juniormester
25. maj 2015 - 19:28 #3
Hej

Tak for jeres indlæg, Allerførst-i nogen sammenhænge skal det være muligt at oprette poster med samme dato, så feltet JobDato kan ikke være unik.

jeg har prøvet jeres forslag, men oplever underlige ting. Så længe den gamle og nye dato ligger inden for 30 dage (+, -) virker begge forslag, men kommer jeg "længere ud" virker det ikke.

Hvis jeg fx opretter en post med datoen 25-05-2015 virker jeres forslag så længe den nye dato ligger inden for 30 dage (+ .- uafhængigt af årstal)på den oprindelige dato, men kommer jeg "længere ud end 30 dage" virker det ikke. Det er svært at forklare, men håber i forstår :-)
Avatar billede -anders- Juniormester
25. maj 2015 - 20:01 #4
Som skrevet i seneste kommentar er de svært at forklare, men dybest set går det ud på følgende:

Når jeg opretter en ny post skal koden spørger på om den angivne dato (dd-mm-yyyy) allerede findes i tabellen TBLjob. Hvis den gør skal der vises en msgBox med en Ja, Nej knap. Klikker på Nej skal oprettelsen af den nye post annulleres, klikker man på Ja skal posten oprettes. Hvis der ikke findes en post med den angivne dato skal posten oprettes uden at der vises en meddelelse.

Det samme skal ske hvis jeg ændre datoen på en eksisterende post.

Der er ikke tidspunkter involveret, der skal kun spørges på dato (dd-mm-yyyy)
Avatar billede terry Ekspert
25. maj 2015 - 20:26 #5
dd-mm-yyyy format is very likely problem

You should use either mm-dd-yyyy (US)or YYYY-MM-DD format



Dim answer As Integer

    answer = 7 'Default = VBNo which is 7
    If Dcount("*", "TBLjob", "Format([JobDato], 'YYYY-MM-DD') = Format(#" & me.JabDato &  "#, 'YYYY-MM-DD')") > 0 Then
   
   
        answer = MsgBox("Create record?", vbQuestion + vbYesNo)
   
   
    End If

    If answer = vbYes Then
   
        'Create the record
    End If
Avatar billede terry Ekspert
25. maj 2015 - 20:29 #6
OK, if you want to create without asking when no records exist then change default to 6 (VBYes)
Avatar billede -anders- Juniormester
25. maj 2015 - 21:25 #7
Hej Terry

Tak for indlægget, nu virker det. Læg et svar så du kan få point. Mange tak for hjælpen. Også tak til mugs for indlæg, dejligt at se at i begge stadig er aktive i dette forum :-)
Avatar billede terry Ekspert
26. maj 2015 - 10:56 #8
Great to hear you got it working Anders.
Avatar billede terry Ekspert
26. maj 2015 - 13:32 #9
Thanks
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