Newsgroup: it.comp.lang.delphi
Titolo: Applicativo in rete

Ciao
fino ad oggi ho sempre sviluppato applicativi stand-alone. Adesso devo
cominciare a sviluppare per reti aziendali medio-piccole. Mi sapreste dire
se c'è documentazione online a riguardo? Quali accortezze devo usare
nell'accesso-modifica dei dati (db Access)? Come gestire le concorrenze?
Ciao e grazie
Andrea Cocci

nell'accesso-modifica dei dati (db Access)? Come gestire le concorrenze?
Ciao Andrea, benvenuto su ICLD :-)
Multiutenza con db access: argomento affrontato piu' volte su questo ng,
cerca nello storico qui
http://groups.google.it/groups?&group=it.comp.lang.delphi
Per quanto riguarda le concorrenze, Access solo dalla versione 2000 permette
il row level locking, mentre fino allla versione 97 hai un locking a livello
di pagina.
Con delphi puoi testare un funzionamento in rete utilizzando i componenti ADO:
metti il db in un disco di rete e sul form deposita un tadoconnection,
tadotable. Impostato il tadoconnection sul db access che hai sul disco di
rete, e collega l'adotable all'adoconnection.
L'adotable, per funzionare in concorrenza di accesso, deve avere impostate
queste proprieta' come segue:
    CursorLocation = clUseServer
    LockType = ltReadOnly
    TableDirect = True
Questa e' la base che io utilizzo per fare un gestionale multiutente con db
Access2000. Unico inconveniente (irrisolvibile, imvho) un certo lag prima di
segnalarti il blocco di un record gia' lockato da un'altro utente: a questo
proposito, il mitico e mai dimenticato Fabrizio Mancini sviluppo' un tutorial
dove, tra le tante cose affrontate, per risolvere l'inconveniente di un lock
infinito causa utonto pirla impostava dei timer per uscire dal lock dopo 3
minuti. Anche questo troverai su ICLD, nel caso ti servisse te lo posso
spedire in email.
scusa per la scrittura, vado di fretta e ho cercato di dirti il piu'
possibile, fammi sapere come ti trovi
Ciao
-- 
Morde. 
(
mo...@despammed.com
)
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

 Access2000.
Ho guardato un pò in giro e ho visto che ci sono principalmente due modi.
Il primo consiste nel lokkare una tabella (magari mettendo un flag a 1 su
una tabella opzioni) e resettare il flag a transazione eseguita.
L'altro modo è quello di impostare a dovere l' IsolationLevel del
TAdoConnection, almeno credo.
Quello che non ho capito è se ad esempio le mie query vanno modificate
rispetto a come faccio di solito per applicazioni stand-alone. Es.:
AdoConnection.ConnectionString:= stringaconnessione;
adoquery.connection:= adoconnection;
adoquery.close;
adoquery.sql.text:= '......';
adoquery.open
...
..
..
adoquery.close;
Cosa devo settare precisamente da codice affinché non abbia problemi di
concorrenza o duplicazione?
Potresti mandarmi due righe d'esempio?
Grazie mille
Andrea

Potresti mandarmi due righe d'esempio?
Questa e' la tabella, notare che uso due campi persistenti e le proprieta'
impostate.
  object TabComposModuli: TADOTable
    Connection = DM1.ADOConnection1
    CursorLocation = clUseServer
    LockType = ltPessimistic
    TableDirect = True
    TableName = 'TabComposModuli'
    Left = 284
    Top = 2
    object TabComposModuliTIPOMODULO: TWideStringField
      FieldName = 'TIPOMODULO'
      Size = 5
    end
    object TabComposModuliMODULOCONT: TWideStringField
      FieldName = 'MODULOCONT'
      Size = 5
    end
  end
questo e' il codice per scrivere con lock sulla riga:
      TabComposModuli.Open;
      TabComposModuli.Append;
      TabComposModuliTIPOMODULO.Value := TabModuliSoftwareTIPOMODULO.AsString;
      TabComposModuliMODULOCONT.Value := frmVisualizzaDati.KeyValue;
      TabComposModuli.Post;
      TabComposModuli.Close;
Questa e' la connessione di riferimento, contenuta nel datamodule. Notare che
non aggiungo nessun parametro esteso del motore jet.
  object ADOConnection1: TADOConnection
    ConnectionString = 
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Sviluppo\delphi\' +
      'Assistenza\ASSISTENZA.mdb;Persist Security Info=False'
    LoginPrompt = False
    Mode = cmShareDenyNone
    Provider = 'Microsoft.Jet.OLEDB.4.0'
    Left = 88
    Top = 46
  end
Fammi sapere i tuoi risultati.
Ciao!


 le adotable.
Esattamente. Quindi per le select non ho problemi, diverso il discorso per
insert e update

Quindi alla fine, non devo preoccuparmi di nulla se setto adeguatamente le
adotable e le adoquery...
Mi sei stato davvero di aiuto, dovevo fare chiarezza su alcuni punti.
Grazie mille
Andrea