Newsgroup: it.comp.lang.visual-basic
Titolo: [?] mdb database VB6 in multiutenza

Questo non l'avevo ancora pensato fin`chè non ho messo due PC in rete:
Ho 3 computer in rete.
Sarebbe possibile poter gestire il mio classico database fatto in VB sul PC1
anche da un altro PC2 o PC3 della rete contemporaneamente sullo stesso file
database mdb?
PROVE FATTE In pratica
-lascio la mia applicazione sul PC1
-raggiungo da PC2 sulla rete e faccio partire l'exe
-riesco a gestire tutto senza nessun problema.
-Da PC1 accedo allo stesso EXE
-Funziona perfettamente ma non con lo stesso file MDB.
Vorrei in pratica poter accedere allo stesso file MDB sempre dalla stessa
applicazione VB6 che utilizzo così che se come database accedo da PC1 o PC2
o PC3... sempre riesca ad avere un unico file mdb come già faccio con
filemaker ma vorrei poter sfruttare la mia applicazione in questo modo.
Qualche idea su VB?
Dipende dall'apertura del database o della sua creazione o entrambe?
GrazieE3 per qualsiasi consiglio.
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com
 - The #1 Newsgroup Service in the World!
-----==  Over 80,000 Newsgroups - 16 Different Servers! =-----

 database mdb?
Considera "Server" il PC che ospita il database. Da questa macchina il tuo
programma apre il database come se fosse (lo è) in locale. Per esempio
"C:\DATI\mio_dababase.mdb"
Sugli altri PC Connetti un'unità di rete (per esempio E:) che punta alla
cartella del "Server" che contiene il database (per esempio DATI). Da queste
macchine il tuo programma apre il database con "E:\mio_database.mdb"

 filemaker ma vorrei poter sfruttare la mia applicazione in questo modo.
- Usa un file INI nel PC1 (server) dove inserisci il percorso del MDB e poi
accedi all'EXE del server dal PC2.
Io l'ho provato e funziona
PaPer.

> Io l'ho provato e funziona
grazie mille per la specifica, ma riesci ad usarlo anche in multiutenza?
Il problema è che io riesco tranquillamente ad utilizzare il mio programma
da SLAVE compreso il database, l'unico problema è che non accetta due UTENTI
contemporaneamente.
-PC1 MASTER con applicazione DATABASE.EXE e file DATI.MDB tutti su
C:\PROG\DATABASE.EXE
-PC2 SLAVE apro tranquillamente DATABASE.EXE ed utilizzo i suoi DATI.MDB sul
PC1
Ora, appunto, provo ad intervenire dal PC MASTER sull'applicazione
DATABASE.EXE e tutto OK, ma se tento di
accedere anche ai DATI.MDB qui ci scappa un crash.
1. il database risulta a ZERO
2. se tento di salvare o scrivere o altro niente da fare, errore di accesso
Diciamo che l'intenzione non è solo usare il database in remoto ma
utilizzarlo in multiutenza CONTEMPORANEAMENTE cosa che al momento non
cuba... solo uno alla volta... il primo ha la precedenza.
Non so se appunto dipenda da cosa?
ciao grazie


 macchine il tuo programma apre il database con "E:\mio_database.mdb"
Grazie mille per la specifica, ma riesci ad usarlo anche in multiutenza cioč
due utenti contemporaneamente della serie, moglie e marito che aggiornano lo
stesso database o anche tu devi mandare a vedere C5 la mogliettina...:-)))
Io riesco SOLO come utente unico, se parto dal PC1 server non posso accedere
al mdb da SLAVE e viceversa... il primo č prioritario e nella mia
applicazione VB probabilmente manca qualche cosa da aggiungere?
ciao grazie (vedi reply a PaPer)
ciao Grazie Anto.


 ciao grazie (vedi reply a PaPer)
Vedi le modalitą di apertura del database, che non sia aperto in modo
esclusivo.

 esclusivo.
Ciao Lupo, grazie mille per l'aiuto.
Mi sa che la gabola è qui e non saprei come metterlo in multiutenza... ;-))
premesso che non saprei come e dove intervenire.
Il database lo apro così:
    CnnStat.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Nome_DBase & ";"
Inoltre chiudo e riapro durante l'esecuzione ad esempio un "RENUMBER" dei
dati e un "COMPRESS" del database durante alcune manovre scelte dall'utente
dove necessario lavorando sul mdb, chiudere il file.
sbaglio, e devo aggiugnere qualche cosa?
grazie e scusa la mia poca capacità in questi open...
ciao
Anto


Ciao Lupo, scusa...
Hai letto il mio sopra col modo di apertura del db??
Non ti ho più letto e forse si è perso nei meandri della posta...
semmai lo riposto...
GRAZIE!


 semmai lo riposto...
Vuoi la pura verità? Ho in evidenza il tuo post. Ho cercato fra i vari
parametri di ADO (che non conosco quasi per niente, ma mi sta già laggiù!),
ma non ho trovato come poter dire che il database è aperto in modalità di
sola lettura (forse il recordset, ma questo non c'entra col tuo problema)
e/o esclusiva! Quindi non so come si possa intervenire per verificare se tu
l'hai aperto in modo esclusivo.
Forse mi sto perdendo in un bicchier d'acqua. Prova a postare anche le varie
modalità aperture dei recordset, magari con un nuovo topic. Io, francamente,
non riesco a capire.


[ cut ]
Ciao Lupo,
ho perso traccia del thread quindi non so se la proprietà Mode
dell'oggetto Connection possa fare al caso tuo... ?
Ciao
 valter

 ha scritto nel messaggio
news:ade0q8$1ird$1...@newsreader1.mclink.it...

Ciao Valter. Serve ad Apip (ma interessa anche a me). Io non l'ho mai
impostata, ma stando all'Help il default è adModeUnknown. Ma come la
interpreta (di sola lettura? apertura esclusiva?)
Dici che per il problema di Apip (Apre un db da un PC ma non può fare la
stessa cosa su di un altro in rete, anche se non indica l'errore che gli
segnala) basta fare:
Set cnn1 = New ADODB.Connection
cnn1.Mode = adModeReadWrite
?

 ?
Anzi, ho letto meglio: adModeShareDenyNone

 cnn1.Mode = adModeReadWrite
Non so che problema abbia, ma se il db è chiuso al momento che Apip
cerca di connettersi, non credo sia un problema di conflitti tra
autorizzazioni
( almeno non in relazione alla proprietà Mode..).. al contrario se il db
è già aperto da qualcuno con modalità esclusiva .. o con una qualunque
autorizzazione che limiti gli accessi da altre postazioni... vale la regola
del
"chi si alza per primo si veste" :-)
Ciao
 Valter

 chiaro).
Si infatti succede cosě come descritto da Valter... il primo che si alza si
prende il bagno, gli altri spettano...
Premesso che non sono una cima con db recordset ecc... anzi... tutt'altro...
na mazza!
dunque lo scopo č di usare il file DATA.mdb da due postazioni...:
Se dal PC in rete uso il programma da qualsiasi PC nessun problema.
Quando tento di usarlo in contemporanea, cioč col primo che si č alzato, il
programma NON vede l'archivio .mdb.
č a ZERO.
In pratica:
PC1: apre PIPPO.EXE che e lavora su file MDB inserendo i suoi dati in
DATA.MDB
PC2: apre PIPPO.EXE e funziona tranquillamente ma se usa identico file
DATA.MDB
questo immediatamente mette a zero e non trova nessun dato, se tento
l'accesso, ho l'errore.
Purtroppo sui vari PC della rete ho solo l'exe e non l'eseguibile e non la
sorgente e vorrei evitare di dover installare VB completo per capire dove
sta "l'orrore".
Ecco proprio ora sto provando col due PC della rete, PC1 SERVER lavora
indisturbato, accedo da PC2 sia la PIPPO.EXE  che al data.mdb
Nel programma apro nel seguente modo:
CnnStat.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Nome_DBase &
";"
"METODO DELL'OGGETTO NON RIUSCITO"
RUNTIME 3709
Poi dei miei controlli mi dicono:
ERRORE DI RUNTIME 3709
connessione chiusa o non valida in questo contesto. Impossibile utilizzarla
per eseguire l'operazione.
poi crasha...
Sia che PC1 server > poi parte PC2 SLAVE che viceversa
Parto da PC2 SLAVE poi parte PC1
sia che il PIPPO.exe e DATA.mdb sia su PC1 che PC2...
insomma... vale la regola del bagno al mattino..... :-)))) he he he....


 per eseguire l'operazione.
 significa che il tuo programma sta accedendo a proprietà/metodi che
presumono una connessione aperta.
Nulla fa pensare al fatto che c'è un utilizzo esclusivo da parte di altri.

 Nulla fa pensare al fatto che c'è un utilizzo esclusivo da parte di altri.
Beh.. comunque se tento di aprire il database in doppio, usando la stessa
applicazione... beh forse allora è questo.
Io faccio partire lo stesso programma lo stesso file PROGRAMMA.EXE dato che
non saprei come condividere altrimenti il database che è in app.path!
Comunque il primo che arriva lo usa, salva cancella ecc..., l'altro va in
pallone, giâ all'apertura NON trova i dati.... ê in uso, aperto come
descritto!
Cosa sia non so! chiedo appunto a chi potrebbe aiutarmi nello scopo!
Magari Valter saprebbe darmi qualche dritta?
ciao grazie
Anto.


 Nulla fa pensare al fatto che c'è un utilizzo esclusivo da parte di altri.
Proprio non saprei
Dunque sto cercando di capire, ho trovato il modo di "fermare dove si
stinca":
errori riscontrati sul "slave" cioê il secondo che carica il database...
dato che il primo non ha nessun problema apparente...
Le risposte di VB con disattivati gli 'on error
----
DBEngine.CompactDatabase Database, App.Path & "\DBTemp.mdb"
ERRORE 3356
Database già aperto in modo esclusivo dall'utente 'admin' sulla macchina
'remota' ritentare quanto il database è disponibile.
(questo potrei anche capirlo... ed evitarlo del tutto.. però potendolo
comprimere da master o da slave potrebbe essere utile)
---
---
RstQSO.Open Criterio_Old, CnnList, adOpenStatic, adLockOptimistic, adCmdText
ERRORE 3709
Metoto open dell'oggetto recorset non riuscito
---
idem
    Set RstCnt = New ADODB.Recordset
    RstCnt.Open "Select COUNT(*) AS Totale From Log", CnnList, adOpenDynamic
---
idem
    RstList.Open Criterio_List, CnnList, adOpenStatic, adLockOptimistic,
adCmdText
e questo mi azzera il database
se sono riuscito ad essere più chiaro non saprei.. forse qui sta la gabola..
anzi per forza... è qui che si ferma!
mah.. chissà se ci riesco o devo abbandonare l'idea!!!
ciao e grazie comunque!