29. januar 2008 - 13:03Der er
5 kommentarer og 1 løsning
Hjælp til hændelseskald i Access
I en formular har jeg lidt problemer med at få tingende til at fungere som forventet
I en form, der består af et navne felt, efterfuldt af et dato felt, har jeg sat en knap ind, der når der trykkes, indsætter dags dato i dato feltet, med mindre der stod en dato i forvejen.
Mit problem er, at hvis man går direkte fra navne feltet og klikker på dato knappen, så indsættes datoen, men teksten i navne feltet forsvinder.
[code] Private Sub imgCalendar_Click() Dim dDate, svar, jNavn
dDate = FormatDateTime(DateTime.Now, vbShortDate) If IsDate(DatoStart.Value) Then svar = MsgBox("Vil du overskive den aktuelle dato med dags dato?", vbYesNo) If svar = 6 Then DatoStart.Value = dDate JobNavn.Value = jNavn Else Exit Sub End If Else DatoStart.Value = dDate JobNavn.Value = jNavn End If
Exit_imgCalendar_Click: Exit Sub End Sub [/code]
Mit andet problem er omkring at klippe data sammen til udklipsholderen.
Dette har jeg forsøgt at løse ved at lave et skjult felt, indsætte de data jeg skal bruge, gøre det aktivt, sætte fokus, klippe, skjule, og flytte fokus.
Det er det sidste der driller, for egentligt ville jeg gerne flytte fokus tilbage til den knap jeg trykker på, men det kan man ikke få lov til da man åbenbart kun kan sætte fokus på input felter.
[code] Private Sub imgClipboard_Click() On Error GoTo Err_imgClipboard_Click
With Me.jobIdNavn .Visible = True .SetFocus DoCmd.RunCommand acCmdCopy Me.JobID.SetFocus 'Me.imgClipboard.SetFocus .Visible = False End With
Exit_imgClipboard_Click: Exit Sub
Err_imgClipboard_Click: MsgBox Err.Description & " - " & Err.Number Resume Exit_imgClipboard_Click End Sub [/code]
Så her er jeg kørt lidt fast, og har brug for noget ekspert hjælp for at komme videre.
Private Sub imgCalendar_Click() Dim dDate as date, svar as Byte, jNavn as string Me.JobNavn.SetFocus jNavn = Me.JobNavn dDate = FormatDateTime(DateTime.Now, vbShortDate) If not isnull(Me.DatooStart) Then svar = MsgBox("Vil du overskive den aktuelle dato med dags dato?", vbYesNo) If svar = 6 Then DatoStart = dDate JobNavn = jNavn Else Exit Sub End If
If svar <> 6 then DatoStart = dDate JobNavn = jNavn End If End Sub
Hvis du vil kopiere posten og indsætte den som en ny post, kan du bruge denne:
Okay, jeg har kigget lidt og prøvet den kode du sendte, men som du skrev - så er den meget hurtig (virker ikke uden fejl)
Nu kan man altid begynde at diskutere syntax, men umiddelbart kan jeg ikke se hvad der skulle være radikalt anderledes en den kode jeg postede. Der er brugt en lidt anden termonologi, men for mig at se, gør de to stykker kode nøjagtigt det samme.
Problemet med den første del kode, ligger nok i den måde som Access og formularer fungerer på.
Når jeg skriver noget ind i JobNavn og derefter klikker på imgCalendar_Click, så er data i JobNavn jo ikke gemt endnu, og det virker som om af Acces først der opretter recorden, og indsætter datoen. Problemet er så at den overskriver/fjerner det der stod i JobNavn.
Jeg havde troet at jeg kunne komme omkring dette ved at tage værdien fra JobNavn, gemme den, og derefter paste den ind igen. Problemet er bare, at værdien er null, da formen/data ikke er "registreret" endnu.
-------
Det andet problem, var i øvrigt ikke så meget omkring at kopiere en record, men mere at klippe nogle data fra formen, og gemme dem i udklipsholderen. Det virker som sådan godt nok, men det irriterer mig at fokus flyttes væk fra den knap der ligger data i udklipsholderen.
Kan du ikke blot sætte fokus på den igen efter at have gennemløbet koden? Når du har trykket på knappen vil Access vel flytte fokus til næste kontrolelement i tabulatorrækkefølgen.
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.