Access 2010: problema exec sp sql 2008r2

di il
1 risposte

Access 2010: problema exec sp sql 2008r2

Salve a tutti.
Il mio problema è il seguente.
Ho il seguente codice scritto originariamente per access 2003 che esegue una stored procedure su SQL server 2008 r2.
    Dim dbsCurrent As Database
    Dim qdfpassthrough As QueryDef
    Dim strSql As String
    
    strSql = "exec procedura " & parametri
    
    Set dbsCurrent = CurrentDb
    Set qdfpassthrough = dbsCurrent.CreateQueryDef("MyQueryDef")
    With qdfpassthrough
        .Connect = dbsCurrent.TableDefs("MyTable").Connect
        .sql = strSql
        .ODBCTimeout = 300
        .ReturnsRecords = True
    End With

    Dim rstTemp As Recordset
    Set rstTemp = dbsCurrent.OpenRecordset("SELECT * FROM MyQueryDef")
    MsgBox "Per il periodo scelto sono stati inseriti: " & rstTemp(0) & " records.", vbOKOnly, "Procedura"
    
    dbsCurrent.QueryDefs.Delete "MyQueryDef"
    dbsCurrent.Close
Quando ho portato la procedura su access 2010 si è verificato l'inconveniente che tutti i dati risultano duplicati.
Il codice gira una volta sola, ma quando è eseguita l'istruzione
 Set rstTemp = dbsCurrent.OpenRecordset("SELECT * FROM MyQueryDef")
si aprono due connessioni sul SQL Server e l'intera stored procedure è eseguita due volte.

Ringrazio in anticipo tutti coloro che vorranno aiutarmi a risolvere.

Ciao a tutti

1 Risposte

  • Re: Access 2010: problema exec sp sql 2008r2

    Mi rispondo da solo per dire che ho risolto.
    Se interessasse a qualcuno, il problema era tutto nell'istruzione
    Set rstTemp = dbsCurrent.OpenRecordset("SELECT * FROM MyQueryDef")
    E' stato sufficiente cambiarla in
    Set rstTemp = dbsCurrent.OpenRecordset("MyQueryDef")
    A quanto pare, mentre access 2003 accetta entrambe le sintassi per eseguire il contenuto di MyQueryDef, a partire da access 2007 in avanti quell'istruzione dà luogo a una doppia elaborazione.
Devi accedere o registrarti per scrivere nel forum
1 risposte