Hjälp! Vad gör jag för fel? Jag vill använda värdena i en tabell (60002) för att uppdatera en annan (Lager). Men jag får felmeddelandet: Syntaxfel (Operator saknas) i frågeuttrycket 60002.antal. Du har inte med tabellernas namn i din SQL-fråga: Jag tror att det kan bero på att 60002 inte kan användas direkt som tabellnamn i SQL. Jag testade i SQL Server (har inte användt Access på länge :-) och den accepterade inte ett tabellnamn som heter 60002 om man inte använder följande syntax: [60002]. T.ex. SELECT * FROM [60002]. Hej! Hej igen,Uppdatera databas
<code>
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim sConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Lennart\Mina dokument\first.mdb"
Dim objConn As New OleDb.OleDbConnection(sConnection)
Dim sSQL As String = "UPDATE Lager SET Lager.I_lager = 60002.Antal WHERE Lager.ItemNr = 60002.ItemNr"
Dim myCommand As New OleDb.OleDbCommand(sSQL, objConn)
myCommand.Connection.Open()
myCommand.ExecuteNonQuery()
myCommand.Connection.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
</code>
Tacksam för svar.
Lennart JSv: Uppdatera databas
UPDATE Lager
SET Lager.I_lager = 60002.Antal
from Lager,60002
WHERE Lager.ItemNr = 60002.ItemNrSv: Uppdatera databas
[]-syntaxen kan alltid användas i SQL för att unvika att SQL tolkar som reserverat ord. Det kan t.ex vara användbart om du har en tabell som heter ORDER, försök selecta från den annars...
Test om följande kan funka:
UPDATE Lager SET Lager.I_lager = [60002].Antal WHERE Lager.ItemNr = [60002].ItemNr
/MattiasSv: Uppdatera databas
Testade men fick svaret att det inte angetts något värde för en eller flera nödvändiga parametrar.
LennartSv: Uppdatera databas
följande skall dock fungera:
UPDATE 60002 INNER JOIN Lager ON [60002].Itemnr = Lager.Itemnr SET Lager.I_Lager = [60002].[Antal];
Detta är den SQL ACCESS själv genererar om man väljer att designa en query.