Avatar billede isl19960 Nybegynder
23. april 2003 - 14:06 Der er 15 kommentarer og
2 løsninger

Gå til bestemt record.

Jeg har oprettet en formular hvorpå der skal genopfriskes hvis der bliver ændret i et bestemt felt.

Det kan jeg såmen også godt få til at fungere.
Det jeg mangler er så at man efter opdateringen får stillet cursoren på den record man ændrede på.

Jeg har en afterupdate event på feltet.

Jeg forestiller mig følgende kode:

Dim id As String
id = Me.projektID
Me.Requery
find record og stil sig der.

Det er lige den sidste linie jeg ikke lige kan se hvordan.
projektID er iøvrigt et autonummereret felt.
Avatar billede mugs Novice
23. april 2003 - 14:08 #1
Efter at have ændret på en record, kan du bruge Me.Refresh, der opdaterer den underliggende forespørgsel, uden at flytte fra Current Record, men tilføjer ikke nye poster.

Me.Requery tilføjer nye poster
Avatar billede isl19960 Nybegynder
23. april 2003 - 14:11 #2
Jeg har nu prøvet at bruge me.requery, men jeg skal bruge noget sortering på baggrund af ændringen - det bliver ikke opdateret.
Avatar billede isl19960 Nybegynder
23. april 2003 - 14:16 #3
Måske lidt flere oplysninger er nødvendige.

Det er en fortløbende formular.

Feltet der ændres på er et felt hvorpå man kan sætte en prioritet.
Når man ændre prioriteten skal rækkefølgen ændres på posterne i formularen.
Det virker fint med me.requery - med den undtagelse at focus bliver sat på den første record i formularen.

Jeg forestiller mig at man inden me.requery gemmer hvilken record man står vha. projektID feltet og henter recorden frem igen på den baggrund.
Avatar billede mugs Novice
23. april 2003 - 14:17 #4
Når du bruger Me.Requery, er du jo tilbage ved dit udgangspunkt. Me.Refresh SKAL opdatere den underliggende forespørgsel.
Avatar billede isl19960 Nybegynder
23. april 2003 - 14:22 #5
Ikke desto mindre så er det sådan det er...

Bruger iøvrigt Access XP (2002) DK
Avatar billede mugs Novice
23. april 2003 - 14:54 #6
Kigger på det når jeg kommer hjem fra arbejde, hvis ikke du har fået et brugbart svar senere.
Avatar billede isl19960 Nybegynder
23. april 2003 - 15:03 #7
Tak skal du ha' :)
Avatar billede mugs Novice
23. april 2003 - 17:05 #8
Afprøvet og fungerer:

Dim a As Integer
a = Me.CurrentRecord
Me.Requery
DoCmd.GoToRecord acDataForm, "form1", acGoTo, a
Avatar billede mugs Novice
23. april 2003 - 17:07 #9
Du skal naturligvis ændre "form1" til det aktuelle navn på din formular. Jeg kan sende dig min db, hvori koden er afprøvet. Blot læg din e-mail.
Avatar billede isl19960 Nybegynder
24. april 2003 - 08:39 #10
Se den havde jeg også haft fat i... :)

Det der sker er at den tager løbenummeret fra recorden (hvad nummer den er på listen) man står på - ikke projektID'et.
Det betyder at når man har ændret feltet bliver formularen indlæst igen, men nu står den post man ændrede på ikke som f.eks. nr. 10 på listen. Fokus bliver rigtig nok sat på f.eks. nr. 10 hvor posten stod før, men det kan jeg jo ikke bruge til noget når den er flyttet.
Avatar billede mugs Novice
24. april 2003 - 12:55 #11
Ja - Det kan jeg godt se. Jeg har regnet med, det var den ændrede post's placering i tabellen, du vil blive ståen de på. Såfremt Prioriteten er en unik værdi, så skal denne fungere:

Dim a As Integer
a = InputBox(Prompt:="Indtast ny værdi", Title:="Ny prioritet", Default:="")
Me.prioritet = a
Me.Requery
DoCmd.GoToRecord acDataForm, "form1", acGoTo, a

Hvis prioritet ikke er unik, kan du alternative lave en tekstboks af typen dato/kl, og så "måle" på den største værdi, så jo må være den sidst rettede.
Jeg har rodet lidt med en testdb, som jeg kan sende dig. Blot læg din e-mail inden Kl 13:30, idet jeg skal på arbejde, ellers kan jeg først sende den efter 23:00
Avatar billede isl19960 Nybegynder
24. april 2003 - 13:50 #12
Det nåede jeg så ikke lige :)

... men jeg tror nu nok snart det er nemmere hvis jeg sender dig en kopi af den jeg sidder med så du kan se hvad det er jeg mener...
Avatar billede mugs Novice
24. april 2003 - 23:07 #13
mugs@mail.dk
Jeg er også på arbejde i morgen eftermiddag.
Avatar billede mugs Novice
25. april 2003 - 08:37 #14
Et autonummerfelt er jo unikt, så du kan jo måle på det istedet for prioritet, som vel ikke behøver at være unikt:

Private Sub prioritet_AfterUpdate()
Dim a As Double
DoCmd.GoToControl "id"
a = Me.id
Me.Requery
DoCmd.FindRecord a, acEntire, False, , True, acCurrent, True
End Sub
Avatar billede nih Novice
25. april 2003 - 08:58 #15
Private Sub Kommandoknap2_Click()
  Dim bookm
  bookm = Me.Bookmark
  Me.Requery
  Me.Bookmark = bookm
End Sub
Avatar billede mugs Novice
25. april 2003 - 09:12 #16
Godmorgen nih
Din kode er afprøvet og fungerer perfekt.
Jeg har altså en tendens til at gøre tingene mere indviklede end nødvendigt :o)
Avatar billede mugs Novice
26. april 2003 - 07:28 #17
Der var jeg vist lidt for hurtig. Nih's kode får markøren til at blive på den post i tabelen der er rettet, Og følger ikke den rettede post placering efter Requery.
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