Hur ser makrot ut som synkar två st formulär med t.ex personnummer. Okej då ska vi se. Det kan var så att den inte hittar posten. Om t.exempel den blivit bortagen i ett recordset osv. Du kan lösa detta på flera sätt, men prova gärna detta: Får tacka ALLA hjälpsamma, har ej hunnit prova ännu men det kommer.synkronicera
När man går från ett formulär till ett annat vill man få fram uppgifterna på personen man hade i första förmuläret direktSv: synkronicera
Formulär AllaNamn är det som du vill synkronisera.
Formulär VäljPerson är det formulär där en person väljs.
Jag har skapat en combobox på VäljPerson och på dess afterUpdate-händelse har jag lagt till ett anrop till en funktion på AllaNamn:
<code>Form_AllaNamn_f.Synkronisera Me.comboNamn.Value</code>
Funktionen Synkronisera tar ett personnr och letar reda på rät post och visar den:
<code>Sub Synkronisera(varPersonnr As String)
'Ett recordset av typen DAO
Dim rsttemp As DAO.Recordset
'Recordsetet sätts till formulärets recordset med hjälp av clone.
Set rsttemp = Me.RecordsetClone
'Genom att använda funktionen FindFirst kan vi leta reda på rätt person.
'Findfirst tar ett villkor som det ser ut i en sql-sats.
rsttemp.FindFirst "Personnr = '" & varPersonnr & "'"
'För att visa rätt post på formuläret sätter vi formulärets bokmärke till
'recordsetets bokmärke.
Me.Bookmark = rsttemp.Bookmark
'Avslutar med att stänga bokmärket och sätta det till nothing.
rsttemp.Close
Set rsttemp = Nothing
End Sub</code>
Hoppas att det här hjälper.Sv: synkronicera
<code>
Function GoTo(ByVal varPersonnr As String) As Boolean
Dim rsttemp As DAO.Recordset ' Deklarera en variabel för vårt DAO.Recordset
'Formulärets recordset clonas.
'Detta för att kunna sök utan att aktuell post förändras
Set rsttemp = Me.RecordsetClone
'Genom att använda metoden FindFirst på recordsetet kan vi söka efter en post.
'Findfirst tar ett eller flera SQL where villkor.
rsttemp.FindFirst "Personnr = '" & varPersonnr & "'"
If rsttemp.NoMatch Then
GoTo = False
Else
'Navigerar formuläret till samma post som vår clon befinner sig.
'Det vill säga att formuläret går till funnen post
Me.Bookmark = rsttemp.Bookmark
GoTo = True
End If
'Avslutar med att stänga recordset och frigöra objektet genom att säta .
rsttemp.Close
Set rsttemp = Nothing
End Function
</code>
Har skrivit om din funktion för att svar om den hittat eller inte hittat posten.
Sedan får koden som kallar på GoTo funktionen avgöra om den vill visa ett felmedelande för användaren:
<code>
If Forms("AllaNamn_f").GoTo(Me.comboNamn.Value) Then
Else
Msgbox "Kan ej finna en post med angivet personnummer!"
End If
</code>Sv: synkronicera
I det ena formuläret hade du väl tänkt dig att lägga till en knapp för att anropa det andra formuläret. Jag förutsätter att ditt första formulär heter Kunder, och ditt andra Order. I knappen lägger du till följande kod:
Dim stLinkCriteria As String
stLinkCriteria = " PersonNr = Forms![Kunder]![PersonNr]"
DoCmd.OpenForm "Order", acNormal, , stLinkCriteria
Om det finns flera poster i det andra formuläret, så kanske du föredrar att visa posterna som ett datablad istället, då ändrar du acNormal till acFormDs.
Om det saknas poster i det andra formuläret och du vill göra tillägg, så kan du i detta formulär lägga till en rad i formulärets händelse "Vid ny post" (Current), som gör att personnr hämtas in i posten:
Me.PersonNr = Forms![Kunder]![PersonNr]Sv: synkronicera
Tack ännu en gång
Peter