Avatar billede oergaard Nybegynder
06. december 2004 - 16:38 Der er 15 kommentarer og
1 løsning

Hjælp til GoToRecord

Jeg har en database, hvor jeg viser mine poster i en SubForm, (kaldet "SubJournaler") og får sine data fra en forespørgsel (kaldet "frsJournaler")  I en anden SubForm har jeg nogle knapper, skal f.eks. ”Opret ny journal”

Min kode på denne knap hedder som følgende:
    Dim NytJournalnr As Long
   
    DoCmd.Close
    DoCmd.OpenForm "Journaler"
    DoCmd.MoveSize 1100, 150, 13230, 9000
    Form_Journaler.Caption = GetProgamname & " [Journaler]"
   
    DoCmd.GoToRecord , , acLast
 
    NytJournalnr = GetNytJournalnr(Form_SubJournaler.Journalnr)
   
    If NytJournalnr <> 0 Then
        Form_SubJournaler.AllowAdditions = True
        DoCmd.GoToRecord , , acNewRec
        Form_SubJournaler.Journalnr = NytJournalnr
        Form_SubJournaler.DatoOprettet = Date
        Form_SubJournaler.AllowAdditions = False
    End If

Det er dog ikke altid, at jeg kan få lov til, at oprette en ny journal. Access reagere som når tilføjelse er deaktiveret, (på trods af, at jeg aktivere den umiddelbart før oprettelse af ny journal)

Hvis jeg f.eks. indsætte nogle MsgBox’ for, at se hvor det går glat oplever jeg lidt forskelligt. Hvis jeg gør som følgede:
   
    DoCmd.GoToRecord , , acLast
 
    MsgBox (GetNytJournalnr(Form_SubJournaler.Journalnr))

Burde den lave det nye journalnr, som f.eks. vil hedde 200-2004 (da den sidste journal hedder 199-2004), men i stedet laver den det nye journalnr ud fra den Journal man står på når knappen aktiveres.

Hvis jeg trykker på ”Opret ny journal” som det først efter jeg har åbnet min database, virker det præcist som det skal, men hvis jeg foretager mig andet forinden virker den ikke.

Ovenstående er måske en anelse forvirrende, da jeg selv er yderst forvirret, skulle i have brug for uddybende skyder i bare løs og så skal jeg prøve, at uddybe og præcisere.
06. december 2004 - 17:03 #1
Prøv dette (det er bare nogle alternative måder at gøre det samme på):

Dim NytJournalnr As Long
   
    DoCmd.Close
    DoCmd.OpenForm "Journaler"
    DoCmd.MoveSize 1100, 150, 13230, 9000
    Form_Journaler.Caption = GetProgamname & " [Journaler]"
    Forms!Journaler.Orderby = "Journalnr"
    Forms!Journaler.Orderbyon = True

    DoCmd.GoToRecord , , acLast
 
    NytJournalnr = GetNytJournalnr(Form_SubJournaler.Journalnr)
   
    If NytJournalnr <> 0 Then
        Form_SubJournaler.AllowAdditions = True
        Form_SubJournaler.DataEntry = True
        Form_SubJournaler.Journalnr = NytJournalnr
        Form_SubJournaler.DatoOprettet = Date
        docmd.Runcommand accmdsaverecord
        Form_SubJournaler.AllowAdditions = False
    End If
Avatar billede overchord Nybegynder
06. december 2004 - 17:10 #2
naar du bruger docmd.OpenForm er der normalt flere settings, herunder hvordan du vil aabne fin formular. Hvis du vil tilfoeje en ny journal vil det maaske vaere brugbart at aabne formularen som acFormAdd. Ellers kan du ogsaa specificere acFormEdit. Det er muligt at formen aabnes som acFormReadOnly hvorfor du faar fejlen naar du proever at tilfoeje.
06. december 2004 - 20:02 #3
Oergaard, hvorfor er det, at du laver hele dette trick?

Hvornår returnerer GetNytJournalnr-funktionen 0?

Jeg tror, at jeg ville bygge den op således:

Dim NytJournalnr As Long
NytJournalnr = DMax("Journalnr", "frsJournaler")
Docmd.Close
docmd.Openform "Journaler"

If NytJournalnr = 0 then
    docmd.Gotorecord ,, aclast
else
    Form_SubJournaler.AllowAdditions = True
    docmd.gotorecord ,, acnewrec
    Form_SubJournaler.Journalnr = NytJournalnr
    Form_SubJournaler.DatoOprettet = Date
    Form_SubJournaler.AllowAdditions = false
endif
Avatar billede oergaard Nybegynder
07. december 2004 - 09:35 #4
thomasjepsen> Den laver journalnr ud fra årstallet. Da det ikke giver mening, at man er gået tilbage i tiden returnere GetNytJournalnr-funktionen ét 0, hvis der forekommer en årstal fejl. Eks. sidste journalnr hedder 101-2004, årstallet på Pc'en er sat til 2003 - Hvis dette er tilfældet returneres et nul, hvorfor der i stedet kommer en fejlmeddelelse og der skal derfor ikke oprettes en ny journal. (det skal lige siges, at jeg har overvejet at fejlmeddelelsen skal stå som følgende :

If GetNytJournaln <> 0 Then
  …
  …
  …
Else
  Fejlmeddelelsen
End If

Men den del er ikke så vigtig, da det pt. blot er funktionen der skriver fejlmeddelelsen.

Grundet Journalnr.’s opbygning kan jeg ikke bare sortere dem. Jeg havde tidligere både et journalnr og journalid, der virkede det perfekt, men efter (thomasjepsen’s) hjælp til sortering uden et journalid, virker det ikke længere.

Sortering indsat i min forsørgelse er som følgende:
ORDER BY Right([Journalnr],4), Val(Left([Journalnr],Len([Journalnr])-4))
Avatar billede oergaard Nybegynder
07. december 2004 - 09:38 #5
Det skal da lige nævnes, at jeg på trods af, at jeg ikke var sikker på om det virkede, afprøvede thomasjepsen svar, men det var desværre uden virkning.
Avatar billede terry Ekspert
07. december 2004 - 10:17 #6
oergaard, if you still have problems getting this working then I will take a look this evening after work if you can send it to me?

eksperten@NOSPAMsanthell.dk
remove NOSPAM
07. december 2004 - 12:41 #7
Du er også velkommen til at sende den til mig, så skal jeg kigge på den med det samme...
Avatar billede oergaard Nybegynder
07. december 2004 - 13:54 #8
Har lige været væk et øjeblik.
    DoCmd.Close
    DoCmd.OpenForm "Journaler"
    DoCmd.MoveSize 1100, 150, 13230, 9000
    Form_Journaler.Caption = GetProgamname & " [Journaler]"

Returnere den det korrekte journalnr, men jeg er så ikke sikker på, at det er den korekte form der vises.

Er der nogen måde hvorpå, man kan kontrollere hvilken form der er åben og sige, at den derfor kun skal udføre ovenstående kode, hvis det ikke er "journaler" der er åben?
07. december 2004 - 13:58 #9
du kan checke om en given formular er åben med denne kode:

If Currentproject.allforms("Journaler").Isloaded then
  ...
endif
Avatar billede oergaard Nybegynder
07. december 2004 - 14:14 #10
Nej det virker desværre heller ikke eller dvs. nu virker det, hvis jeg ikke fra starten står på formen "journaler"...Jeg er yderst forvirret...

Hvis man forestiller sig, at man i én form, har to uafhængig af hinanden tabeller. Kan man så men ét sæt selvdesignet navigationsknapper styrer begge tabeller, med f.eks. en radiobutton. Hvis afmærkning i radiobutton1 bladrer navigationsknapperne rundt i tabel 1, ved afmærkning i radiobutton2 bladrer navigationsknapperne rundt i tabel 2. osv.
Avatar billede oergaard Nybegynder
07. december 2004 - 14:40 #11
Jeg har lavet en lille kopi af min database, som jeg sender til thomasjepsen for videre hjælp. :o)
07. december 2004 - 14:59 #12
er modtaget....
07. december 2004 - 15:06 #13
Har sendt noget tilbage til dig...
22. december 2004 - 15:15 #14
Oergaard, har du kigget på det jeg sendte til dig?
Avatar billede oergaard Nybegynder
03. januar 2005 - 09:30 #15
Hej Alle

Jeg beklager mit lange fravær, men blev d. 10.12.04 kl 0.34 den lykkelige far til en lille pige, hvorfor jeg ikke har siddet foran min skærm i efterhånden alt for lang tid.

Det skal hertil siges, at jeg nu har fået kigget på thomasjepsen's fremsendte materiale, som virker glimrende, hvorfor jeg tildeler ham de 200 points.

Jeg beklager endnu engang mit lange fravær.

Tusind tak for hjælpen.

MVH Oergaard
03. januar 2005 - 09:35 #16
Stort tillykke herfra :o)

Det er helt forståeligt, at du ikke har svaret før nu!

Er det den første? Det er stort, ikke?
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