Newsgroup: it.comp.appl.access
Titolo: LAVORARE SU UN DB A DISTANZA

	Salve a tutti, ho in questo momento l'esigenza di lavorare sui
recordset di un db access remoto. Ho pensato di usare DAO con
collegamento del db remoto via ODBC ma, visto che sono alla mia prima
esperienza le cose non funzionano bene.
Ho creato il dns utente che punta al db, poi nella routine che mi
serve a recuperare i dati definisco una variabile workspace e apro il
db per intenderci uso il seguente codice:
Dim myrec As Recordset
Dim mydb1 As Database
Dim mystr As String
Dim wrkjet As Workspace
Set wrkjet = CreateWorkspace("mio", "", "", dbUseODBC)
 
Set mydb1 = wrkjet.OpenDatabase("", , , "ODBC;DSN=storedrake")
 
Set myrec = mydb1.OpenRecordset("select * from storico_fax")
mystr = Trim(myrec.Fields("prodotto1"))
mystr = "prova di cambiamento"
myrec.Edit
myrec.Fields("prodotto1") = mystr
myrec.Update
mystr = myrec.Fields("prodotto1")
genera un errore quando incontra il metodo edit; come posso modificare
i record a distanza? Grazie a tutti e soprattutto a chi ha voglia di
darmi una mano.
E' corretta la routine di aggancio dei dati via odbc?

 ha scritto nel messaggio
news:3d68869...@powernews.libero.it...

Credo che tu abbia scelto la via meno semplice, anche se percorribile.
Al tuo posto mi collegherei in remoto al pc, assegnando una nuova lettera di
unità. Fatto questo (e basta farlo all'avvio di Windows: riconnetti
all'avvio) allegherei le tabelle del DB remoto al db locale, che avranno una
stringa di connessione del tipo \\PCRemoto\C\SuaCartella\SuoDb.mdb oppure
Z:\SuaCartella\SuoDB.mdb se hai creato una nuova lettera di unità.
Se il Db remoto permette la scrittura otterrai una notevole semplificazione
del codice e la possibilità di agire come se le tabelle remote fossero
locali.
La velocità di lettura dipende dalla velocità di connessione.
Ved un po' tu.
Ciao, Carlo

 esperienza le cose non funzionano bene.
Con "remoto" intendi nella stessa LAN oppure un host in internet?


wrote:

Intendo nella stessa LAN

 genera un errore
Con DAO non ho mai provato, ma con ADO sembrerebbe più semplice:
devi solo impostare una connection che si riferisce ad un DB esterno,
impostando la connectionstring dove Data Source:="NomeDBesterno" ed
eventuali Pwd ed ID (per avere una connection string di base fai il
Debug.Print di CurrentProject.Connection.ConnectionString)
dim Con as New ADODB.Connection,Rec as new ADODB.Recordset
Con.open TuaConString
Rec.Open "storico_fax",Con

 Rec.Open "storico_fax",Con
ops.. scusate forse ho detto una cazzata... ODBC qualcosa a che fare con SQL
o MSDE o arabo per me?



Bene dopo vari tentativi sono riuscito a risolvere il problema di
manipolazione dei record a distanza mediante DAO/ODBC.
Ora sono di fronte a un dubbio: secondo voi č meglio trattare i record
attraverso DAO/ODBC oppure seguire il consiglio del post di Carlo
Costarella e connettere un'unitŕ di rete e poi lavorare con il DAO
come se fossero tabelle locali? Quali possono essere gli incovenienti
o i pregi delle due soluzioni?
Grazie a tutti.
Allego qui di seguito il codice che mi ha permesso di manipolare i
record attraverso DAO/ODBC se puň essere utile a qualcuno ben venga.
Ciao a tutti da sittinghorse.
Dim myrec As Recordset
Dim mydb1 As Database
Dim mystr As String
Dim wrkjet As Workspace
Dim connessione As Connection
Set wrkjet = CreateWorkspace("mio", "", "", dbUseODBC)
wrkjet.DefaultCursorDriver = dbUseClientBatchCursor
Set connessione = wrkjet.OpenConnection("conness",
dbDriverCompleteRequired, False, "ODBC;DSN=storedrake;")
Set myrec = connessione.OpenRecordset("select * from storico_fax",
dbOpenDynamic, 0, dbOptimisticBatch)
Do Until myrec.EOF
    mystr = Trim(myrec.Fields("prodotto1"))
    mystr = "prova di scrittura in remoto"
    myrec.Edit
    myrec.Fields("prodotto1") = mystr
    myrec.Update dbUpdateBatch
    If Not myrec.EOF Then
        myrec.MoveNext
    End If
Loop
connessione.Close
wrkjet.Close