Newsgroup: it.comp.lang.visual-basic
Titolo: accesso db remoto

Ciao a tutti. Ho questo problemino.
Ho un file mdb (access) che risiede su di un file server Linux, che
condivide le proprie cartelle (compresa quella dove è contenuto il file
access) con samba.
Tale file è il file sul quale lavora un gestionale scritto in vb.
Mi hanno chiesto ora di poter accedere a tale file da remoto, attraverso un
programma da scirviere ex-novo in vb6 (che dovrà scrivere/leggere i dati
sulle tabelle).
Come fare?
E' da escludere l'installazione di msde o sqlserver...hanno linux e si
tengono quello.
Ho pensato ad un accesso di rete con Vpn.....ma a questo punto il programma
in VB quanto si scarica via internet? tutto il file mdb? o dipende da come è
stato scritto?( cursori lato client/server??)?
Oppure...altre idee?
Grazie
Fresco

 Come fare?
E' come se il file fosse su un server Windows.
Basta avere i permessi di lettura/scrittura e il nome o l'indirizzo del
server e usarlo come percorso di apertura come un normale mdb locale.
Funziona *lentamente*, per cui carica in memoria tutto quello che puoi, ed
evita di interrogare più volte il server per avere gli stessi dati.
Evita di eseguire "select *..." ma usa "select campo1, campo2...".
Evita di aprire una tabella in scrittura con "select * from tabella",
piuttosto usa "select * from tabella where false" e poi procedi con le
addnew.
Indicizza assolutamente tutti i campi che compaiono nelle where delle tue
query.
Usa cursori lato server tutte le volte che puoi (.CursorLocation =
adUseServer,  anche se in realtà è sempre il client che le esegue).
Se usi una Vpn opportunamente cifrata, hai in più la garanzia di non far
sniffare i dati da chiunque.
termoPilucco
termoPilucco 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Evita di eseguire "select *..." ma usa "select campo1, campo2...".
[cut]
Eh, mica vero: se il db dell'OP e' un access, percio' si tira
dietro sempre e comunque tutto.
Nel caso non possa cambiare db per usare un vero client-server,
potrebbe prendere in considerazione l'ipotesi di farsi una copia
locale (anche un altro mdb, se crede) dei dati che non devono
cambiare) ed aggiornare tale copia meno spesso.
-- 
ciao, hal

 dietro sempre e comunque tutto.
Giusto, anche perchè la pagina fisica che contiene il campo1 normalmente
contiene anche tutti gli altri, e access deve vtrasferire le intere
pagine, non i risultati della query...
Però, nel caso estremo in cui siano stati aggiunti, chessò dei campi memo
o altra roba simile (cioè tipi di dati in cui nella pagina fisica del DB
ci sono i puntatori alle pagine fisiche che contengono i dati) dovrebbe
essere risparmioso evitare di selezionarli con la "*" (ovviamente se tali
dati non servono).
Ultimo consiglio per il postatore originale: scarica un analizzatore di
traffico di rete, usa un DB con un numero inverosimilmente alto di dati,
ed esegui passo passo i punti salienti del tuo programma (.update
execute, ...) in modo da misurare in termini di byte quanto pesa ogni
interrogazione.


tengono quello.
Hai pensato a PostgreSQL?
Lo sto provando, e devo dire che finora mi ci trovo proprio bene.
--
Ciao!
Luca Menegotto

 dietro sempre e comunque tutto.
[CUT]
Scusatemi, fatemi capire bene...anche perchè in materia db non sono
ferratissimo...mi dite in pratica che da remoto il mio programma in vb6 si
scaricaricherebbe comunque tutto il file??? Ho capito bene??
Grazie ancora per la cortesia
Fresco

 Fresco
Non "si scarica" il file ma richiede al file system (ovviamente tramite il
protocollo di comunicazione scelto) le pagine del DB che gli servono per
eseguire le query (non dimenticare che il motore di Access è sempre sul
client).
Per questo consigliavo di usare chiavi indici e altre precauzioni che
minimizzino l'accesso in lettura/scrittura.
Il consiglio parallelo è di valutare l'uso di un databse che utilizzi un
motore lato server.


 minimizzino l'accesso in lettura/scrittura.
Grazie 1000 per i suggerimenti....ti disturbo ancora, cosi' capisco
meglio..porta pazienza.
Io ho il mio applicativo VB6, con accesso al file mdb via ado.
L'idea era questa: creo una VPN (con una linux-box, es.Ipcop) ed in pratica
sono in rete.
A questo punto il mio applicativo accede al file mappato sul fileserver
linux, via VPN.
Il file mdb è sostanzioso, diciamo sugli 8-10 mega, destinato ad ingrandirsi
col tempo.
Secondo te (voi), è una soluzione fattibile o no? Parlo ovviamente di tempi
di accesso al file, date le dimensioni del file. Il programma da remoto
dovrebbe consultare gli archivi ed aggiungere dati.
Grazie 1000
Fresco

 dovrebbe consultare gli archivi ed aggiungere dati.
Io eviterei.
-- 
hth, hal

 dovrebbe consultare gli archivi ed aggiungere dati.
Dipende dalla velocità di connessione della VPN.
Se è sotto i 10 mbit, lascia perdere.
Se è sopra i 10 mbit, tieni conto che le prestazioni degradano anche in
base al numero di utenti connessi contemporaneamente e che comunque usare
Access con più di 10 connessioni non è l'ideale.



Scusa, ma ci devi accedere via internet?
Mi sembra che in questo thread ci sia un equivoco di fondo.
Se non è così, come non detto.

 Se non č cosě, come non detto.
Non necessariamente....potrei accedere alla rete con un accesso remoto...lo
stesso risultato pero' lo posso avere via VPN.
Ciao
Fresco