Condividi tramite

Querydef in VBA per esecuzione in SQL Server

Anonimo
2012-05-23T14:31:16+00:00

Salve,

Ho creato una query TSQL piuttosto complessa, ma che funziona perfettamente se la eseguo come SQL direct.

Copio il codice in VBA e non posso eseguirla. L'errore è il seguente : "3129 - Instruzione SQL invalida, ..."

Vorrei sapere se è possibile eseguire query TSQL da VBA.

Il mio codice è il seguente:

Dim qPT As QueryDef

Dim rsRead As Recordset


Set qPT = CurrentDb.CreateQueryDef("", gSql)          <---- L'errore appare dopo questa istruzione

qPT.Connect = TempVars!conn

Set rsRead = qPT.OpenRecordset(dbOpenSnapshot)

la stringa gsql è la seguente (non la copio completamente visto che è molto lunga):

gSql = "with viewMain as (" _

& "SELECT FF.COD_FIELD_FORCE AS Code, CL.TXT_CONTEST_NAME AS Nom, FF.TXT_BANCH_NAME AS NomAgence," _

& "       FF.DAT_CONTRACT AS DateCont, SI.COD_BRANCH AS AGC, SI.COD_DISTRICT AS DIS, SI.COD_TEAM AS EQ," _

& "       ISNULL(SI.COD_US, '') AS US," _

& "       CASE WHEN FF.STA_FIELD_FORCE = 'T' THEN 'E' WHEN FF.STA_FIELD_FORCE = 'A' THEN 'A' ELSE '' END AS STAT," _

& "       CASE WHEN FF.TYP_CONTRACT = 'CARPC' THEN 'PC' ELSE 'REP' END AS Type_Cont," _

& "       replace(FF.TXT_MSBR_NAME,'(SURINT)','') AS SURINT" _

& "  FROM dbo.FIELD_FORCE FF INNER JOIN dbo.CLIENT    CL ON FF.ID_CLIENT      = CL.ID_CLIENT" _

& "                          INNER JOIN dbo.SITUATION SI ON FF.ID_FIELD_FORCE = SI.ID_FIELD_FORCE" _

& " WHERE (FF.TYP_BUSINESS_UNIT = 'C') AND (SI.DAT_END IS NULL)" _

& "   AND (FF.COD_COMPANY       = '000')" _

& ")," _

& "viewREOC as (" _

& "SELECT FF.COD_FIELD_FORCE ...

da quello che posso capire non viene accettato il fatto che la query cominci con "with viewMain" e non con SELECT, DELETE od altro.

Grazie per l'aiuto.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2012-05-23T15:00:42+00:00

Trovata la soluzione...

Basta modificare il codice come segue:

Set qPT = CurrentDb.CreateQueryDef("")

With qPT

.Connect = TempVars!conn

.SQL = gSql

End With



La risposta è stata utile?

0 commenti Nessun commento

0 risposte aggiuntive

Ordina per: Più utili