Jag har ett VBSP6-program där jag i Form Load-eventet öppnar en Accessdatabas och fyller ett Recordset. När jag sedan i programmet sorterar ut vissa poster i detta recordset, vill jag lägga dessa utvalda ercords i en särskild tabell. Då har jag försökt använda execute-metoden. Tyvärr får jag hela tiden ett felmedelande, som jag inte förstår hur jag ska åtgärda. Som felet säger, sql-satsen är felaktig syntax. Ta access och skriv sql-satsen rakt upp och ner och försök få den rätt. Jag är lite osäker på om access klarar en insert och select i samma sats, det återstår för de som kan access att säga. Hej! Felet tyder på att du har stavar ett fältnamn fel (alt. att det inte existerar). Tack för alla tips. Ahh, fldLöpnr är en variabel, då ska det vara såhär: OK! Tack för all hjälp. Jag hade gjort flera fel.Jag har problem med Execute-mtoden...
<code>
'Här öppnar jag och fyller mitt recordset (jag vet att det fungerar)
Private Sub Form_Load()
strAp = App.Path
Set cn = New ADODB.Connection
If Right$(strAp, 1) = "\" Then
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strAp & "Mindatabas.mdb;Persist Security Info=False"
Else
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strAp & "\Mindatabas.mdb;Persist Security Info=False"
End If
cn.Open
Set RS = New ADODB.Recordset
RS.CursorLocation = adUseClient
strSQL = "SELECT * FROM Tabell1 ORDER BY Löpnr"
RS.Open strSQL, cn
RS.MoveFirst
' Här görs en del annat som inte har med mitt problem att göra bl a
Set fldLöpnr = RS("Löpnr")
End Sub
</code>
<code>
' Efter en del behandling av vissa records vill jag lägga tillbaka några i en annan tabell
cn.Execute "INSERT INTO Tabell2 SELECT Fält2 FROM Tabell1 WHERE Löpnr.Tabell1=fldLöpnr", adCmdText
</code>
Det felmeddelande jag får lyder:
Du har inte angett något värde före en eller flrea nödvändiga parametrar
Jag har kollat att cn, fält2 och Löpnr, fldLöpnr har korrekta värden, omedelbart före executesatsen
<b>Jag förstår inte vad jag ska åtgärda för att dete hela ska fungera. Jag behöver tips! </b>Sv: Jag har problem med Execute-mtoden...
Sv: Jag har problem med Execute-mtoden...
en funderan på din
<code>
"INSERT INTO Tabell2 SELECT Fält2 FROM Tabell1 WHERE Löpnr.Tabell1=fldLöpnr",
</code>
om du skall använda en variabel i en SQL satst så skriver du så här
<code>
Dim SQL As string
SQL="Select * from Mintabell where idnr=" & MinVariabel '(Nummerisk avriabel utan ' enkel fnutt
SQL="Select * from Mintabell where namn='" & MinVariabel & "'" '(Strängvariabel med ' enkel fnuttar
</code>
Dessamma gäller för insert
<code>
SQL="INSERT INTO Tabell2 SELECT Fält2 FROM Tabell1 WHERE Löpnr.Tabell1=" & fldLöpnr
</code>
Nu kommer du att ha ett värde. I din lösning så var fldLöpnr inbakad i dein sträng
/TyronneSv: Jag har problem med Execute-mtoden...
Detta ser lite skumt ut: Löpnr.Tabell1 Borde det inte vara Tabell1.Löpnr eller bara Löpnr?
cn.Execute "INSERT INTO Tabell2 SELECT Fält2 FROM Tabell1 WHERE Löpnr.Tabell1=fldLöpnr", adCmdText
/JohanSv:Jag har problem med Execute-mtoden...
Pelle: INSERT INTO med efterföljaden SELECT är stabdard SQL, inget skumt i princip
Tyrone: Jag har provat me att lägga variabeln fldLöpnr utanför strängen och jag får samma fel
Johan: Jag har provat med enbart Löpnr, felet kvarstår
Fundering. Det är ju så att jag öppnar ett rcordset och väljer ut vissa poster som jag vill föra till en särskild tabell i databasen. Kanske måste jag öppna databsen på något sätt för att denna INSERT-operation ska fungera. HUr gör jag det i så fall?
Mer pricipiellt: OM jag ur ett recordset väljer ut vissa poster och vill spara dem i en tabell, hur gör jag det?Sv: Jag har problem med Execute-mtoden...
cn.Execute "INSERT INTO Tabell2 SELECT Fält2 FROM Tabell1 WHERE Löpnr=" & fldLöpnr, adCmdText
/JohanSv:Jag har problem med Execute-mtoden...
Dels var SQL-uttrycket inte riktigt utformat med varablerna, dels var det fel på hela mitt tänk, villket jag upptäckte då jag körde en SQL direkt i Access.
Jag har nu löst mitt problem och jag tackar för den hjälp jag fått. Utan den hade jag tragglat flera dagar ytterligare!
Trevlig helg