Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-06-2006, 16:33   #1
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Blocco dei record

Stò cercando di bloccare la modifica dei record in un db access in multiutenza.

Il problema è che se 2 o più utenti accedono allo stesso record in modifica da errore. Vorrei sapere se c'è un modo per capire se un record è già bloccato in scrittura da un altro utente.

Vorrei ad esempio evitare che se l'utente A edita un record tutti gli a ltri utenti non possono editare lo stesso record fin quanto l'utente A non termina l'editing. Questo per evitare che più persono iniziano a fare modifiche sullo stesso record in contemporanea.

Spero che qualcuno possa darmi qualche buon consiglio.
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 10:10   #2
Stiwy.NET
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 611
Per prima cosa devi specificare il linguaggio di programmazione e quale database usi.
In asp, VB, VB.NET (per altri linguaggi non lo so, ma credo proprio di sì) ci sono delle variabili da passare al momento di apertura del record. in asp mi pare si dica Pessimistic. Però non ti blocca il record per tutto il tempo in cui l'utente ci mette per editarlo, ma solamente nel momento in cui si crea la stringa SQL per l'aggiornamento.

Supponiamo, invece, di voler bloccare un record finchè un utente è su una videata bisognerebbe studiare un sistema che al load vada a controllare se il record è libero. se lo è lo si blocca con un flag su quello stesso record. Sull'unload/closing della videata bisognerebbe mettere il codice di sblocco del record. Il problema è che se l'applicazione o pagina asp viene chiusa in modo non "corretto" il record resta bloccato.
Spero di esserti stato d'aiuto...
Altrimenti richiedi
Stiwy.NET è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 10:49   #3
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Quote:
Originariamente inviato da Stiwy.NET
Supponiamo, invece, di voler bloccare un record finchè un utente è su una videata bisognerebbe studiare un sistema che al load vada a controllare se il record è libero. se lo è lo si blocca con un flag su quello stesso record. Sull'unload/closing della videata bisognerebbe mettere il codice di sblocco del record. Il problema è che se l'applicazione o pagina asp viene chiusa in modo non "corretto" il record resta bloccato.
Spero di esserti stato d'aiuto...
Altrimenti richiedi
Ciao.

E proprio su questa parte che io penzavo di orientarmi in quanto risulta 'credo' l'unico metodo per mantenere bloccato un record fin quando l'utente non lo salva.

Però come giustamente stavi dicendo tù, il problema rimane quello che se il sistema andrebbe in tilt il record rimarrebbe bloccato per l'eternità.

Per bloccarlo avevo infatti adottato il metodo di utilizzare un flag nella tabella interessata alla modifica che una volta aperto il record metto ad esempio il valore 1 quando termino metto il valore 0.

Se un altro utente tenta di editare lo stesso record il cui valore risulta 1 viene visualizzato un msg per avvisarlo che il record non è momentaneamente disponibile.

Che 'strataggemma' si potrebbe adottare per evitare che il record rimanga bloccato in caso di chiusura anomala dell'applicazione???


PS. Per il linguaggio mi riferivo a VB6 e database access2003


Ciao...
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 11:03   #4
Stiwy.NET
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 611
VB6... quindi la cosa è un pò più facile che non in html (asp)...

Nella mia azienda per fare una cosa simile usano al posto del flag un varchar(50) dentro cui memorizzano l'id mac della macchina. In questo modo se chi stava lavorando su un record chiude malamente l'applicazione potrà tornarci dentro senza problemi,mentre chiunque altro non potrà farlo.

Un sistema per sbloccarle potrebbe essere fare un'applicazione che gira in modo autonomo (tipo operazioni pianificate) e che ad una determinata ora della notte azzera tutti i flag...
Stiwy.NET è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 12:11   #5
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Quote:
Originariamente inviato da Stiwy.NET
varchar(50) dentro cui memorizzano l'id mac della macchina
Questo fatto mi incuriosisce. Potresti magari spiegarmi un tantino in dettaglio come poter implementare la cosa.

Grazie
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 13:00   #6
Stiwy.NET
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 611
Codice:
Dim valore As New IPConfig.NetworkInfo

        GetMACAddress = valore.IndirizzoMAC
        If GetMACAddress Is Nothing Then
            GetMACAddress = ""
        End If
Questo è il codice scritto in VB.NET, non credo che funzioni anche per VB... kmq se è un programma con obbligo di identificazione (login e password - basta anche solo login) basta inserire il codice utente o il nickname (se univoco) ed il gioco è fatto.

EDIT: IpConfig è una classe che ho dentro il progetto... se vuoi te la mando, ma credo che a te basti usare il codice utente o nickname...

Ultima modifica di Stiwy.NET : 19-06-2006 alle 13:03.
Stiwy.NET è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 14:53   #7
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Il programma non è con oblico di login. Il login è opzionale in quanto potrebbe essere attivo oppure ci si può accedere anche senza login.

In quest'ultimo caso come farei???
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 10:41   #8
Stiwy.NET
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 611
Quote:
Originariamente inviato da Carmen
Il programma non è con oblico di login. Il login è opzionale in quanto potrebbe essere attivo oppure ci si può accedere anche senza login.

In quest'ultimo caso come farei???
mmhhh... questo è un problema...
potresti creare al primo avvio del programma una chiave univoca calcolata a random e che memorizzi da qualche parte (su un file di testo nella directory del programma, nelle chiavi di windows o...) a questo punto utilizzi questo valore univoco.
Stiwy.NET è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 10:59   #9
fabianoda
Senior Member
 
Iscritto dal: Oct 2002
Messaggi: 305
Mai sentito parlare di transazioni? E di dbms che le supportano?

Il sistema che proponete è sbagliato, infatti può fallire.
fabianoda è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 11:03   #10
Stiwy.NET
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 611
Quote:
Originariamente inviato da fabianoda
Mai sentito parlare di transazioni? E di dbms che le supportano?

Il sistema che proponete è sbagliato, infatti può fallire.
Ok... è vero...
Però devi anche esporre e spiegare la soluzione alternativa...
Stiwy.NET è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2006, 08:05   #11
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Sono d'accordo anchio. Qualche informazione più dettagliata sarebbe opportuna per capire meglio.
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2006, 08:56   #12
fabianoda
Senior Member
 
Iscritto dal: Oct 2002
Messaggi: 305
Le transazioni forniscono un modo per evitare l'accesso in contemporanea ad un record bloccato. Funzionano con le istruzioni COMMIT e ROLLBACK. Quando viene eseguita un'istruzione sql diversa dalla SELECT (quindi INSERT, UPDATE o DELETE) l'istruzione non è eseguita immediatamente, ma viene confermata quando viene eseguito il comando COMMIT. E' così possibile eseguire ad esempio

INSERT INTO utenti (user_name) VALUES ('Test');
INSERT INTO utenti (user_name) VALUES ('Test2');

seguiti dall'istruzione
COMMIT;

prima che qualsiasi altro utente possa vedere Test e Test2 (sono inserite "assieme", e visibili solo dopo la COMMIT).

La ROLLBACK serve invece per annullare le operazioni che non sono ancora state seguite da una COMMIT, ad esempio in caso di errore.

Per lo scopo che volete voi, una possibile soluzione è la seguente:

Quando entrate nella finestra fate:

UPDATE tabella SET valore = valore WHERE id_record = xxx;
dove xxx è il record che state modificando.
[NOTA: questa istruzione permette di bloccare altri utenti che vogliono modificare il record xxx]

Quando l'utente che ha avuto accesso modifica la riga e conferma, eseguite una:
UPDATE tabella SET valore = nuovovalore WHERE id_record = xxx;
COMMIT;

A questo punto se un altro utente cercava di modificare quel record, si vedrà sbloccare la finestra con la possibilità di modificare l'elemento.


Questa è la soluzione generica, ma dovrei sapere di più per dirvi dettagli ulteriori. Il problema è che Access non credo supporti le transazioni...
fabianoda è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2006, 10:33   #13
Stiwy.NET
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 611
Quote:
Originariamente inviato da fabianoda
Le transazioni forniscono un modo per evitare l'accesso in contemporanea ad un record bloccato. Funzionano con le istruzioni COMMIT e ROLLBACK. Quando viene eseguita un'istruzione sql diversa dalla SELECT (quindi INSERT, UPDATE o DELETE) l'istruzione non è eseguita immediatamente, ma viene confermata quando viene eseguito il comando COMMIT. E' così possibile eseguire ad esempio

INSERT INTO utenti (user_name) VALUES ('Test');
INSERT INTO utenti (user_name) VALUES ('Test2');

seguiti dall'istruzione
COMMIT;

prima che qualsiasi altro utente possa vedere Test e Test2 (sono inserite "assieme", e visibili solo dopo la COMMIT).

La ROLLBACK serve invece per annullare le operazioni che non sono ancora state seguite da una COMMIT, ad esempio in caso di errore.

Per lo scopo che volete voi, una possibile soluzione è la seguente:

Quando entrate nella finestra fate:

UPDATE tabella SET valore = valore WHERE id_record = xxx;
dove xxx è il record che state modificando.
[NOTA: questa istruzione permette di bloccare altri utenti che vogliono modificare il record xxx]

Quando l'utente che ha avuto accesso modifica la riga e conferma, eseguite una:
UPDATE tabella SET valore = nuovovalore WHERE id_record = xxx;
COMMIT;

A questo punto se un altro utente cercava di modificare quel record, si vedrà sbloccare la finestra con la possibilità di modificare l'elemento.


Questa è la soluzione generica, ma dovrei sapere di più per dirvi dettagli ulteriori. Il problema è che Access non credo supporti le transazioni...
TNX
Stiwy.NET è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2006, 20:25   #14
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
La cosa sembra molto interessante. Pero come dicevi giustamente tù, come si fà per un'applicazione fatta già in access????
Carmen è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
JBL Tune Beam 2 a 59€ (invece di 99€): a...
Pioggia di sconti con Engwe: e-bike con ...
HONOR Pad 20 e Pad 20 Pro: due tablet pe...
La difesa secondo Thales: arriva HexaFor...
Lo stile di Corsair, la qualità p...
Su Amazon 2 MacBook Pro con chip M5 Pro,...
Amazon Music Unlimited gratis fino a 4 m...
Samsung Galaxy Watch8 Classic a 299€ e G...
CMF Headphone Pro a 69€: sono delle eleg...
GoPro nel Micro Four Thirds con un innes...
Razer presenta Tartarus V2 Pro: la nuova...
VPN e DNS nel mirino: la proposta che vu...
Porsche ci riesce: batterie 'rinate' dal...
Xiaomi Redmi Note 17 Series ora su Amazo...
La filigrana che dovrebbe rendere sicuri...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:09.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v