JesterMedlem sedan sep. 200188 inlägg
Hej
Jag håller på och klurar på en funktion som skall ställa en fråga mot databasen och beroende på om frågan returnerar ett resultat eller inte skall saker hända.
Koden ser ut:
question = "SELECT Dag FROM Tbl_Dagar WHERE Dag Like " & Me.InDag
If IsNull(question) Then
Response = MsgBox(Msg, Style, Title)
If Response = vbOK Then
DoCmd.OpenForm "Frm_ResSokDag", acNormal, , "Dag = " & Me.InDag, acFormEdit
DoCmd.Close acForm, "Frm_NyDag", acSaveNo
Else
Me.InDag.SetFocus
Else
Me.Dagbok.SetFocus
Detta är inte hela funktionen utan bara det väsentliga samt att jag vet att den är fel men det en bild av hur jag tänkte.
Hur testar jag min sql-fråga med IF??
Finns där en bättre lösning??
Tack på förhand!!
Engine^Medlem sedan dec. 20002 861 inlägg
Genom att köra frågan...
Dim rsDag As New ADODB.Recordset
question = "SELECT Dag 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", acNormal, , "Dag = " & Me.InDag, acFormEdit
DoCmd.Close acForm, "Frm_NyDag", acSaveNo
Else
Me.InDag.SetFocus
End If
Else
Me.Dagbok.SetFocus
End If
Set rsDag = Nothing
JesterMedlem sedan sep. 200188 inlägg
Ett förtydligande
Hej och tack för svaret, skall genast prova.
Dock har jag en fråga angående din lösing.
Du skrev...
question = "SELECT Dag FROM Tbl_Dagar WHERE Dag Like " & Me.InDag
rsDag.Open strSQL, CurrentProject.Connection
För att få det att gå ihop bör det väl vara
[U]strSQL[/U] = "SELECT Dag FROM Tbl_Dagar WHERE Dag Like " & Me.InDag
rsDag.Open strSQL, CurrentProject.Connection
Har jag tolkat det rätt??
Engine^Medlem sedan dec. 20002 861 inlägg
Hehe... jodå, du har förstått det helt riktigt :)
Jag som fumlade en aning med tangentbordet bara ;)
JesterMedlem sedan sep. 200188 inlägg
Vad är fel i koden
Hej
Jag har något fel denn kod men ser inte vad det är
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 Dag 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", acNormal, , "Dag Like " & Me.InDag, acFormEdit
DoCmd.Close acForm, "Frm_NyDag", acSaveNo
Else
Me.InDag.SetFocus
Exit Sub
End If
Else
Me.Dagbok.SetFocus
End If
Set rsDag = Nothing
När jag försöker öppna ResSokDag hittar den inte dagen och när jag trycker Cancel så sätter den inte fokus på InDag.
Någon som har en bra ide vad det är för fel??
Engine^Medlem sedan dec. 20002 861 inlägg
I och med att du tesar med
If rsDag.EOF Then ...
betyder det att du ställer frågan om datumet är ledigt.
strSQL = "SELECT 1 FROM Tbl_Dagar WHERE Dag Like " & Me.InDag
rsDag.Open strSQL, CurrentProject.Connection
If Not rsDag.EOF Then
If MsgBox(Msg, Style, Title) = vbOK Then
DoCmd.OpenForm "Frm_ResSokDag", acNormal, , "Dag Like " & Me.InDag, acFormEdit
DoCmd.Close acForm, "Frm_NyDag", acSaveNo
Else
Me.InDag.SetFocus
Exit Sub
End If
Else
Me.Dagbok.SetFocus
End If
rsDag.Close
Set rsDag = Nothing
Så skulle jag ha gjort om jag förstår din kod riktigt.
JesterMedlem sedan sep. 200188 inlägg
Ave
Nej det funkar inte.
Det jag vill göra är att när man skall lägga in en ny anteckning så efter man slagit in datumet så skall den kolla om en anteckning för det datumet redan existerar.
Existerar den så skall man genom att trycka Ok förflyttas till ett annat formulär där man redigerar posten. Trycker man Cancel så skall fokus sättas på datumfältet så man kan slå in ett nytt datum.
Existerar inte datumet så skall fokus sättas på anteckningsboxen.
Probelemet är 2 st. Dels kommer posten inte upp i det nya formuläret när man tryckt Ok och trycker man Cancel så sätts inte fokus i datumfältet.
Ditt förslag gjorde att det blev tvärt om att alla som inte existerade redan, studsade.
Engine^Medlem sedan dec. 20002 861 inlägg
Ok, då var det jag som missförstog ändå. Men men...
Då tycker jag ju faktiskt att den kod du visade bör ha fungerat utan några problem. Fokuseringen ska helt enkelt fungera, så jag begriper inte varför det inte gör det. Testa peta in någon annan kod i else-delen och se om den körs när du trycker Cancel. Det kanske kan vara så att din MsgBox är knasig?
Jag kanske kan kika på din databas och se om jag upptäcker något, för som det är nu gör jag inte det. Det borde ju fungera ;)
JesterMedlem sedan sep. 200188 inlägg
Jag får f-n i mig raptus på detta....Nu funkar inte ens orginallösningen som jag fick utav dig. Då fungerade åtminstone kollen av datumet. Rikskeff. x(
Du får gärna ta en titt...databasen är så simpel så det borde inte finnas något annat som krånglar till det. :l
pontus@gavatum.com så mailar jag tillbaka den
Tack på förhand!