Databas: Access XP Jag brukar använda recordset Hej Thomas, Du kan göra det med en fråga istället: Jag änvänder mig av DAO så jag hade skrivit:SQL fråga i Access
Språk: VB
Varför klagar Access på en Selectfråga i VBA när det inte klagar på den när man ställer en vanlig query?
Den undre INSERT INTO fungerar. Jag tänkte ifall någon visste om SELECT inte
fungerar i VBA när man ställer frågan.
Ska man använda sig av någon annat en CurrentDb.Execute när man har en SELECT-sats?
strSql = "SELECT KundID FROM Kunder WHERE KundNr=" & bytKundNr
CurrentDb.Execute strSql
byteKundId = strSql
strSql = "INSERT INTO Försäljning (LeverantörID,KundID,KvartalID,KvalSumma) VALUES (" & bytLeverantörsId & "," & bytKundId & ",1," & bytKvartal1 & ")"
CurrentDb.Execute strSql
.ThomasSv: SQL fråga i Access
Prova med följande
dim rs as dao.recordset
set rs = currentdb.openrecordset(strsql)
if not rs.eof then
msgbox rs("KundID")
end ifSv: SQL fråga i Access
Jag gissar att du får felmeddelandet ...
Run-time error '3065'
Cannot execute a select query
?
En Select-fråga förväntas returnera någonting medan en Insert-fråga inte returnerar något. Där för måste man köra dessa lite olika.
För att köra en Select-fråga kan du använda kod liknande nedanstående:
<code>
Dim strSQL As String
strSQL = "SELECT CompanyName FROM Customers"
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open strSQL, conn, adOpenKeyset, adLockOptimistic
Do While Not rs.EOF
Debug.Print rs.Fields(0)
rs.MoveNext
Loop
' Städa
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
</code>
Hoppas detta hjälper
Micke MicrosoftSv: SQL fråga i Access
<code>
strSQL = "INSERT INTO Försäljning (LeverantörID,KundID,KvartalID,KvalSumma)" & vbCrLf & _
"SELECT " & bytLeverantörsId & ",KundID,1," & bytKvartal1 & vbCrLf & _
"FROM Kunder" & vbCrLf & _
"WHERE KundNr=" & bytKundNr
CurrentDb.Execute strSQL
</code>Sv: SQL fråga i Access
strsql = "SELECT KundID FROM Kunder WHERE KundNr=" + cstr(bytKundNr) + ";"
om kundnumret är numeriskt annars:
strsql = "SELECT KundID FROM Kunder WHERE KundNr='" + cstr(bytKundNr) + "';"
kör med docmd.runsql strsql
Hur som helst, måste du inte avsluta din översta sql-sats??
Sofia