Just nu i M3-nätverket
Gå till innehåll

Uppdatera underformulär med flera poster


Graystone

Rekommendera Poster

 Hej

 

Jag har som hobbyprojekt en accessdatabas för mina böcker. Försöker nu att automatiskt uppdatera en post med uppgifter från libris webservice. Så länge det bara är en författare funkar det bra, men är det flera får jag problem. Kod enligt nedan:

 forf() = Split(Bok.Forfattarnr, ";")
    For i = LBound(forf()) To UBound(forf())
      If forf(i) <> "0" And forf(i) <> "" Then
        If Me.ufrmForfattare.Form.Dirty Then Me.ufrmForfattare.Form.Dirty = False
        If Me.ufrmForfattare.Form.Recordset.RecordCount > 0 Then
          Me.ufrmForfattare.Form.SetFocus
          DoCmd.GoToRecord , , acNewRec
        End If
        Me.ufrmForfattare.Form.Namn.Value = forf(i)
      End If
    Next i

Me.ufrmForfattare.Form.SetFocus ger felmeddelandet:

Körfel 2449 Det förekommer en ogiltig metod i ett uttryck.

 

DoCmd.GoToRecord,,acNewRec skapar en ny post i huvudformuläret istället för i underformuläret. Tar jag bort den raden så skrivs den första författaren över av den andra... Likaså om jag byter till Me.ufrmForfattare.Form.Namn.SetFocus så är det den första posten som redigeras.

 

Någon som har en idé om vad jag missar/tänker fel?

Länk till kommentar
Dela på andra webbplatser

Tack för ditt engagemang! Jag har sett sidan du länkar till men inte fått det att fungera. Men, efter att jag upptäckte att jag för länge sedan lagt till en "on error resume next" längre upp i koden och tagit bort det blev det myyycket lättare att felsöka  :P

 

Jag har nu fått följande kod att fungera 

    forf() = Split(Bok.Forfattarnr, ";")
    With Me.ufrmForfattare.Form.Recordset
      For i = LBound(forf()) To UBound(forf())
        If Me.ufrmForfattare.Form.Dirty Then
          Me.ufrmForfattare.Form.Dirty = False
        End If
        If forf(i) <> "0" And forf(i) <> "" Then
          .AddNew
          .ForfNr.Value = forf(i)
          .Boknr.Value = Me.Boknr
          .Update
        End If
      Next i
    End With

Om någon annan råkar ut för samma problem kan jag tillägga att huvudformuläret måste vara sparat (Dirty = false) innan man ger sig på underformuläret och att de två fält jag sparar till är namnen från recordsetet, inte kontrollnamnen i formuläret.

 

Hur som helst är jag fortfarande intresserad av varför koden från det första inlägget inte fungerar, alltid trevligt med nya lärdomar...

Länk till kommentar
Dela på andra webbplatser

Utan att kunna VBA för Access, men setfocus kanske kräver att objektet är aktivt, är på topp i vyn, för att du ska kunna sätta fokus.

Generellt är det nog en god idé, även i Access, att undvika operationer som agerar på GUI, försöker använda egenskaper/påverka vad som är aktivt  med kod.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...