Newsgroup: it.comp.appl.access
Titolo: impedire l'accesso alle tabelle (per smaliziati)

ho un db con le tabelle soltanto e un db con le maschere e il resto
il db con le tabelle č protetto da password e quindi tutto č ok.
il fatto č che nel db maschere ci sono i collegamenti alle tabelle per poter
lavorarci.
l'utente che usa il runtime di access non puň modificare i dati direttamente
nelle tabelle antrandoci dai collegamenti
ma se l'utente copia il tutto in un pc con access potrebbe in teoria aprire
il db parte maschere e tramite i collegamenti variare alcuni valori delle
tabelle.
per imčpedire questo c'č un modo di definire da codice vba un tal
collegamento ad una tabella in modo che esista solo mentre uso certe
maschere e poi sparisca quando le chiudo?
in questo modo impedirei ogni accesso ai dati se non direttamente dalle
form.
attendo vostre notizie, grazie tutti.

 attendo vostre notizie, grazie tutti.
Tanto per cominciare: hai risolto o no la faccenda dell'errore su apertura
Form su Win 'XP?
Ciao.

 Ciao.
si scusate, utilizzavo un controllo mscomm.ocx che in quel winxp non so
perchè non c'era mentre ora ce lo messo e tutto è ok.

 maschere e poi sparisca quando le chiudo?
Puoi creare al volo la tabella collegata su apertura maschera (mai provato
ma dovrebbe andare).
Ma forse la soluzione pił semplice č proteggere l'apertura del FE dalla
pressione del tasto shitft: nessun utente finale la bypasserą.
Saluti.

Saluti.
Non credo, visto  che esiste la possibilità di disattivare il tasto shift,
se per esempio uno conosce il sito comunque può scaricarsi l'esempio di come
riattivarer il tasto shift.
hai un esempio di come creare il kink al volo e poi eliminarlo all'uscita
della maschera?
fammi sapere.

 fammi sapere.
Mi accorgo solo ora di un fatto: hai messo nel subject un rafforzativo ("per
smaliziati") ... a mio parere è peggio che postare prima del quoting.
Comunque, puoi creare e distruggere tabelle collegate su apertura/chiusura
Form come segue _vado a spanne ma dovrebbe andare_:
[Su apertura]:
  Dim db As Database, Tdf As TableDef
  Dim NomeTab As String
  Set db = CurrentDb
  NomeTab = "TblPincoPallino"
  Set Tdf = db.CreateTableDef(NomeTab)
  Tdf.Connect = ";database=" & PercorsoBaseDati
  Tdf.SourceTableName = NomeTab
  db.TableDefs.Append Tdf
  Me.RecordSource = NomeTab
  Set Tdf=nothing
  Set Db=nothing
[Su chiusura]:
CurrentDb.TableDefs.Delete "TblPincoPallino"
Evidentemente puoi facilmente rendere globali le suddette routines.
<PercorsoBaseDati> potrebbe essere una var. globale contenente il percorso
del Back-End caricata su avvio applicazione.
Tuttavia ci penserei bene prima di lavorare in tal modo:
1) Dovrai collegare/distruggere molte tabelle su apertura della maggioranza
delle Forms (Combo, ListBox, SubForms necessitano di origine Dati) e dei
Reports (SubReports).
2) Dovrai sempre creare codice SQL dinamico: niente Query "salvate".
Saluti.

 form.
L'unico metodo per realizzare una protezione efficace è quello
di utilizzare la protezione a livello Utente in qui si gestiscono
gli utenti e i loro permissivi relativamente alla possibilità di 
accedere agli oggetti del Database.
Vedi l'articolo sul SitoComune nella sezione General.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 form.
Non complicarti tropo la vita, ora ti insegno un trucco che e' un
barbatrucco (me l'ha insegnato barbapapa')
Le maschere non sono altro che barattoli dentro i quali butti dentro i
record su cui vuoi lavorare.
Solitamente tu definisci la proprieta' recordsource inserendo il nome di una
tabella/query o un'istruzione sql.
Ma questo non e' il solo modo di "riempire il barattolo"
D'altro canto ma maschera non fa altro che gestire un recordset, quindi puoi
direttamente passare alla maschera il recordset su cui lavorare senza
bisogno di definire la proprieta' recordsource e senza bisogno che la
tabllella che ti interessa sia collegata.
Private Sub Form_Open(Cancel As Integer)
Dim rs As Recordset
Dim db As Database
Set db = OpenDatabase("C:\TuoPercorso\Tuo_be.mdb")
Set rs = Me.Recordset
Set rs = db.OpenRecordset("TuaTabellaOIstruzioneSQL", dbOpenDynaset)
Set Me.Recordset = rs
End Sub
Alla ciusura della maschera chiudi tutto.
Sib

 Sib
Io capisco che parli di Barbapapà e quindi non
mi permetto certi commenti, ma la 5° riga proprio
me la devi spiegare....!!
Set rs = Me.Recordset
Se non lo sai tu chiedilo a Barbapapà, ma proprio
VOGLIO saperlo.


 VOGLIO saperlo.
Infatti quella č stata barbamamma che ci ha messo la sua!
Non c'entra niente, e' un pezzo di riga che ho dimenticato di eliminare.
Sib

 Sib
Vedo con piacere che hai abbandonato A97 con tutti questi giochini...!
Ciao.
Buon Ferragosto.


 End Sub
Attenzione: Arold non ha specificato la versione di Access, il codice che
riporti funziona solo con A>'97...
Ciao.

 @Alex.
Sib

 Ciao.
 io ho access XP quindi tutto OK grazie.

  io ho access XP quindi tutto OK grazie.
Beh, comunque il metodo suggerito da Sib (visto che tu non stai usando .ADP)
è utilizzabile con maschere e relativi oggetti, ma non con la
reportistica...
Saluti.

 smaliziati") ... a mio parere è peggio che postare prima del quoting.
anche perche' uno "smaliziato" ci mette 1 minuto  a cambiargli la
password del db protetto.
cmq. Sono decisamente in accordo con te per il subject insulso.
--
a.cara
togli qualcosa dall'email

 reportistica...
in quel caso gli tocca lavorare un po' da codice.
Sib

 ha scritto nel messaggio

Vero, ma perche' porre limiti alla provvidenza? ;-)
Se fosse stato quello il caso se lo sarebbe dovuto lavorare da codice il
recordset tenendo tutti i controlli scollegati.
Sib

 ha scritto nel messaggio
news:3F3BFF9D...@blunet.it...

si è come fa a cambiare la password uno smaliziato?

 recordset tenendo tutti i controlli scollegati.
La cosa è interessante, ma non ti seguo...
Fammi capire: in che senso lavorare da codice tenendo i controlli
scollegati?
Ciao.


a me lo chiedi? mica sono "smaliziato"
86FBEC375D449CFAC65E28E613B68A6054947B36
--
a.cara 
Togli qualcosa dall'email

 ha scritto nel messaggio

Cioe': controlli non collegati valorizzati da codice all'apertura sul primo
record e con pulsanti di spostamento che in effetti non facciano altro che
leggere il record successivo (o precedente) dalla variabile rs dichiarata e
aperta nell'evento su aperture e rivalorizzare i controlli.
Modifiche e aggiunte fatte allo stesso modo.
Sembra difficile ma non lo e', se i controlli hanno lo stesso nome dei campi
basta un ciclo for per leggerli/valorizzarli tutti.
Sib

 basta un ciclo for per leggerli/valorizzarli tutti.
E' una buona idea, però a questo punto ha un grado di complessità ancora
superiore alla creazione/distruzione di tabelle collegate...
Ma poi forse la soluzione più lineare è ricorrere alla protezione utente
come suggeriva Alessandro.
Saluti.

 ha scritto nel messaggio

Io sono d'accordo con te, infatti e' quello che ho sempre fatto.
Comunque non e' poi cosi' difficile se ci pensi un attimo, tanto piu' che e'
perfino possibile creare un codice generico da "schiaffare" in tutte le
maschere brutalmente, quindi la difficolta' riguarda solo la prima maschera.
Sib

 Sib
sib mi fai un esempi di come creare dei link al volo su parture di una
maschera e poi distruggerlo all'uscita delle maschera stessa?
supponendo che la maschera PIPPO sia associata alla tabella PLUTO come
faresti senza che esiste un link alla tabella fisica reale presente nel back
end?
Grazie in anticipo.

 maschere brutalmente, quindi la difficolta' riguarda solo la prima
maschera.
E' vero, ma la cosa mi pare più problematica con Reportistica e
sottoreportistica.
Ciao.

 ha scritto nel messaggio

sono d'accordo, qui si deve andare a gestire le righe report record per
record, il metodo e' piuù o meno quello che utilizzo per formattare un
numero di righe costante per pagina (
www.sitocomune.com
 non la faq di
federico ma la mia).
Sib