160 messaggi dal 23 febbraio 2004
salve,

il mio problema è importare in access direttamente e automaticamente online dei dati fissi contenuti in fogli di excel .xls

questo per evitare che ogni volta l'utente digiti a mano nella maschera di inserimento .asp i dati contenuti in questi fogli excel...

sarebbe come la procedura di access 'carica dati esterni' > 'importa' da eseguire on-line, si può?

grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
si,
devi costruirti una pagina che legga dal foglio excel e copi questi dati all'interno di access.
Un foglio excel può essere trattato come una qualsiasi altra fonte di dati per cui a livello teorico puoi farci sopra delle query o scorrere i record (righe) uno per uno.

Io ho fatto una cosa del genere e purtroppo mi ha creato dei fastidi...
perchè vedi... il foglio excel deve comunque avere una struttura standard, molto simile a quella del database.
Se voi avete un foglio excel standard che viene distribuito in giro e restituito compilato con dei dati allora va bene, quello che chiedi è facilmente realizzabile.

Se invece, come me, ti vedi arrivare fogli excel senza capo nè coda, con campi di numero variabile e buttati lì a caso con dati non coerenti (indirizzo sul campo del numero di telefono) allora possono venir fuori dei problemi.
Devi spendere ore per cercare di organizzare i dati portandoli dal foglio excel "grezzo" a quello standard che usarai per l'importazione vera e propria.

Se è questo che capita, ti conviene scaricare il database, fare il copia-incolla dei dati e ripubblicare il tutto.

Intanto leggiti questi due articoli:
http://www.aspitalia.com/articoli/db/excel.aspx
http://www.aspitalia.com/liste/usag/script.aspx?ID=112
ciao


Enjoy learning and just keep making
160 messaggi dal 23 febbraio 2004
da subito grazie per la risposta; in attesa di notizie dal forum sono andato avanti consultando anche gli articoli da te segnalati e sono arrivato qui:

il code funzionate è questo (da sistemare):

<%
SQL = "SELECT nome, cognome, telefono FROM id" 
strProvider="DRIVER=Microsoft Excel Driver (*.xls); DBQ=" & Server.MapPath ("cartel1.xls") 
Set rs = Server.CreateObject("ADODB.recordset") 
rs.Open SQL, strProvider 

response.write rs("nome")
response.write rs("cognome") 
response.write rs("telefono")

Dim ConnDown 
Set ConnDown=Server.CreateObject("ADODB.Connection") 
ConnDown.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath(path&"DB1.mdb") 
Dim SQL1, RECDown

SQL1 =  "INSERT INTO tbl1 (nome, cognome, telefono) VALUES  (' "& rs("nome") &" ',' "& rs("cognome") &" ',' "& rs("telefono") &" ' )"
set RECdown = connDown.execute(sql1) 
%>


la connessione legge il file excel, recupera i dati in esso contenuto e poi li scrive nella tbl del database; queste le perplessità:

a) nel foglio excel le righe sono due, mentre si stampa a video solo la prima e solo i dati della prima riga vengono scritti nel dbase, perchè?

b) e se il nome del foglio excel è variabile? l'esempio riporta un preciso nome di file excel (cartel1.xls);

aspetto notizie e commenti... buonanotte a tutti
160 messaggi dal 23 febbraio 2004
ho risolto così (per la prima domanda):

<%
SQL = "SELECT * from [Foglio1$]"
strProvider="DRIVER=Microsoft Excel Driver (*.xls); DBQ=" & Server.MapPath ("cartel1.xls")  
Set rs = Server.CreateObject("ADODB.recordset") 
rs.Open SQL, strProvider 

Do while not rs.eof 

response.write rs("nome") & "<br>" 
response.write rs("cognome") & "<br>" 
response.write rs("telefono") & "<br>" 

Dim ConnDown 
Set ConnDown=Server.CreateObject("ADODB.Connection") 

ConnDown.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath(path&"DB1.mdb") 
Dim SQL1, RECDown

SQL1 =  "INSERT INTO tbl1 (nome, cognome, telefono) VALUES  (' "& rs("nome") &" ',' "& rs("cognome") &" ',' "& rs("telefono") &" ' )"
set RECdown = connDown.execute(sql1) 

response.write (SQL1)

rs.movenext 

Loop 

rs.close 
set rs=nothing 

ConnDown.Close 
set ConnDown=nothing 

%>


b) e se il nome del foglio excel è variabile? l'esempio riporta un preciso nome di file excel (cartel1.xls);

è qui che non riesco...

26 messaggi dal 05 dicembre 2003
se il nome cambia ti crei una tabella con i nomi dei fogli excel e in servermatpath ci metti un valore passato in una variabile
160 messaggi dal 23 febbraio 2004
BELLANZ80 ha scritto:
se il nome cambia ti crei una tabella con i nomi dei fogli excel e in servermatpath ci metti un valore passato in una variabile


grazie per la risposta è quello che sto cercando di fare, ma con scarso risultato:
in effetti ogni utente potrebbe fare l'upload di un proprio file excel (uguale nel formato ma differente nei dati contenuti) e successivamente con l'importazione in questione trasferirà con una sola operazione i propri dati del proprio file excel nel dbase generale... provo così:

strProvider="DRIVER=Microsoft Excel Driver (*.xls); DBQ=" & Server.MapPath (""&var&".xls")


ma restituisce:

[Microsoft][Driver ODBC Excel] Il modulo di gestione di database Microsoft Jet non è riuscito a trovare l'oggetto 'Foglio1$'. Assicurarsi che l'oggetto esista e che il nome e il percorso siano digitati correttamente.

dove sbaglio?


160 messaggi dal 23 febbraio 2004
ho inserito questa stringa nel code e funziona:

FileName="cartel1.xls" 
Posizione= ("") & FileName

SQL = "SELECT * from [Foglio1$]"

strProvider="DRIVER=Microsoft Excel Driver (*.xls); DBQ=" & Server.MapPath (Posizione)


però ho dovuto specificare che il nome file è 'cartel1.xls' invece il file potrebbe avere nome diverso... dove sbaglio???

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.