Newsgroup: it.comp.lang.visual-basic
Titolo: ASP + ADO e un po di Vb...travasare dati da un archivio all'altro

Mi son trovato un problema di fronte....e non ho svoltato..in tempo...mi ci
son schiantato contro!
Ci son 2 mdb(access 2000)  tutti e 2 protetti da pw
tmpUser
ldb_main
devo porate i dati di una tabella in un mdb in un altra tabella nell'altro
mdb
con server.mappath trovo il path del secondo mdb
e viene fuori ad esempio
INSERT INTO utenti ( nick, email, cookie ) IN
'c:\inetpub\wwwroot\destra\mdb-database\ldb_main.mdb' SELECT tmpUser.User,
tmpUser.Email, tmpUser.CookieCheck FROM tmpUser WHERE
(tmpUser.Idcode=1866490746)
La cosa è perfettamente lecita e funziona....
funziona se non c'è la password sull'archivio che riceverà i dati da
inserire !
Infatti per eseguire questa query di spostamento io ho 2 strade
la più lunga...mi faccio un oggetto command e EXECUTE
la più corta...mi faccio un bel conn.execute
l'errore che interviene? Password non valida (almeno quello dice ado)
Provato a mettere pw uguali su tutti e 2 gli mdb...
A logica capisco l'errore che lui fa:
ad esempio
Sei connesso al mdb tmpUser con pw "pippo"
esegui la query che va sul mdb ldb_main ...ma non mi dici con che pw...ed io
mi incazzo!
però come faccio in una query a specificare la pw di un altro db???
c'è un parametro che mi sfugge da specificare?
Grazie...son proprio incartato su questa che sarà una cazzata di sicuro!
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
New Entry nel bestiario!
:-)

 sicuro!
Se non ricordo male, m'era successo anche col codice e DAO.
Apri prima (su oggetti di comodo) i vari database diciamo "esterni", ovvero
quelli diversi da quello di esplicito appoggio, ovviamente fornendo la pwd
corretta.
Fatto tutto li chiudi.

 nell'altro mdb
naturalmente la soluzione di leggere record per record da una tabella e
inserire record per record nell'altra l'hai scartata a priori :-)
se trovi una soluzione fammi sapere: anche io avevo cercato di fare un join
tra due tabelle di due diversi db protetti, e mi ero miseramente arenato.
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo


NON va lupo
non faccio il travaso da 2 oggetti aperti č!
vorrei fare una execute...visto che la insert into mi consente oggetti
remoti
ho trovato roba...che sembra che con ORACLE si specifichi nella query
pwd=pincopallino e va.....
ma per access non trovo nulla per ora....
lo so anche io che posso aprire 2 conn e fare il travaso con 2
recordset....ma si mette in mezzo un sacco di oggetti e si spreca un sacco
di roba....prima di arrendermi a ciň...volevo vedere se c'era verso....
va be che bevono...ma se con una insert posso collegare un oggetto esterno
li sarŕ venuto in mente che potrebbe avere una miserrima pw a qui sbevazzoni
di M$?????
-- 
Il Wodkino Nazionale č a : 
www.martek.it


 qui sbevazzoni di M$?????
Non mi sono spiegato: Non ti ho consigliato di agire con codice sui due
oggetti, semplicemente di aprire il secondo (quello indiretto) prima di
eseguire il comando, poi lo chiudi. Null'altro.
In altre parole (oh, mi riferisco sempre a DAO), se io devo fare questa
Select:
"Select tab1.campo1, tab2.campo2 From tab1, C:\cartella\altro_db.tab2"
aprendo la connessione per il database che ospita la tab1, e quello
("esterno") che ospita la tab2 protetto da pwd, mi basta prima aprire
quest'ultimo, senza farci nulla. Eseguito il comando, lo chiudo.
Non ti so dire per comandi diversi dalla Select ..., ma il senso (o il
workaround) dovrebbe essere lo stesso.


[CUT]
Ciao,
Prova la sintassi estesa
-----------------------------------------
INSERT INTO utenti ( nick, email, cookie ) IN
"" [MS
Access;Database=c:\inetpub\wwwroot\destra\mdb-database\ldb_main.mdb;PWD=TuaP
assword]
SELECT tmpUser.User,
                 tmpUser.Email,
                 tmpUser.CookieCheck
FROM tmpUser
WHERE (tmpUser.Idcode=1866490746)
-------------------------------------------
Ciao Giorgio

 news:uqG_b.14333$gk.6...@news3.tin.it...
fai attenzione ai ritorni a capo, tra MS e Access c'è uno spazio
------------------
IN "" [MS Access;ecc ecc
------------------
ciao

 >
emm per ADO cambia leggermente.
-----------------------------
INSERT INTO
[MS Access;Database=C:\Percorso\TuoDb.mdb;PWD=TuaPassword].Utenti
( nick, email, cookie )
SELECT tmpUser.User,
                 tmpUser.Email,
                 tmpUser.CookieCheck
FROM tmpUser
WHERE (tmpUser.Idcode=1866490746)
------------------------------
ciao


GRAZIE ENORME GRAZIE!!!!
Funziona!!!
CSSoft ti confermo che funziona!!!
Ehm....Giorgio mi dici dove hai studiato o trovato questa sintassi
...Ho spulciato msdn...mi son rivolto a sanGoogle ma molto probabilmente il
mio livello di incartatura era tale che non ho trovato nessun link utile!!!
Mi sapresti dare un link?
Grazie ancora
Wodkino soddisfatto !
-- 
Il Wodkino Nazionale č a : 
www.martek.it


 CSSoft ti confermo che funziona!!!
grazie.
peccato che nel frattempo uno dei due db sia diventato msde, se no avrei
sfruttato di sicuro il suggerimento.
chissŕ se si riesce lo stesso...


 workaround) dovrebbe essere lo stesso.
...
Questo non va o non l'hai provato?


ciao,
purtroppo no ho nessun link da segnalarti.
La sintassi estesa č documentata molto bene nell'help del glorioso Access
2.0, purtroppo queste informazioni si sono perse nella nebbia con l'avanzare
delle versioni. Mettere il parametro PWD č stata solo un'associazine con la
sintassi per SqlServer.
Ciao Giorgio


ciao,
č la stessa cosa
esempio con autenticazione di Sql Server
----------------------
SELECT *
FROM [ODBC;
             DRIVER=Sql Server;
             Server=TuoServer;
             DATABASE=Prova;
             UID=TuoUser;
             PWD=TuaPassword;
             DSN=;].NomeTb
------------------------
Esempio con autenticazione integrata di Windows
-----------------------
SELECT *
FROM [ODBC;
             DRIVER=Sql Server;
             Server=TuoServer;
             DATABASE=Prova;
             Trusted_Connection=yes;
             DSN=;].NomeTb
--------------------------
Ciao Giorgio


non mi va.....l'avevo provato!


 è la stessa cosa
ho avuto occasione di provare la cosa solo ieri sera.
funziona perfettamente, ho fatto un inner join tra una tabella access e una
sql senza il minimo problema.
così a margine, ho provato a sostituire tutta la parte contenuta tra
parentesi quadre con la connection string utilizzata per connettersi al
database sql server (sembravano tanto simili). non ha funzionato :-(
grazie ancora (anche se in ritardo)



Ciao Sergio,
la parte contenuta tra le parentesi quadre è interpretata da DAO e in questo
caso utilizza il driver ODBC per la connessione.
Il primo parametro indica l'isam da utilizzare
-------------
ODBC;
MS Access;
Text;
Dbase IV;
ecc. ecc
-------------
gli altri parametri sono in conseguenza del primo.
Se hai inserito la stringa di connessione per ADO (via provider SQLOLEDB)
anche se molto simile non funziona.
Ciao Giorgio

 SQLOLEDB) anche se molto simile non funziona.
quindi se io sostituivo ODBC con il provider utilizzato nella mia
connessione dopo avrei potuto mettere pari pari la stringa di connessione?
questa sera ci provo...
anche perchè, ovviamente, la stringa di connessione ce l'ho già, e quindi
evito di costruirmene una nuova al runtime. non che sia difficile, ma se
dovessi cambiare qualche virgoletta, la cambio in un unico posto :-)


 connessione dopo avrei potuto mettere pari pari la stringa di connessione?
Ciao Sergio,
se escludi il provider dalla stringa di connessione puoi utilizzare la parte
fondamentale per le query
es...
----------------------------
Public strPprov As String
Public strODBC As String
Public cn AS ADODB.Connection
Sub Connetti()
Set cn = New ADODB.Connection
'Stringa in comune
strPprov = "Server=(local);Database=TuoDb;Trusted_Connection=yes;"
' Apro la connessione ADO
cn.Provider = "sqloledb.1"
cn.Open strPprov
' compongo la Stringa per le query via ODBC
strODBC = "[ODBC;Driver=Sql Server;" + strPprov+"]"
End Sub
---------------------------------
Ciao Giorgio

 la parte fondamentale per le query
ti ringrazio, come prima cosa, del tempo che mi stai dedicando :-)
come ho accennato negli altri post, non posso fare le prove "on line" perchè
la macchina su cui sviluppo questo progetto non ha la connessione a
internet, ed è fisicamente distante dalle macchine dotate di questa
indispensabile "facility"...
proverò sicuramente i suggerimenti che mi stai dando, però, al momento, ho
una perplessità: mi sembra di ricordare che la stringa di connessione che
utilizzo (generata in automatico tramite l'accrocchio di mettere un adodc e
sfruttare la sua procedura guidata di creazione della stringa) ha dei nomi
diversi per indicare i parametri, in particolare quello che definisce la
connessione trusted.
non ricordo che cosa utilizzava, ma sicuramente non
"Trusted_Connection=yes".
dici che c'è la possibilità di farlo funzionare lo stesso?



Ciao Sergio,
In genere la stringa di connessione é questa
---------------------------
Provider=SQLOLEDB.1;
Data Source=TuoServer;
Initial Catalog=TuoDb;
Integrated Security = SSPI;
---------------------------
La connessione ADODB.Connection  funziona anche con i parametri che ti ho
proposto, il driver ODBC interpreta correttamente il parametro "Integrated
Security = SSPI " ma "Data Source=" e "Initial Catalog=" devono essere
cambiati rispettivamente in "Server=" e "Database=".
Tutto dipende dal Provider,  ad esempio in un progetto ADP di AccessXp non
si può indicare "Server=" e "Database=", la sua stringa di connessione è ..
----------------------------
Provider=Microsoft.Access.OLEDB.10.0;
Persist Security Info=True;
Data Source=TuoServer;
Integrated Security=SSPI;
Initial Catalog=TuoDb;
Data Provider=SQLOLEDB.1
----------------------------
non resta che la prova sul campo, ma se adodc è meno permaloso di Access
penso che debba funzionare.
Ciao Giorgio

 Access penso che debba funzionare.
mi piacciono questi thread lasciati lě a decantare e poi ripresi...
prova sul campo effettuata, e trovata ulteriore discordanza: quando si
compone la stringa di connessione ad un db sql senza fare uso della
sicurezza integrata, nel caso in cui la password sia nulla bisogna omettere
il parametro, mentre quando si usa la connessione odbc bisogna metterlo
comunque, anche se č "pwd=;".
quindi c'č un ulteriore ostacolo al riutilizzo della stringa di connessione
e mi tocca di farne comunque due.
