25/10/2023 - zio3d ha scritto:
Per accedere alle tabelle collegate, basta avviare il database (anche .accde) con il tasto SHIFT premuto ed usare il riquadro di spostamento.
Io, con db accde, gestisco queste proprietà al primo avvio del front-end :
Application.CurrentDb.Properties("AllowFullMenus").Value = False
Application.CurrentDb.Properties("AllowToolBarChanges").Value = False
Application.CurrentDb.Properties("AllowBuiltInToolBars").Value = False
Application.CurrentDb.Properties("AllowSpecialKeys").Value = False
'
' gestione menù scelta rapida (DX mouse)
'
Application.CurrentDb.Properties("AllowShortCutMenus").Value = False
'
' permetti interruzione codice con ctrl+break : true/false
'Application.CurrentDb.Properties("AllowBreakIntoCode").Value = False
'
' permetti utilizzo tasto shift all'avvio : proprietà da creare
' Application.CurrentDb.Properties("AllowByPassKey").Value = true/false
Dummy = CreateChangeDbProperty("AllowByPassKey", False)
Application.CurrentDb.Properties.Refresh
'
' Non visualizza le icone nel taskbar
'
Application.SetOption "ShowWindowsInTaskbar", False
Dopo l'impostazione di queste proprietà è necessario riavviare l'applicazione. Non so quanto sia facile accedere al sorgente di Access (accde) e/o quanto sia ancora facile riuscire a riabilitare il tasto shitf … in tutti i casi accetto che sia fattibile (e magari sia anche facile). Nel caso qualcuno sappia come fare, per ovvi motivi, non lo scriva in questo forum.
25/10/2023 - zio3d ha scritto:
Se si ha accesso alle tabelle solo dopo il login in quanto solo lì verrà eseguito il codice per la memorizzazione della password, per esempio:
db.TableDefs("cliente").Connect = "ODBC;DSN=sql204153_1;UID=Sql204153;PWD=74wkxwph3c"
, si potrà accedere alle tabelle tra il login e la chiusura del database sempre dal riquadro di spostamento.
Io ho un form di login dove impostare utente/pwd, dopo creo la connessione alle tabelle tramite l'oggetto Tabledefs (non ho memorizzato la stringa di connessione completa di UID e PWD nel sorgente di Access). Utilizzando Access2013, io non ho trovato il modo di vedere la stringa di connessione completa (ovvero la stringa di connessione è presente ma senza UID e PWD) : non dubito che qualcuno riesca a trovare dove eventualmente UID e PWD siano salvati.
Ovviamente se riesco ad accedere al progetto Access e riesco ad avere la stringa di connessione posso collegare le tabelle (o trovarle già collegate) poi posso fare quello che mi viene permesso dal RDBMS.
25/10/2023 - zio3d ha scritto:
Anche se si gestisse il Granting column level permissions ("https://dev.mysql.com/doc/refman/8.0/en/grant.html#grant-column-privileges") in modo da avere i permessi della singola colonna (campo) assegnati per ogni utente per ogni tabella in modo che sia MySql a gestirli,
comunque si avranno dei problemi in quanto qualsiasi utente su Access potrà sì accedere solamente ai campi a lui permessi (sempre tramite le tabelle del riquadro di spostamento),
ma lo potrà fare in modo non controllabile: modifica diretta dei dati sul database senza nessuna possibilità di controllo dei dati inseriti tramite eventi appositi (per esempio before_insert, before_update, ecc.) e quindi neanche la possibilità di salvare il LOG delle modifiche “Chi fa cosa” attraverso l'ausilio di tali eventi.
Io non sarei così sicuro di quanto scrivi : esistono i trigger sulla modifica dei dati. Io gestisco nelle tabelle, a livello di record, sfruttando i trigger, user e data inserimento, user e data modifica. Certamente si possono implementare gestioni ancora più complesse, però sono gestioni da delegare a MySQL e non ad Access. Ribadisco : se accedi a MySQL tramite phpmyadmin puoi fare le stesse cose che fai con Access (direi anche di più) quindi il problema è il Client (Access/phpmyadmin/etc) oppure è l'insufficiente gestione delle permissions nel server (RDBMS)?
In merito al LOG di chi fa che cosa credo sia disponibile un modulo apposito di mySQL ma forse non è utilizzabile nella versione community ma solo in quelle enterprise.