Har en liten knapp som man trycker på med koden Vill du uppdatera en enskild post? Om formuläret är knytet till tabellen Kit, räcker det bara med: För övrigt kan du inte använda DoCmd.RunSQL tillsammans med SELECT. Det ska användas för INSERT- eller UPDATE-satser. Löst det med er förnäma hjälp - Tack för koden! jag förstår dock inte alla steg än men det klarnar väl efter hand... Nästan rätt. Borde vara så här:SQL i VBA i access
Private Sub Button_Add_To_Offer_Click()
Dim plus As Boolean
plus = True
DoCmd.RunSQL ("SELECT * FROM Kit")
End Sub
Får hela tiden ett felmeddelande med
"Run-time error '2342'"
"A RunSQL action requires an argument consisting of an SQL statement."
Det jag egentligen ville göra var att när man tryckte på knappen skulle den ändra ett fält i tabellen Kit som heter isOffered till true, men det funkade inte heller...Sv: SQL i VBA i access
Private Sub Button_Add_To_Offer_Click()
Me("isOffered") = True
End Sub
Om du vill köra en fråga rekomenderas att du använder ADO. Detta underlättar om du skall migerera till SQL server. Följande kod utgår ifrån att du bara vill uppdatera isOffered för en post:
Private Sub Button_Add_To_Offer_Click()
Dim cmd As ADODB.Command
On Error GoTo Button_Add_To_Offer_Click_Err
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "UPDATE Kit SET isOffered = True WHERE Id = @Id"
cmd.Parameters.Append cmd.CreateParameter("@Id", adInteger, adParamInput, , Me("id"))
cmd.Execute
Button_Add_To_Offer_Click_Exit:
Exit Sub
Button_Add_To_Offer_Click_Err:
MsgBox Err.Description, vbCritical
Resume Button_Add_To_Offer_Click_Exit
End Sub
Du kan ersätta Me("id") med den källa/variable som innehåller id på den post du skall uppdatera. Undvik att använda docmd för databasoperationer då den använder DAO och är en översättning av macroinstruktioner.
Sv: SQL i VBA i access
Se vidare i Hjälp om Visual Basic i Access.
/BSv:SQL i VBA i access
<code>
Private Sub Button_Add_To_Offer_Click()
Dim cmd As ADODB.Command
On Error GoTo Button_Add_To_Offer_Click_Err
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "UPDATE Kit SET isOffered = True WHERE Id = " & Me.List_Kit
cmd.Parameters.Append cmd.CreateParameter(Me.List_Kit, adInteger, adParamInput, , Me.List_Kit)
cmd.Execute
Me.test_Sales_sub_offered_kit.Requery
Button_Add_To_Offer_Click_Exit:
Exit Sub
Button_Add_To_Offer_Click_Err:
MsgBox Err.Description, vbCritical
Resume Button_Add_To_Offer_Click_Exit
End Sub
</code>Sv: SQL i VBA i access
Private Sub Button_Add_To_Offer_Click()
Dim cmd As ADODB.Command
On Error GoTo Button_Add_To_Offer_Click_Err
Set cmd = New ADODB.Command 'Instansierar ett command objekt
Set cmd.ActiveConnection = CurrentProject.Connection 'Tilldelar comand objeten en anslutning att arbeta mot. Anslutningen är den till den öppna databasen.
cmd.CommandText = "UPDATE Kit SET isOffered = True WHERE Id = @Id" 'SQL frågan där @Id är en platshållare för värdet
cmd.Parameters.Append cmd.CreateParameter("@Id", adInteger, adParamInput, , List_Kit.Value) ' Lägger till parametern. Vi anger även här värdet för parametern.
cmd.Execute 'Utför frågan
test_Sales_sub_offered_kit.Requery
Button_Add_To_Offer_Click_Exit:
Exit Sub
Button_Add_To_Offer_Click_Err:
MsgBox Err.Description, vbCritical
Resume Button_Add_To_Offer_Click_Exit
End Sub