Nu får jag f-n i mig frispel på Access. Funktionen nedan fungerade finfint tills jag pillade runt i formuläret. Nu hoppar den över kontrollen av rsDag och skickar upp Msg boxen i alla fall samt att när man tittar i tabellen så ligger datumet där.
Kör man något After_Update så skall det väl göras innan det skrivs till tabellen?
Private Sub InDag_AfterUpdate()
Dim strSQL As String
Dim rsDag As New ADODB.Recordset
Dim Msg, Style, Title, Response
Msg = "Datumet du angivit finns redan i databasen. Tryck Ok för att visa datumet, _Tryck Cancel för att ange nytt datum"
Style = vbOKCancel + vbCritical
Title = "Anteckningen finns redan"
strSQL = "SELECT 1 FROM Tbl_Dagar WHERE Dag Like " & Me.InDag
rsDag.Open strSQL, CurrentProject.Connection
If rsDag.EOF Then
Response = MsgBox(Msg, Style, Title)
If Response = vbOK Then
DoCmd.OpenForm "Frm_ResSokDag", , , "Dag = #" & Me.InDag & "#", acFormEdit
DoCmd.Close acForm, "Frm_NyDag", acSaveNo
ElseIf Response = vbCancel Then
DoCmd.Close acForm, "Frm_NyDag", acSaveNo
DoCmd.OpenForm "Frm_NyDag", acNormal, , , acFormAdd
End If
End If
Set rsDag = Nothing
End Sub
Jag skall lägga in kollen som du föreslog men skriver man in ett datum som är lagrat sedan tidigare och man trycker på OK så går den vidare till den posten.
Har provat ditt förslag med #-tecken i SQL raden och fungerar inte alls
Reparationsverktygen har jag kört och dyl.
Testade att lägga in ditt förslag på "Noll"-koll och det visade sig att Me.InDag är noll. Vilket är konstigt eftersom man har precis skrivit in datumet, med indatamask, i InDag....
Så här ser koden ut nu
Private Sub InDag_AfterUpdate()
Dim strSql As String
Dim rsDay As New ADODB.Recordset
Dim Msg, Style, Title, Response
Msg = "Datumet du angivit är redan inskrivet. Tryck OK för att se anteckningen."
Style = vbOKCancel + vbCritical
Title = "Redan noterad dagbok"
If IsNull(Forms!Frm_NyDag.InDag) And Forms!Frm_NyDag.InDag = "" Then
strSql = "SELECT 1 FROM Tbl_Dagar WHERE Dag = " & Me.InDag
rsDay.Open strSql, CurrentProject.Connection
If rsDay.EOF Then
If MsgBox(Msg, Style, Title) = vbOK Then
DoCmd.OpenForm "Frm_ResSokDag", acNormal, , "Dag = #" & Forms!Frm_NyDag.InDag & "#", acFormEdit
DoCmd.Close acForm, "Frm_NyDag", acSaveNo
Else
DoCmd.Close acForm, "Frm_NyDag", acSaveNo
DoCmd.OpenForm "Frm_NyDag", acNormal, , , acFormAdd
End If
End If
Else
MsgBox "Den är noll", vbOKOnly + vbExclamation, "Titta här!"
End If
Set rsDay = Nothing
End Sub