Har problem med min lilla databaskoppling. Hur ser SQL-frågan ut som du kör? Typ:<code> SELECT ROUND(SUM(värden),2) FROM tabell</code> Hittade svaret genom att Googla lite mera...Varför kan man inte använda funktionen Round medOLEDB och Access? (I VB6)
Det har tidigare funkat, men nu är det hopplöst stopp.
Har en sub för att sköta alla SQL-kommandon mot databasen, men det går inte att köra med funktionen Round.
Får bara felmeddelandet: <code>Undefined function 'round' in expression.</code> när jag försöker.
Jag vet ju att det inte är fel på SQL-koden, då den funkar i en äldre version av mitt program.
Subben:
<code>
Public Sub SQLUtanRetur(DBSökväg As String, SQLsträng As String, _
Optional ignoreraVarningar As Boolean = True)
' utför SQL-kommandot i SQLSträng utan att returnera några data
Dim rs As ADODB.Recordset
Err.Clear
If ignoreraVarningar Then
On Error Resume Next
End If
Set db = New ADODB.Connection
'db.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & DBSökväg
db.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DBSökväg & ";"
'db.Open "Provider=Microsoft.Jet.OLEDB.3.51; Data Source=" & DBSökväg & ";"
'db.Open "DSN=MS Access-databas;" & DBSökväg & ";DriverId=281;FIL=MSAccess;MaxBufferSize=2048;PageTimeout=5;UID=admin;"
If Err.Number Then
Debug.Print "Fel med anslutningen: " & Err.Description
End If
Debug.Print "SQLSträngUtanRetur |" & SQLsträng & "|"
db.Execute SQLsträng
Debug.Print "Retur av SQLUtanRetur |" & Error & "|"
' stänger kopplingen till databasen
db.Close
End Sub
</code>
(Lämnade med de andra anslutningssträngarna som jag försökt med också...)
i References är följande ibockade:
Microsoft ActiveX Data Objects Recordset 2.8Library
Microsoft Access 10.0 Object Library
Microsoft Data Binding Collection
Microsoft Data Access Components Installed Version
Microsoft Data Source Interfaces
Microsoft ActiveX Data Objects 2.8 Library
Microsoft Data Adapter Library
Microsoft Jet and Replication Objects 2.6 Library
Microsoft Data Formatting Object Library 6.0 (SP4)
Microsoft DAO 3.51 Object Library
Vad nu allt detta innebär...?Sv: Varför kan man inte använda funktionen Round medOLEDB och Access? (I VB6)
/JohanSv:Varför kan man inte använda funktionen Round medOLEDB och Access? (I VB6)
Har även försökt med CONVERT, då värden är av typen CHAR.
(men det är bara numeriska värden som returneras i min fråga...)
Andra funktioner så som LEFT och MID funkar ju fint.
Har ett annat exempel på SQL-fråga:
<code>INSERT INTO tblRapport SELECT 1 AS sida, left(nr,999) + ' ' + för_namn + ' ' + eft_namn AS kolumn1, ROUND(('" & aktuellMånad & "' - (left(pers_nr,8))) / 10000, 0) AS kolumn3, mid(pers_nr,7,2) + '/' + mid(pers_nr,5,2) AS kolumn4, mid(pers_nr,5,2) + (mid(pers_nr,7,2)/100) AS rad FROM anst_tab WHERE status = 'A' AND (mid(pers_nr,5,2) = " & Mid(aktuellMånad, 5, 2) & " OR mid(pers_nr,5,2) = " & Mid(nästaMånad, 5, 2) & ") " ' ORDER BY mid(pers_nr,5,2)" ', mid(pers_nr,7,2)"</code>
Där aktuellMånad innehåller just den aktuella månaden i formatet ÅÅÅÅMM00 från VB....Sv: Varför kan man inte använda funktionen Round medOLEDB och Access? (I VB6)
Det var bara att köra uppdateringen Service Pack 6 för VB6, så löste sig det hela...