Visualizzazione dei risultati da 1 a 7 su 7

Discussione: sistema multiutente

  1. #1

    sistema multiutente

    ciao, vorrei se possibile da voi qualche consiglio per capire meglio come vi comportate nel caso in cui più utenti possano inserire, modifica, ecc dati nel database.

    es:
    per l'inserimento.....penso che anche voi usiate il contatore automatico che toglie un pò di problemi, nel senso che chi prima inseri il record codice id più basso avrà.

    per la modifica o cancellazione?
    io utilizzo un recordset forward only e quando un utente preme sul pulsante modifica record lo porto in un'altra pagina dove vede tutti i campi / valori per quel record. nel mentre che faccio questo passaggio, un'idea potrebbe essere quella di scrivere in un campo "Bloccato:SI". chiaramente quando effetturerà una modifica vera e propria dovrò valutare se il record è bloccato,scrivo un messaggio dicendo che cìè un untente che lo blocca, altrimenti lo modifico.



    cosa mi consigliate?
    grazie ciao

  2. #2
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Ma perchè tutta questa ... mentale?
    Qual'è il problema? Tutti i database supportano (seppur alcuni meglio di altri) la multiutenza in modifica, elimina ed inserimento dati...
    A S P : tutto il resto è noia...
    L I N U X : forse mi "converto"...

  3. #3
    se due persone accedono allo stesso dato può succedere che vogliano modificare quasi contemporaneamente il dato, percui si vedranno alla fine solo le modifiche apportate dall'ultimo utente che modifica il dato

    del tipo: A e B accedonono al dato X, se A modifica X e B modifica X dopo A, si vedranno solo le modifiche di B

    il contatore automatico sotto certi punti di vista è una scocciatura, perchè se ci devi fare un insert in + tabelle correlate, di sicuro devi fare una query per estrapolarti l'ultimo id inserito...io personalmente mi sono fatto una function che mi restituisce un id numerico univoco

    se la situazione di sopra non ti piace, allora setta un bloccato=si e prima dell'upodate controlli che non sia bloccato...resta cmq il problema perchè la situazione di sopra potrebbe cmq avvenire

    dipende da che ti serve...

  4. #4
    allora. database ACCESS!

    il discorso è che so che con il recordset con locktype pessimistic o ottimistic gestisce già il database il blocco, ma questo si avrebbe utilizzando il recordset e la sua modalità addnew.
    es:

    objrs("campo1") = "X"
    objrs("campo2") = "Y"
    objrs.update

    ma io ho delle stringhe sql della serie update tab set ecc, ecc,

    in questo caso su due utenti cercano di modificare lo stesso record cosa succede?




    per l'inserimento:

    anche io ho una funzione che mi torna l'ultimo id della tab e ci aggiungo uno.
    ma se uenteA preme su inserimento e riceve ID 11, e nello stesso tempo (prima dell0inser di A) anche B chiede di inserire, la funz da ID 11 anche a B (SELECT MAX +1). Poi A inserisce e B anche, in questo caso B si trova chiave duplicata (CI SONO DUE 11)


    come si fa?


    grazie

  5. #5
    infatti non ti ho detto che ho una funzione che mi restituisce l'ultimo id, ma una funzione che mi restituisce un id (numerico o testuale) univoco

    per quanto riguarda l'update...se due utenti cercano di fare l'update di uno stesso dato vince l'ultimo che finisce di fare l'update...

  6. #6
    ok, grazie. ma come hai fatto la funzione dell'indice univoco?

  7. #7
    per l'id numerico,

    compongo una stringa con 2 serie di 3 cifre generate con un random randomizzato 1 volta per terna di cifre....quindi controllo che questo id sia presente nel db...se è presente, rimando l'id alla funzione per darmi un nuovo id, altrimenti è univoco

    di probabilità di darne 2 uguali nello stesso tempo credo (non sono statista) siano vicine allo zero...

    codice:
    'funzione per creare un id univoco numerico nel database
    function CreaIDnum(tabella,connessione)
    dim num,id
    randomize
    num=int((999*rnd())+1)
    id=num
    randomize
    num=int((999*rnd())+1)
    id=id & num
    'apro la connessione
    'apro il recordset 
    query="select id from [" & tabella & "] where id=" & int(id) 
    if not recordset.eof then
    id=CreaIDnum(tabella,connessione)
    end if
    'chiudo recordset
    'chiudo connessione
    CreaIDnum=id
    end function

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.