webForumDet fria alternativet
Logga in / Bli medlem

Funkis i Access, men inte i ADO?

Databaser & SQL

8 svar · 177 visningar · startad av Engine^

Medlem sedan dec. 20003 887 inlägg
Trådstart#1

Jag har ett drygt problem med SQL-sats...

SELECT fnFormatIDDbl2Str(tL.intArtikelID) AS strID, strNamn, CStr(intAntal) + ' / ' + CStr(intLevAntal) AS strAntal, strLevStatus
INTO tblDeliveryTemp
FROM (tblLeverans AS tL
INNER JOIN tblArtikelRegister AS tA ON tA.intArtikelID = tL.intArtikelID)
WHERE intOrderID = " & intOrderID & ";"

Detta fungerar inte när jag försöker öppna mha ADO. Dunkar jag in det i Access och byter " & intOrderID & " mot 1, så fungerar det prima.

Vad är det som är knas?

Medlem sedan dec. 20003 887 inlägg
#2

Jag kanske ska säga att jag får ett Overflow-fel...

Medlem sedan dec. 200012 464 inlägg
#3

Hur ser frågan utan då? Efter konkateneringar etc.

Medlem sedan juni 200032 967 inlägg
#4

Och hur ser felmeddelandet ut lite mer exakt?

Medlem sedan dec. 20003 887 inlägg
#5
SELECT tblArtikelRegister.intArtikelID, tblArtikelRegister.strNamn, intAntal & ' / ' & intLevAntal AS strAntal, tblLeverans.strLevStatus
INTO tblDel
FROM tblArtikelRegister
INNER JOIN tblLeverans ON tblArtikelRegister.intArtikelID = tblLeverans.intArtikelID
WHERE tblLeverans.intOrderID = 1;

Det fungerar finfint att köra i Access.

Jag vill köra in detta i ett recordset kan det vara fel att använda .open? Jag sitter och pillar med VBA... där får jag felmeddelandet 'Overflow' och inget mer :(

intAntal & ' / ' & intLevAntal kommer fram som "50 / 50".

Medlem sedan dec. 200012 464 inlägg
#6

Detta verkar mystifikt. Att använda open eller execute skall inte påverka. Använder du Jet Ole DB eller Access som drivrutin? Kan vara något problem med MDAC?

Medlem sedan dec. 20003 887 inlägg
#7

Jet Ole DB 4.0

Medlem sedan dec. 20003 887 inlägg
#8

Lol!

Nu avbröt jag exekveringen precis innan mitt .open kommando och hoppade in i VBA och körde en connection.execute manuellt och helt plöstligt fungerade det.

Jag ser hur mina gråa hår ökar i antal...

Medlem sedan dec. 20003 887 inlägg
#9

Hmm... jag tycks ha upptäckt problemet.

DBmotorn i Access är lite väl automagisk för min smak... när jag kör via ADO måste jag först DROP:a tabellen för att få göra en ny Make-Table.

oConn.Execute "DROP TABLE tblDeliveryTemp;"
strSQL = ...
oConn.Execute strSQL, , adExecuteNoRecords

Fungerar prima. :)

Irriterande att få ett 'Overflow', när det inte är det som är själva felet utan 'Table already exists'.

258 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)