Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Aggiungere e Modificare Record in DB su sito web via VBA

130 views
Skip to first unread message

SergioBS

unread,
Nov 14, 2006, 12:32:19 PM11/14/06
to
Salve a tutti!

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


SergioBS

unread,
Nov 15, 2006, 2:55:26 PM11/15/06
to
"SergioBS" <ma...@sbs.itt> ha scritto nel messaggio
news:D4n6h.42685$uv5.2...@twister1.libero.it...


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


Andrea

unread,
Nov 18, 2006, 6:21:29 PM11/18/06
to
SergioBS ha scritto:

> 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.

SergioBS

unread,
Nov 19, 2006, 4:35:20 AM11/19/06
to

"Andrea" <And...@datob.it> ha scritto nel messaggio
news:455f94c3$0$19244$4faf...@reader4.news.tin.it...

> 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


Andrea

unread,
Nov 19, 2006, 4:54:03 AM11/19/06
to
SergioBS ha scritto:

> adesso ci provo..
> dici che funziona anche se il DB è su un sito..ovvero invece di

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.

SergioBS

unread,
Nov 19, 2006, 11:00:12 AM11/19/06
to

"Andrea" <And...@datob.it> ha scritto nel messaggio
news:45602905$0$13760$4faf...@reader3.news.tin.it...

> SergioBS ha scritto:
>
>> adesso ci provo..
>> dici che funziona anche se il DB č su un sito..ovvero invece di
> 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


Andrea

unread,
Nov 19, 2006, 1:35:54 PM11/19/06
to
SergioBS ha scritto:

> scusa dimenticavo di dire che.... ovviamente sono io l'amministratore :-)
;-)

> 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.

SergioBS

unread,
Nov 19, 2006, 4:41:29 PM11/19/06
to
"Andrea" <And...@datob.it> ha scritto nel messaggio
news:4560a354$0$19236$4faf...@reader4.news.tin.it...

> SergioBS ha scritto:
>> scusa dimenticavo di dire che.... ovviamente sono io l'amministratore :-)
> ;-)
>
>> 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


Ab-

unread,
Nov 19, 2006, 5:59:02 PM11/19/06
to
SergioBS ha scritto:

> 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.

SergioBS

unread,
Nov 20, 2006, 3:21:49 AM11/20/06
to

"Ab-" <A...@notedicioccolato.it> ha scritto nel messaggio
news:4560e0ff$0$19238$4faf...@reader4.news.tin.it...

> SergioBS ha scritto:
>
>> 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 ;-)

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


Andrea

unread,
Nov 20, 2006, 5:12:12 AM11/20/06
to
SergioBS ha scritto:

> 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.

SergioBS

unread,
Nov 20, 2006, 9:56:13 AM11/20/06
to

"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


Andrea

unread,
Nov 21, 2006, 7:24:27 AM11/21/06
to
SergioBS ha scritto:

> 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? :-)

SergioBS

unread,
Nov 21, 2006, 1:10:13 PM11/21/06
to
"Andrea" <and...@datob.it> ha scritto nel messaggio
news:4562ef46$0$7625$4faf...@reader1.news.tin.it...
> SergioBS ha scritto:
>
> 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


0 new messages