Uso Access 2010.
In una maschera di Access ho implementato il codice per popolare una tabella su Server SQL con i campi di una query di Access usando l'istruzione INSERT TO "metodo VALUES". Di seguito il codice perfettamente funzionante:
- Codice: Seleziona tutto
Private Sub Form_Load()
' ************************* Connessione al DB (corrente) Access *************************
Dim conn_locale As Object
Set conn_locale = CreateObject("ADODB.Connection")
Dim rs_locale As Object
Set rs_locale = CreateObject("ADODB.Recordset")
Set conn_locale = CurrentProject.Connection
rs_locale.Open "SELECT * FROM 33_WIP_Case WHERE CaseValido = 'Y'", conn_locale, 3, 1
' ************************* Connessione al DB su Server SQL *************************
Dim conn As Object
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "... stringa di connessione al DB su SERVER SQL..."
conn.Open
stSQL = "TRUNCATE TABLE dbo.Wip_Case"
' ************************* INSERT TO - Metodo VALUES *************************
conn.Execute stSQL
Do While Not rs_locale.EOF
stSQL = "INSERT INTO dbo.Wip_Case (ID_Cliente, PIVA)"
stSQL = stSQL & " VALUES "
stSQL = stSQL & "('"
stSQL = stSQL & rs_locale.Fields("ID_Cliente")
stSQL = stSQL & "','"
stSQL = stSQL & rs_locale.Fields("PIVA")
stSQL = stSQL & "')"
conn.Execute stSQL
rs_locale.MoveNext
Loop
rs_locale.Close
Set rs_locale = Nothing
conn.Close
Set conn = Nothing
DoCmd.Quit acExit
End Sub
Per migliorare la performance vorrei usare il "metodo SELECT"
- Codice: Seleziona tutto
Private Sub Form_Load()
' ************************* Connessione al DB (corrente) Access *************************
Dim conn_locale As Object
Set conn_locale = CreateObject("ADODB.Connection")
Dim rs_locale As Object
Set rs_locale = CreateObject("ADODB.Recordset")
Set conn_locale = CurrentProject.Connection
rs_locale.Open "SELECT * FROM 0_PIVA_Large WHERE Etichetta = 'LargeEnel'", conn_locale, 3, 1
' ************************* Connessione al DB su Server SQL *************************
Dim conn As Object
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "... stringa di connessione al DB su SERVER SQL..."
conn.Open
stSQL = "INSERT INTO dbo.Wip_Case (ID_Cliente)"
stSQL = stSQL & " SELECT "
stSQL = stSQL & "('"
stSQL = stSQL & rs_locale.Fields("ID_Cliente")
stSQL = stSQL & "')"
stSQL = stSQL & " FROM "
stSQL = stSQL & "rs_locale"
conn.Execute stSQL
rs_locale.Close
Set rs_locale = Nothing
conn.Close
Set conn = Nothing
DoCmd.Quit acExit
End Sub
Questo metodo mi restituisce il seguente errore:
Errore di run-time '-2147217865 (80040e37)':
Il nome di oggetto 'rs_locale' non è valido.
Mi aiutate per favore?