---
title: "Problem med uppdate"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/43420-problem-med-uppdate"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "saw"
published: "2002-05-09T11:10:05.000Z"
updated: "2002-05-09T17:00:49.000Z"
replies: 10
views: 311
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/43420-problem-med-uppdate"
---

# Problem med uppdate

## #1 — saw, 2002-05-09T11:10Z

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

Permalänk: https://www.webforum.nu/p/43420

## #2 — SPiN, 2002-05-09T11:13Z

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å.

Permalänk: https://www.webforum.nu/p/671024

## #3 — saw, 2002-05-09T11:20Z

Nix, jag testade med att ta bort datumet i uppdateringen, men samma felmedelande.

Permalänk: https://www.webforum.nu/p/671029

## #4 — saw, 2002-05-09T11:42Z

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
 :(

Permalänk: https://www.webforum.nu/p/671037

## #5 — saw, 2002-05-09T12:31Z

Löst:
WHERE ArrNo ='" & strID & " '
Så enkelt, och så mycket tid för att kolla ...

Permalänk: https://www.webforum.nu/p/671056

## #6 — saw, 2002-05-09T13:16Z

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.

Permalänk: https://www.webforum.nu/p/671068

## #7 — @nders, 2002-05-09T13:49Z

Hur ser den färdiga SQL-frågan ut då?

Permalänk: https://www.webforum.nu/p/671080

## #8 — saw, 2002-05-09T13:57Z

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?

Permalänk: https://www.webforum.nu/p/671084

## #9 — @nders, 2002-05-09T14:00Z

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,

Permalänk: https://www.webforum.nu/p/671085

## #10 — saw, 2002-05-09T15:29Z

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?

Permalänk: https://www.webforum.nu/p/671113

## #11 — saw, 2002-05-09T17:00Z

Efter en massa krabbande så har jag löst problemet med att köra en delite.

Permalänk: https://www.webforum.nu/p/671134

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/43420-problem-med-uppdate
