JesterMedlem sedan sep. 200188 inlägg Ave
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 ser inte vad som är felet....
Engine^Medlem sedan dec. 20003 887 inlägg Det torde bero på din SQL-fråga.
strSQL = "SELECT 1 FROM Tbl_Dagar WHERE Dag = #" & Me.Indag & "#"
Och det kan vara bra att kontrollera att det inte är något konstigt som har skrivits in innan man försöker köra frågan...
If Not IsNull(Me.Indag) And Not Me.Indag = "" And IsDate(Me.Indag) Then
...
Else
MsgBox "Inget datum angivet.", "Fel", vbOkOnly + vbExclamation
End If
Själva After_Update sker när kontrollen uppdateras: enter trycks eller den tappar fokus t.ex..
AfterUpdate Event
JesterMedlem sedan sep. 200188 inlägg 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
JesterMedlem sedan sep. 200188 inlägg Skulle ta bort detta inlägg men det går inte även att jag har behörighet.....