sawMedlem sedan mars 20011 883 inlägg
Nu är det tydligen dags för en runda igen.
Jag har problem med denna uppdaten:
Set mittRS1 = minDB.OpenRecordset("SELECT
t_SongTitlar.Arrno, t_SongTitlar.songtitel, t_placering.Datum
FROM t_SongTitlar INNER JOIN t_placering ON t_SongTitlar.Arrno
= t_placering.ArrNo WHERE songtitel = '" & List3.Text & "' ORDER
BY songtitel", dbOpenDynaset)
strID = mittRS1.Fields!arrno
SQL = "Update t_placering "
SQL = SQL & " Set Datum = #" & strDatum & "#, Placering =" &
strPlacSv & ",omr_id = 1 WHERE ArrNo =" & strID & " AND datum
= #" & List4.Text & "#"
Debug.Print SQL
minDB.Execute SQL
Om jag låter debug printa SQL:em så ser det ut så här:
Update t_placering Set Datum = #2002-04-13#, Placering =17
WHERE ArrNo =41 AND datum = #2002-04-13#
Ändå så får jag detta felmedelande:
Runtime Error 3464
Data type missmatch in criteria expression
Det låter ju som om det vore fel på någon datatyp, men datum är datum/tid, placering är tal strId är text
Någon som har en god idé
:q
SPiNMedlem sedan mars 20005 832 inlägg
Du försöker uppdatera fältet Datum, men du har ändå med det fältet i WHERE-satsen? Verkar skumt att du vill uppdatera datumet till 2002-04-13 på ett fält där datumet redan är det. Mycket möjligt att det är det som ställer till det också.
sawMedlem sedan mars 20011 883 inlägg
Nix, jag testade med att ta bort datumet i uppdateringen, men samma felmedelande.
sawMedlem sedan mars 20011 883 inlägg
JAg märkte ett fel som jag hade på uppdaten:
SQL = "Update t_placering "
SQL = SQL & " Set Datum = #" & strDatum & "#, Placering =" &
strPlacSv & " WHERE ArrNo =" & strID & " AND datum = #" &
List4.Text & "# AND omr_id = 1"
Jag måste ju tala om vilket område som det gäller.
Tyvärr så hjälpte inte detta, jag har fortfarande samma fel
:(
sawMedlem sedan mars 20011 883 inlägg
Löst:
WHERE ArrNo ='" & strID & " '
Så enkelt, och så mycket tid för att kolla ...
sawMedlem sedan mars 20011 883 inlägg
Jag har ändå ett problem.
Om vi utgår ifrån att det inte ligger någon uppgift i databasen om Världen, men jag vill uppdatera den. Alltså strPlacVrld = Text3(3).text
Då blir ju SQL:en
If Not IsNull(strPlacVrld) Or Len(strPlacVrld) > 0 Then
SQL = "Update t_placering "
SQL = SQL & " Set Datum = #" & strDatum & "#, Placering
=" & strPlacVrld & " WHERE ArrNo ='" & strID & "' AND datum =
#" & List4.Text & "# AND omr_id = 3"
minDB.Execute SQL
Debug.Print SQL
End If
Jag får inget Error, men den uppdatera inte.
@ndersMedlem sedan juni 200026 914 inlägg
Hur ser den färdiga SQL-frågan ut då?
sawMedlem sedan mars 20011 883 inlägg
Jag har nog tänkt lite galet.
Jag glömde bort att för varje område så är det en ny post.
Oråde har då följande
1 = Sverige
2 = Europa
3 = Världen
Att jag inte kan uppdatera en tom post säger ju sig självt :r .
Vad jag nu försöker med är att i den SQL:en kolla om placering 3 är tomt eller inte.
Så här:
If Not IsNull(strPlacEu) Or Len(strPlacEu) > 0 Then
SQL = "Update t_placering "
SQL = SQL & " Set Datum = #" & strDatum & "#, Placering
=" & strPlacEu & " WHERE ArrNo ='" & strID & "' AND datum = #"
& List4.Text & "# AND omr_id = 2"
minDB.Execute SQL
End If
If Not IsNull(strPlacVrld) Or Len(strPlacVrld) > 0 Then
Set mittRS1 = minDB.OpenRecordset("SELECT
t_Placering.ArrNo, t_Placering.Datum, t_Placering.Placering " & _
" FROM t_Placering WHERE ArrNo ='" & strID & "' AND
datum = #" & List4.Text & "# AND omr_id = 3")
If mittRS1.EOF Then
SQL = "INSERT INTO t_placering(Datum,Omr_Id,Placering,ArrNo) VALUES(#" & strDatum & "#,3,'"
& strPlacVrld & "', '" & strID & "'"
Else
SQL = "Update t_placering "
SQL = SQL & " Set Datum = #" & strDatum & "#,
Placering =" & strPlacVrld & " WHERE ArrNo ='" & strID & "' AND
datum = #" & List4.Text & "# AND omr_id = 3"
End If
minDB.Execute SQL
End If
Jag tror att jag är på rätt väg, men jag får ett syntax medelande:
RunTime Error 3134
Syntax ERROR in INSERT INTO statement.
Jag tror att det är där jag vill ha in omr_Id vars värde skall vara 3
Vad tror ni?
@ndersMedlem sedan juni 200026 914 inlägg
Du har glömt en slutparentes i din insertsats:
If mittRS1.EOF Then
SQL = "INSERT INTO t_placering(Datum,Omr_Id,Placering,ArrNo) VALUES(#" & strDatum & "#,3,'"
& strPlacVrld & "', '" & strID &[b] "')"[/b]
Mvh,
sawMedlem sedan mars 20011 883 inlägg
Tack @nders, nu fungerade den biten.
Har nu bara ett(vad jag vet) problem kvar.
Om det har funnits en makering i i världen, och jag tar bort den och vill uppdatera, så försvinner värdet, men det ersätts av en nolla!!
Hur får jag bort det??
Jag tror att du förstår bätre om jag nu visar all kod för dig.
If Not IsNull(strPlacEu) Or Len(strPlacEu) > 0 Then
SQL = "Update t_placering "
SQL = SQL & " Set Datum = #" & strDatum & "#, Placering
=" & strPlacEu & " WHERE ArrNo ='" & strID & "' AND datum = #" & List4.Text & "# AND omr_id = 2"
minDB.Execute SQL
End If
If Not IsNull(strPlacVrld) Or Len(strPlacVrld) > 0 Then
Set mittRS1 = minDB.OpenRecordset("SELECT
t_Placering.ArrNo, t_Placering.Datum, t_Placering.Placering " & _
" FROM t_Placering WHERE ArrNo ='" & strID & "' AND
datum = #" & List4.Text & "# AND omr_id = 3")
If mittRS1.EOF Then
SQL = "INSERT INTO t_placering
(Datum,Omr_Id,Placering,ArrNo) VALUES(#" & strDatum & "#,3,'" & strPlacVrld & "', '" & strID & "')"
ElseIf IsNull(strPlacVrld) Or Len(strPlacVrld) = 0 Then
SQL = "delete from t_placering WHERE ArrNo ='" &
strID & "' AND datum = #" & List4.Text & "# AND omr_id = 3"
Else
SQL = "Update t_placering "
SQL = SQL & " Set Datum = #" & strDatum & "#,
Placering =" & strPlacVrld & " WHERE ArrNo ='" & strID & "' AND
datum = #" & List4.Text & "# AND omr_id = 3"
End If
minDB.Execute SQL
End If
Jag är inte säker på att den kommer till delite, det är väll därför
som det blir en nolla?
sawMedlem sedan mars 20011 883 inlägg
Efter en massa krabbande så har jag löst problemet med att köra en delite.