Newsgroup: it.comp.lang.visual-basic
Titolo: MS REMOTE: ultimo atto

Sto cercando di accedere, da VB6, ad un MDB di MsAccess 2000 residente in 
uno spazio Web di un server IIS.
Inutile dire che mi sono letto attentamente tutte le 48 occorrenze proposte 
da Google di "ms remote" e le 4 di "msremote" su questo newsgroup.
Mi son letto gli innumerevoli post  in lingua inglese che č possibile 
consultare interrogando in modo piů mirato Google, ma non ho trovato una 
soluzione.
Ho esaminato le 2 soluzioni di Moreno Sirri e le stringhe di connessione 
reperibili su svariati siti (ad es. 
http://www.carlprothman.net/Technology/ConnectionStrings/MSRemote/tabid/93/Default.aspx
).
Ho provato un esempio trovato su 
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=34223&lngWId=1
Ecc. ecc.
Vorrei *semplicemente* consentire ad un mio programma (VB6 - ADO) di 
funzionare *anche* se l'MDB non č in locale ma sul Web. Ovviamente 
l'utilizzatore dovrebbe scegliere *o* l'MDB locale *o* l'MDB remoto.
Credo che si debba *solo* impostare la corretta stringa di connessione ma, 
ripeto, nonostante i miei numerosi tentativi, non sono riuscito ad ottenere 
il risultato desiderato.
Qualcuno ha un esempio di stringa di connessione *realmente* funzionanate ?
Ho l'impressione che sia questo un argomento piuttosto datato e che i piů 
evitano, forse perchč non porta a risultati (in termini di prestazioni) 
soddifacenti. Il fatto č che nel mio caso non ha portato, finora, ad alcun 
risultato !
Grazie a quanti vorrano fornirmi qualche utile suggerimento.
AlpVir

 ottenere il risultato desiderato.
Fase uno:
Che risultato hai ottenuto? Perche' potrebbe essere qualsiasi il problema, 
senza sapere eventuali messaggi restituiti...
Fase due:
Tendenzialmente, per poter fare quello che chiedi con MS Remote: MSDAREM.DLL 
is shipped with Microsoft® Data Access Components 2.0 and later. This 
provider must be installed on both the computer where the consumer exists 
and on every remote server to be accessed. In addition to MSDAREM.DLL, every 
remote computer must have the OLE DB Persistence Provider (MSDAPRST.DLL) and 
the Cursor Service for OLE DB (MSADCE.DLL) installed.


Non credo proprio che la causa del mio insuccesso sia il componente 
MSDAREM.DLL che non sarebbe presente in entrambi i computer, in quanto per 
il momento uso UN SOLO computer su cui ho il server Web (XP con IIS 5 
perfettamente funzionante).
Le variabili in gioco sono tantissime (DSN, non DSN, IP o nome server, ecc. 
ecc) ed è difficile comprenderle tutte.
Un'unteriore difficoltà è quella di utilizzare MSAccess e non SQL Server che 
è citato nella maggior parte (non tutti) degli esempi o pseudo esempi da me 
sperimentati.
Hai qualche effettiva esperienza su questi argomenti ?
VB6 e ADO credo di conoscerli abbastanza bene ma evidentemente ci sono delle 
zone scure.
AlpVir

 Hai qualche effettiva esperienza su questi argomenti ?
No, ma di solito prima risolvo i problemi e poi mi chiedo se posso 
riuscirci. Funziona sempre.
Dicevamo...
Qual'e' il problema in sostanza?
Ti da' un qualche messaggio di errore?
La classica frase "La cosa X non funziona, come risolvo?" non ci aiuta 
molto, se non ci dici COME non funziona.


Hai ragione, ma il fatto è che ho provato (prima di chiedere il tuo ed il 
vostro aiuto) in mille modi ed i messaggi di errori sono quindi diversi.
Ad esempio il codice sotto riportato da il seguente messaggio di errore: 
Errore 8447 Errore del Server Internet
Nonostante :
- abbia creato il DNS "DNSASC" di sistema con o senza username, con o senza 
pasword
- abbia utilizzato userrname "Admin" o nullo
- abbia utilizzato password "alfa" o nulla
- abbia inserito  "
http://amd
" (il nome del mio computer) oppure 
http://10.0.0.5
 (l'IP del mio computer)
- ci siano i riferimenti  a Active Data Object 2.7 library, Remote Data 
Object 2.0, Remote Data Services 2.7 Library, Remote Data Services Server 
2.7 Library
Ancora :
nel file msdfmap.ini c'è, per buona misura :
[connect DBASC]
Access=ReadWrite
Connect="DSN=DSNASC;UID=;PWD=;"
[userlist DBASC]
Administrator=ReadWrite
[sql TabAziende]
Sql="SELECT * FROM TabAziende"
ed anche in questo caso ho usato tutte le combinazioni di username e 
password ("Admin" e/o nulla, "alfa" e nulla)
Option Explicit
Dim rs As Object   'Recordset
Dim ds As Object   'RDS.DataSpace
Dim df As Object   'RDSServer.DataFactory
Private Sub Form_Load()
   Set ds = CreateObject("RDS.DataSpace")
   Set df = ds.CreateObject("RDSServer.DataFactory", "
http://amd
")  ' amd è 
il nome del computer
End Sub
 Private Sub Command1_Click()
   'This query returns a recordset over HTTP.
   Dim strCn As Variant, strSQL As Variant
   strCn = "dsn=DSNASC;Username=;PWD=;"            '  DSNASC è il nome di un 
DSN di sistema
   strSQL = "select * from TabAziende"                         '  TabAziende 
è una tabella di un MDB
   Set rs = df.Query(strCn, strSQL)                               ' 
l'errore è su questa linea
   Debug.Print rs(0)     'Print Row 1, Col 1 to Debug window
End Sub
L'esempio di Clint LaFever trovato su 
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=34223&lngWId=1
da lo stesso tipo di errore, catturato questa volta dalla Sub 
ConnectandDisplay().
Aggiungo che il computer su cui opero ha come sistema operativo XP e come 
Web Server IIS 5.0 configurato in modo da poter servire un rete locale con 3 
computer che accedono senza problemi al sito interno memorizzato sul 
computer di cui sopra. In altre parole il computer ed il Web Server sembrano 
essere pienamenti efficienti. Ultima informazione:  mi collego come 
amministratore.
Quale potrebbe essere il motivo del malfunzionamento (o non funzionamento) ?
Grazie dell'attenzione.
AlpVir

 Errore 8447 Errore del Server Internet
[cut]
Alcuni pensieri in ordine sparso:
1) Remote Data Service e' stato dichiarato obsoleto da MS.
Nonche' pericoloso per la sicurezza.
Ad oggi la tecnologia base da utilizzare per accedere a DB Access
remoti e' tramite pagina ASP (o php se preferisci)
2) Nel tuo codice di esempio che hai postato usi (lato client) i
componenti di RDS ,mentre tutti gli esempi che si trovano in rete usano
ADO.
3) Tutto cio' che ho trovato in giro continua ad essere che l'errore
"Internet Server Error" significa che il server non risponde
correttamente probabilmente perche' il servizio RDS non e' stato
configurato correttamente.
Ora...capisco che, come dici tu, essendo quella la macchina di sviluppo
sicuramente ha le dll dell'RDS. Ma, da quello che si legge
qui: 
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q249719
qui: 
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q251122
qui: 
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q250536
(anche se tu hai un XP)
Mi pare che la corretta configurazione del servizio RDS sia un tantino
piu' complicata di avere semplicemente un paio di DLL...
4) Giusto per...prova anche da un altro PC. A volte (a seconda della
rete) usando una sola macchina per fare Server+Client, non sempre tutto
va come dovrebbe.

Alcuni pensieri in ordine sparso:
1) Remote Data Service e' stato dichiarato obsoleto da MS.
Nonche' pericoloso per la sicurezza.
Ad oggi la tecnologia base da utilizzare per accedere a DB Access
remoti e' tramite pagina ASP (o php se preferisci)
Ho già sperimentato questa tecnica (pagine ASP su uno spazio Web) e la 
utilizzo abitualmente ma SOLO per copiare un singolo record dal Web in 
locale. Non certo per tutte le complesse operazioni Read/Write che un 
normale gestionale deve fare. Ammetterai che se ci fosse una soluzione che 
consentisse SOLO di cambiare la stringa di connessione (ed eventualmente 
poche altre cose) sarebbe ben preferibile rispetto alla soluzione ASP che 
(per come la conosco io, con file XML) costringe ad una riscrittura quasi 
completa delle parti deputate a collegarsi al database.
2) Nel tuo codice di esempio che hai postato usi (lato client) i componenti 
di RDS ,mentre tutti gli esempi che si trovano in rete usano ADO.
Vero. Ma non uno mi ha funzionato. Ho anche provato ad inserire il mio vero 
IP ed un vero percorso di un MDB che ho sul Web: nulla !
3) Tutto cio' che ho trovato in giro continua ad essere che l'errore 
"Internet Server Error" significa che il server non risponde correttamente 
probabilmente perche' il servizio RDS non e' stato configurato 
correttamente.
Ora...capisco che, come dici tu, essendo quella la macchina di sviluppo 
sicuramente ha le dll dell'RDS. Ma, da quello che si legge
qui: 
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q249719
qui: 
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q251122
qui: 
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q250536
(anche se tu hai un XP)
Mi pare che la corretta configurazione del servizio RDS sia un tantino piu' 
complicata di avere semplicemente un paio di DLL...
Anche qui non so darti torto. La configurazione del servizio RDS è veramente 
tosta anche se credo di averlo fatto correttamente. E' per questo che 
preferirei una soluzione "solo ADO".
4) Giusto per...prova anche da un altro PC. A volte (a seconda della rete) 
usando una sola macchina per fare Server+Client, non sempre tutto va come 
dovrebbe.
Già fatto: stessi risultati.
Altre idee ?
AlpVir