Avatar billede michaelrar Seniormester
16. september 2008 - 10:34 Der er 11 kommentarer og
1 løsning

Indsætte ny record i tabel via kommandoknap

Hej
Jeg er en stor novice i Access VBA/SQl.

Jeg har en tabel indeholdende et antal records med en startdato og en slutdato
Tabel "Periode"
Felter "Begynd" - "Slut"

Jeg har brug for hjælp til en makro som kan:
- indsætte en ny record, hvor feltet "Begynd" er = sidste post i tabellen felt "Slut" + 1 dag
- og hvor feltet "Slut" er = ny record felt "Begynd" + 6 måneder.

Eksempel:
Begynd    Slut
01.01.08  30.06.08 (sidste record)
01.07.08  31.12.08 (ny record som makro skal indsætte)

Takker mange gange på forhånd
Avatar billede mugs Novice
16. september 2008 - 11:00 #1
Private Sub Form_Current()
If Me.NewRecord Then
Me.begynd = DMax("[slut]", "periode") + 1
Me.slut = DateAdd("m", 6, Me.begynd)
End If
End Sub
Avatar billede michaelrar Seniormester
16. september 2008 - 11:30 #2
Hej mugs
Når jeg kører din makro går den ikke ind i if-sætningen (if me.NewRecord = 0 ??).

Har du et hint ?

Takker igen
Avatar billede mugs Novice
16. september 2008 - 12:51 #3
Her fungere koden. Hvor har du sat koden ind?
Avatar billede michaelrar Seniormester
16. september 2008 - 13:16 #4
Private Sub Kommandoknap6_Click()

Me.Begynd = DMax("[slut]", "periode") + 1
Me.Slut = DateAdd("m", 6, Me.Begynd) - 1
Form.Refresh

End Sub
Avatar billede michaelrar Seniormester
16. september 2008 - 13:18 #5
Glemte lige det vigtigste:

Private Sub Kommandoknap6_Click()

If Me.NewRecord Then
Me.Begynd = DMax("[slut]", "periode") + 1
Me.Slut = DateAdd("m", 6, Me.Begynd) - 1
Form.Refresh
End If

End Sub
Avatar billede mugs Novice
16. september 2008 - 13:45 #6
Hvorfor bruger du refresh? Den fungerer ikke ved nye poster, så skal du bruge requery.
Avatar billede michaelrar Seniormester
16. september 2008 - 13:51 #7
Okay, det var jeg ikke klar over (her ser det ud til at virke fint), men det er nu ikke det der er problemet. Den er først kommet til senere da jeg sad og legede lidt med programmet.
Avatar billede mugs Novice
16. september 2008 - 13:56 #8
Du skriver tidligere, at den ikke går ind i If-sætningen. Og det gør den ikke fordi betingelsen ikke er opfyldt.

Når du indsætter koden i en kommandoknap Onclick, går du jo ikke til en ny post altså er betingelsen If Me.NewRecord ikke opfyldt.

Jeg har indsat koden i Private Sub Form_Current() og så måles der korrekt om det er en ny racord.
Avatar billede mugs Novice
16. september 2008 - 13:59 #9
Hvis du vil bruge en kommandoknap kan du bruge denne:

Private Sub Kommandoknap4_Click()
DoCmd.GoToRecord acForm, "periode", acNewRec
Me.begynd = DMax("[slut]", "periode") + 1
Me.slut = DateAdd("m", 6, Me.begynd)
End Sub

Så er der jo ikke brug for en betingelse for NewRecord, da koden jo netop går til en NewRecord.
Avatar billede michaelrar Seniormester
16. september 2008 - 14:14 #10
Det er nok der mit novice kommer ind i billedet :-)

Hvordan "aktivere" jeg koden fra en kommandoknap ?
Avatar billede michaelrar Seniormester
16. september 2008 - 14:36 #11
Der var den jo.

Takker og bukker mange gange. Smid lige et svar
Avatar billede mugs Novice
16. september 2008 - 14:46 #12
Tak for point.
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