Salve, innanzitutto grazie delle vostre risposte nei tempi passati, mi hanno aiutato moltissimo a superare molti ostacoli; il problema che ho adesso è il seguente: ho un file xls su una cartella su server remoto, nella stessa cartella risiede anche un db access con 2 tabelle. Io voglio importare i dati dal foglio excel in T_import_Clienti di access, che ogni volta distruggo e ricreo.
il passo successivo è quello di andare ad importare nella tabella T_Anag_Clienti solo i record della tabella T_Import_Clienti che non ci sono.
Il primo passo è tutto ok, cioè l'import da excel va tutto bene, ma quando arrivo a fare l'update della tabella non importa un bel niente; sto impazzendo da circa 3 giorni dietro a questo problema provando varie soluzioni e varie strategie ma niente di fatto.
posto il codice di seguito:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim MM_conn_STRING
MM_conn_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("mdb-database\SchedaCliente.mdb")
Dim MM_conn_app_STRING
MM_conn_app_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("mdb-database\SchedaCliente.mdb")
dim oConn
oConn = "Driver={Microsoft Excel Driver (*.xls)}; DBQ=" & Server.MapPath("mdb-database\ExportClienti.xls")
' CODICE PER CANCELLARE DATI DA TABELLA IMPORT CLIENTI
sub CancellaDati()
MM_1="ADODB.Recordset"
set MM_rs1 = Server.CreateObject(MM_1)
MM_rs1.ActiveConnection = MM_conn_STRING
MM_rs1.Source = "DELETE * FROM T_Import_Clienti;"
MM_rs1.CursorType = 0
MM_rs1.CursorLocation = 2
MM_rs1.LockType = 3
MM_rs1.Open
end sub
' FINE CODICE
' CODICE PER ELIMINARE TABELLA IMPORT CLIENTI
sub EliminaTabella()
Dim conn
dim SQL
Dim oRSet1
dim adSchemaTables
'creo l'oggetto Connection
Set conn = Server.CreateObject("ADODB.Connection")
'apro la connessione con la fonte di dati
conn.open MM_conn_STRING
'RICAVO LA LISTA DELLE TABELLE CONTENUTE NEL DB
adSchemaTables = 20
Set oRSet1 = conn.OpenSchema(adSchemaTables)
do while not oRSet1.eof
if oRSet1("TABLE_NAME") = "T_Import_Clienti" then
' eseguo l'eliminazione della tabella
SQL="DROP TABLE T_Import_Clienti"
conn.execute SQL
end if
oRSet1.MoveNext
Loop
end sub
' FINE CODICE
' IMPORTO DA EXCEL A TABELLA ACCESS
Sub ImportaDatiExcel()
' Dichiaro il Recordset e la variabile per la Query
Dim oRSet
dim SQL3
Dim connXls
Set connXls = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.Recordset")
connXls.Open = "driver={Microsoft Excel Driver (*.xls)};DBQ=" & Server.MapPath("mdb-database\ExportClienti.xls")
rs.Open "SELECT * FROM [Q_Export_Anagrafica$]",connXls, 3, 2
'Elimino la tabella di destinazione, se esiste
call EliminaTabella()
' Creo la Tabella di destinazione, definendone i campi con nome, tipo e lunghezza
Dim SQL1
dim SQL2
dim conn2
Set conn2 = Server.CreateObject("ADODB.Connection")
conn2.open MM_conn_STRING
SQL1 = "CREATE TABLE T_Import_Clienti (Nome TEXT(20), Cognome TEXT(30), Comune TEXT(30), Telefono TEXT(15), Cellulare TEXT(15))"
conn2.Execute SQL1
'Scorro il Recordset compiendo una serie di INSERT sulla tabella di destinazione
With rs
'While Not .EOF and .Fields("Nome").value <> ""
.movefirst
do until .eof
SQL2 = "INSERT INTO T_Import_Clienti " & _
"(Nome, Cognome, Comune, Telefono, Cellulare) VALUES (" & _
"'" & .Fields("Nome").Value & "', " & _
"'" & .Fields("Cognome").Value & "', " & _
"'" & .Fields("Comune").Value & "', " & _
"'" & .Fields("Telefono").Value & "', " & _
"'" & .Fields("Cellulare").Value & "')"
' esegue l'inserimento
conn2.Execute SQL2
rs.MoveNext
loop
'Wend
End With
' Chiudo il Recordset e annullo l'oggetto
rs.Close
Set rs = Nothing
' SELECT SU TABELLA T_IMPORT PER ESTRARRE NOME E COGNOME
Dim oRSet2
dim SQL5
Dim conn4
Set conn4 = Server.CreateObject("ADODB.Connection")
'apro la connessione con la fonte di dati
conn4.open MM_conn_app_STRING
SQL5 = "UPDATE T_Import_Clienti LEFT JOIN T_Anag_Clienti ON (T_Import_Clienti.Cognome = T_Anag_Clienti.Cognome) AND (T_Import_Clienti.Nome = T_Anag_Clienti.Nome) SET T_Anag_Clienti.Nome = [T_Import_Clienti].[Nome], T_Anag_Clienti.Cognome = [T_Import_Clienti].[Cognome], T_Anag_Clienti.Comune = [T_Import_Clienti].[Comune], T_Anag_Clienti.Telefono = [T_Import_Clienti].[Telefono], T_Anag_Clienti.Cellulare = [T_Import_Clienti].[Cellulare]"
' esegue l'inserimento
conn4.Execute SQL5
' Chiudo la connessione
connXls.CLOSE
set connXls = nothing
conn2.CLOSE
set conn2 = nothing
conn4.CLOSE
set conn4 = nothing
End Sub
' FINE CODICE
' *** Validate request to log in to this site.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valNome=Request.Form("Nome")
MM_valCognome=Request.Form("Cognome")
If MM_valNome <> "" Then
MM_fldUserAuthorization=""
MM_redirectLoginSuccess="dati.asp"
MM_redirectLoginFailed="Scelta.asp"
MM_flag="ADODB.Recordset"
set MM_rsUser = Server.CreateObject(MM_flag)
MM_rsUser.ActiveConnection = MM_conn_STRING
If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
MM_rsUser.Source = "SELECT * FROM T_Anag_Clienti WHERE Nome='" & MM_valNome &"' AND Cognome='" & MM_valCognome & "'"
MM_rsUser.CursorType = 0
MM_rsUser.CursorLocation = 2
MM_rsUser.LockType = 3
MM_rsUser.Open
If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then
' Nome e Cognome esistono allora visualizza
Session("MM_Nome") = MM_valNome ' sessione per passare Nome
session("MM_Cognome") = MM_valCognome ' sessione per passare Cognome
If (MM_fldUserAuthorization <> "") Then
Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization ).Value)
Else
Session("MM_UserAuthorization") = ""
End If
if CStr(Request.QueryString("accessdenied")) <> "" And false Then
MM_redirectLoginSuccess = Request.QueryString("accessdenied")
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginSuccess)
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginFailed)
End If
%>
poi html.............
grazie a tutti quelli che mi aiuteranno