Scusate la domanda... bizzarra..
abbiamo la necessità di caricare i prezzi di listino sul ns. sito..
siccome i prezzi cambiano quasi ogni giorno e visto che riceviamo i dati in
formato excel, ho creato una applicazione su excel, che prende i dati dal
listino li sostituisce in una pagina html allo scopo predisposta e tramite
ftp carica detta pagina sul sito..
la procedura funziona egregiamente.. ma..è una pagina statica.. e i dati
sono "stupidi"
ora vorremmo fare un passo in avanti, ovvero utilizzare un db access per
gestire il tutto.
e vorrei usare lo stesso sistema per caricare i dati nel database.. ma non
saprei come fare..:-(
OK, potrei, passare i dati ad un db in locale e poi caricarlo sul sito via
ftp, ma comunque sarebbe necessario comunque creare una routine per passare
i dati da excel ad Access, inoltre il db che ne uscirebbe, integrando anche
altre cosucce, sarebbe abbastanza pesante.. e pertanto consigliabile, se
possibile, aggiungere o modificare solo i record che serve..
ma non ho la minima idea di come fare..
mo indicate la via da seguire?
Grazie
Sergio BS
vabbè non mi sembrava una domanda tanto difficile..
comunque..
avrei trovato questo:
<%@LANGUAGE = JScript%>
<%
// STRINGA DI CONNESSIONE
var stringa = "";
stringa += "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
stringa += Server.MapPath("database.xls");
stringa += ";Extended Properties=Excel 8.0"; // IDENTIFICA LA VERSIONE
2000 DI EXCEL
// APRO LA CONNESSIONE
var Cn = new ActiveXObject("ADODB.Connection");
Cn.Open(stringa);
// SELEZIONO I DATI
var Mostra = Cn.Execute("SELECT * FROM utenti");
// CICLO SUI RECORD E STAMPO I RISULTATI
while (!Mostra.EOF)
{
with (Response)
{
Write("<p>");
Write("ID: " + Mostra(0) + "<br>");
Write("Nome: " + Mostra(1) + "<br>");
Write("Cognome: " + Mostra(2));
Write("</p>");
}
Mostra.MoveNext();
}
// CHIUDO LA CONNESSIONE
Cn.Close();
%> che però fa quello che voglio io.. ma è l'asp che si succhia i dati io
invece volevo pusharli da Excel :-(qualche spunto?grazie SergioBS
> vabbè non mi sembrava una domanda tanto difficile..
> comunque..
...
> %> che però fa quello che voglio io.. ma è l'asp che si succhia i dati io
> invece volevo pusharli da Excel :-(qualche spunto?grazie SergioBS
Per stare sul tuo esempio in access (e non è che sia fortissimo con le
varie versioni di access ;-)) altrimenti puoi usare una connessione ADO.
Per il tuo caso puoi scirvere uan cosa tipo questa:
Dim db1 As Database
Dim Tc As Recordset
Set db1 = Workspaces(0).OpenDatabase("c:\database.mdb")
q = "SELECT * from ... "
Set Tc = db1.OpenRecordset(q, dbOpenDynaset)
Tc.AddNew
Tc.Fields("...") = xxx
Tc.Update
A.
> Per stare sul tuo esempio in access (e non č che sia fortissimo con le
> varie versioni di access ;-)) altrimenti puoi usare una connessione ADO.
> Per il tuo caso puoi scirvere uan cosa tipo questa:
>
>
> Dim db1 As Database
> Dim Tc As Recordset
>
> Set db1 = Workspaces(0).OpenDatabase("c:\database.mdb")
>
> q = "SELECT * from ... "
> Set Tc = db1.OpenRecordset(q, dbOpenDynaset)
>
> Tc.AddNew
> Tc.Fields("...") = xxx
> Tc.Update
Ciao Andrea.. grazie per l'aiuto..
adesso ci provo..
dici che funziona anche se il DB č su un sito..ovvero invece di
c:\database.mdb ho http://www.miosito.com/xy/database.mdb ?
adesso vedo..
Grazie ancora.
Sergio
> adesso ci provo..
> dici che funziona anche se il DB è su un sito..ovvero invece di
> c:\database.mdb ho http://www.miosito.com/xy/database.mdb ?
Per me no :-) a parte che devi avere gli accessi ed è piuttosto
difficile che te li diano, sempre se non sei tu l' amministratore ;-)
Forse facendo la connessione con ado hai più fortuna.
A.
Grazie Andrea..
scusa dimenticavo di dire che.... ovviamente sono io l'amministratore :-)
seguendo i tuoi consigli ho trovato questa che dire "sembra fatta apposta"..
č riduttivo :-D
Che funziona perfettamente.. ma con un dB in locale.. con il db in remoto..
devo capire come modificarla.. anche se secondo me.. va modificata e non
poco..mi sembra di aver capito che si devono usare gli activex.. mSub
ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:\FolderName\DataBaseName.mdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
> Che funziona perfettamente.. ma con un dB in locale.. con il db in remoto..
> devo capire come modificarla.. anche se secondo me.. va modificata e non
> poco..mi sembra di aver capito che si devono usare gli activex.. mSub
Direi di no, anzi. Conta che con ado dovrebbe essere quasi indipendente
anche dal database e non serve caricare niente a meno che tu non abbia
un windows ultra vecchio e un explorer prima del 6.
Pe provare il colelgamento fai un "datalink" che sarebbe un file udl
così puoi testare la connessione prima e poi cambi quel connection così:
Set cn = New ADODB.Connection
cn.ConnectionString = "FILE NAME=C:\datalink.udl"
cn.Open
A.
Grazie Andrea... ma tu parli difficile..io sono un niubbio :-(
come SO uso Excel2002 su WXpProSP2 pertanto relativamente aggiornato
ma per fare il datalink ci vuole VB e il MDAC.. che io non ho..
e se io al posto di c:\datalink.udl ci metto http://etcetc?
grazie
Sergio
> Grazie Andrea... ma tu parli difficile..io sono un niubbio :-(
>
> come SO uso Excel2002 su WXpProSP2 pertanto relativamente aggiornato
> ma per fare il datalink ci vuole VB e il MDAC.. che io non ho..
Non so come dirtelo... ma fanno parte del sistema ;-)
Ma naturalmente mi sono dimenticato di una cosa:
vai nell'editor di visual basic, sul menù: srumenti --> riferimenti e
metti il check su:
Microsoft activeX data Object 2.9 (credo altrimenti 2.8) Library
> e se io al posto di c:\datalink.udl ci metto http://etcetc?
è identico (il data link contiene più o meno la stessa cosa) ma devi far
girare excel per povare il collegamento.
A.
OK :-$
>
> Ma naturalmente mi sono dimenticato di una cosa:
> vai nell'editor di visual basic, sul menù: srumenti --> riferimenti e
> metti il check su:
> Microsoft activeX data Object 2.9 (credo altrimenti 2.8) Library
Ok.. quello l'avevo fatto. :-) non ho la 2.9 ma ho la 2.8 installata
comunque spero non sia li il problema
>
>> e se io al posto di c:\datalink.udl ci metto http://etcetc?
>
> è identico (il data link contiene più o meno la stessa cosa) ma devi far
> girare excel per povare il collegamento.
>
> A.
eh il punto è che funziona tutto se come riferimento del database ci metto
qualcosa in locale, tipo C:/xldb.mdb
ma mettendo un riferimento remoto.. tipo http://www.miosito/xldb.mdb e con
queste impostazioni:
Set cn = New ADODB.Connection
cn.ConnectionString = "Filename=http://www.miosito.com/xldb.mdb"
cn.Open
mi da questo errore:
Errore di run-time -2147467259 (80004005)
[Microsoft][Driver Manager ODBC] Nome origine dati non trovato e driver
predefinito non specificato
ho cercato di capire cosa non ci sia.ed in effetti mancherebbe la specifica
dei driver..ma ho provato a mettere
Driver= {Microsoft Access Driver (*.mdb)} qua e là.. ma ovviamente non
funziona.. forse non lò'ho messo nel posto giusto :-(
invece con queste impostazioni:
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=http://www.miosito.com/xldb.mdb"
mi da errore:
Nome file non valido
> Ok.. quello l'avevo fatto. :-) non ho la 2.9 ma ho la 2.8 installata
> comunque spero non sia li il problema
No :-) è che non mi ricordo tutte le versioni di win.
> ma mettendo un riferimento remoto.. tipo http://www.miosito/xldb.mdb e con
> queste impostazioni:
>
> Set cn = New ADODB.Connection
> cn.ConnectionString = "Filename=http://www.miosito.com/xldb.mdb"
> cn.Open
Filename lo usi solo per i datalink, altrimenti devi mettere tutta la
definizione
> mi da errore:
> Nome file non valido
Ci ho provato senza grandi risultati, non risci ad usare un server di
database come MySql? su qyello l'ho fatto diverse volte senza grossi
problemi. E con access hai anche sia il problema della sicurezza che
della velocità.
A.
"Andrea" <and...@datob.it> ha scritto nel messaggio
news:45617ec7$0$19229$4faf...@reader4.news.tin.it...
> Ci ho provato senza grandi risultati, non risci ad usare un server di
> database come MySql? su qyello l'ho fatto diverse volte senza grossi
> problemi. E con access hai anche sia il problema della sicurezza che della
> velocità.
>
> A.
Ci provo. anche se non lo conosco... scusa..
come cambiano i parametri di connessione ad DB :-$
Grazie
Sergio
> Ci provo. anche se non lo conosco... scusa..
> come cambiano i parametri di connessione ad DB :-$
Questa è una stringa di connessione che usavo io:
"Provider=MSDASQL.1;Password=*pwd*;Persist Security Info=True;User
ID=*Login*;Data Source=*Conn.ODBC*;Mode=ReadWrite;"
Devi fare creare l'origine di dati ODBC ovviamente.
Ma soprattutto devi modificare i permessi sul server per una connessione
da remoto per l'utente, questo magari è più difficile se non hai tanta
pratica ;-)
A.
Ps: non è che siamo andati un poco OT per un gruppo su Excel? :-)
Grazie Andrea.
sono nel buio piů completo.. ma spero di uscirne :-)
diciamo che... visto l'alto numero di partecipanti a questo thread.. mi sa
che era OT fin dall'inizio :-)
Grazie ancora
Sergio