Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Istruzione SQL "INSERT TO... SELECT"

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Istruzione SQL "INSERT TO... SELECT"

Postdi gaetano73 » 14/05/15 14:15

Ciao a tutti.

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?
gaetano73
Utente Senior
 
Post: 247
Iscritto il: 03/09/02 18:36

Sponsor
 

Postdi archimede » 16/05/15 10:36

Quella sintassi secondo me non può funzionare.

Il database SQLServer può leggere o in qualche modo accedere al file mdb? Se sì, forse la cosa più semplice e più performante è scrivere una stored procedure in SQLServer che legge i dati da Access e fa la INS£RT.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: Istruzione SQL "INSERT TO... SELECT"

Postdi gaetano73 » 18/05/15 10:56

Grazie per il suggerimento.
Non posso adottare questo metodo in quanto il DB Access viene schedulato al verificarsi di un evento; se quell'evento non si verifica, la tabella non deve essere toccata... :(
gaetano73
Utente Senior
 
Post: 247
Iscritto il: 03/09/02 18:36

Postdi archimede » 18/05/15 12:14

Non ho capito: non puoi scrivere una stored procedure in SQLServer e lanciarla da Access quando ti pare?

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: Istruzione SQL "INSERT TO... SELECT"

Postdi gaetano73 » 19/05/15 19:42

Già... non ci avevo pensato :oops:
Grazie!
gaetano73
Utente Senior
 
Post: 247
Iscritto il: 03/09/02 18:36


Torna a Applicazioni Office Windows


Topic correlati a "Istruzione SQL "INSERT TO... SELECT"":

MB "andata"?
Autore: Cassidy
Forum: Assistenza Hardware
Risposte: 4

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti