Graystone Postad 29 juli, 2014 Share Postad 29 juli, 2014 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 More sharing options...
Ove Söderlund Postad 30 juli, 2014 Share Postad 30 juli, 2014 Jag är inte jätteslängd på Access VBA, men följande sida kanske kan ge dig lite hjälp på vägen till en fungerande lösning: http://bytes.com/topic/access/answers/197835-adding-multiple-records-subform-using-vb Länk till kommentar Dela på andra webbplatser More sharing options...
Graystone Postad 30 juli, 2014 Trådskapare Share Postad 30 juli, 2014 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 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 More sharing options...
Monshi Postad 30 juli, 2014 Share Postad 30 juli, 2014 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 More sharing options...
Rekommendera Poster
Arkiverat
Det här ämnet är nu arkiverat och är stängt för ytterligare svar.