webForumDet fria alternativet

Struntar i If sats

3 svar · 128 visningar · startad av Jester

JesterMedlem sedan sep. 200188 inlägg
#1

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
#2

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
#3

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
#4

Skulle ta bort detta inlägg men det går inte även att jag har behörighet.....

132 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)