Résultats de 1 à 4 sur 4

Sujet : Problème uptdate dans application multi

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    4

    Problème uptdate dans application multi

    Bonjour à tous,

    Je développe présentement une application dans laquelle plusieurs personnes attaquent la même base de données Access, même table, j\'aimerais savoir comment faire pour qu\'il n\'y ai pas de problème dans mes enregistrements lorsque deux personnes insèrent leurs données dans la base en mêmme temps.

    Je sais qu\'il faut utiliser le lock mais comment???

    Merci de votre aide, je suis débutante, toute aide me serai très utile ops:

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    salut Kat40

    Donne nous ton code pour que nous puissions l\'etudier.

    Sagit t il bien d\'un problème de concurence ?

    a bientôt :wink:

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    4
    Voici mon code:

    \'********************************************
    \' Définition de la fonction bouton ACCEPTER *
    \'********************************************
    Private Sub cmdAccepter_Click()
    Dim cnx As New ADODB.Connection
    adoDepannage.CursorType = adOpenDynamic
    adoDepannage.LockType = adLockPessimistic
    Dim chemin As String
    chemin = chercherChemin
    cnx.ConnectionString = \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\" & chemin & \";Persist Security Info=False\"
    cnx.Open
    cnx.BeginTrans
    Dim calcul2 As Double
    vide = False
    VerifierChampVide
    If vide = False Then
    If ajouter = True Then
    If MsgBox(\"Voulez-vous enregister les nouvelles données pour la demande de dépannage?\", vbYesNo, \"Ajouter... ?\&quot = vbYes Then
    If TestExcel() = True Then
    \'On Error GoTo erreur
    ModifierNumero
    CalculerSoldeRestant
    calcul2 = CalculRequete + Val(txtMontant.Text)
    If calcul2 > 4000 Then
    calcul2 = calcul2 - Val(txtMontant.Text)
    MsgBox \" SOLDE INSUFFISANT\" & vbNewLine & \"Vous en dépassez la limite de 4000$\"
    cmdAnnuler_Click
    Exit Sub
    End If
    txtNumeroSequentiel.Text = txtNum.Text
    txtNumero.Text = cboCle.Text + \"-\" + txtNumeroSequentiel.Text
    txtDepot.Text = \"---\"
    txtDateReception.Text = \"----/--/--\"
    txtType.Text = \"aucun\"
    txtEncaisse.Text = \"N\"
    txtRembourse.Text = \"N\"
    txtAs107.Text = \"N\"
    txtMontantCheque.Text = \"0.00\"
    test = recevoirDonnees(cboRaison.Text, txtCp12.Text, txtDate.Text, txtMontant.Text, txtNom.Text, txtPrenom.Text, txtNumero.Text, txtNomAutorise.Text, txtPrenomAutorise.Text, txtNomDemande.Text, txtPrenomDemande.Text)
    adoDepannage.Recordset.Update
    cnx.CommitTrans
    cboCle.Enabled = False
    cboRaison.Enabled = False
    txtCp12.Enabled = False
    txtDate.Enabled = False
    txtMontant.Enabled = False
    txtNom.Enabled = False
    txtPrenom.Enabled = False
    txtNumeroSequentiel.Enabled = False
    txtNomAutorise.Enabled = False
    txtPrenomAutorise.Enabled = False
    txtNomDemande.Enabled = False
    txtPrenomDemande.Enabled = False
    adoDepannage.Recordset.Resync
    adoDepannage.Recordset.Requery
    adoDepannage.Refresh
    \' frmAS107.Show
    \' frmAS107.SetFocus
    \' Unload frmAS107
    MsgBox \"Voter formulaire de demande de dépannage est en cours d\'impression\", vbInformation
    ajouter = False
    Unload Me
    \' Exit Sub
    Else
    MsgBox \"Impossible de créer le formulaire AS107 inexistant\" + vbNewLine + \"Le chemin est invalide.\" + vbNewLine + \"Pour en changer le chemin, allez dans OUTILS --> Parcourir(choisir le chemin de la feuille) -- > Appliquer\" + vbNewLine + vbNewLine + vbNewLine + \" DEMANDE DE DÉPANNAGE ANNULÉE\", vbCritical, \"Erreur\"
    adoDepannage.Refresh
    If adoDepannage.Recordset.RecordCount > 0 Then adoDepannage.Recordset.CancelUpdate
    cnx.RollbackTrans
    cmdAnnuler2.Enabled = False
    cmdAccepter.Enabled = False
    cmdAjouter.Enabled = True
    adoDepannage.Refresh
    adoDepannage.Enabled = True
    cboCle.Enabled = False
    cboRaison.Enabled = False
    txtCp12.Enabled = False
    txtDate.Enabled = False
    txtMontant.Enabled = False
    txtNom.Enabled = False
    txtPrenom.Enabled = False
    txtNumeroSequentiel.Enabled = False
    txtNomAutorise.Enabled = False
    txtPrenomAutorise.Enabled = False
    txtNomDemande.Enabled = False
    txtPrenomDemande.Enabled = False
    cmdAjouter.SetFocus
    adoDepannage.Recordset.Resync
    adoDepannage.Recordset.Requery
    ajouter = False
    End If
    ajouter = False
    cmdAnnuler_Click
    End If
    End If
    End If
    Exit Sub
    \'erreur:
    \' MsgBox \"Votre demande de dépannage à généré une erreur, veuillez recréer votre demande\" + vbNewLine + \"Cause possible : Deux utilisateurs utilisent le programme en même temps\"
    \' Unload Me

    Merci de m\'aider

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    Je voie a ton code qu\'il y a plusieurs options apres l\'ouverture de la connexion.

    Si tu ne veux pas que plusieurs utilisateurs entre en concurence durant tes modification, je pense que tu peux jouer sur le mode d\'ouverture de ta base :

    There are three ways to control how a database is opened in Access:
    When you start Access, you can include a database name on the command line and either the /Excl or /Ro parameter to open the database in exclusive or read*only mode, respectively.

    You can select or clear the Exclusive check box when using the Open dialog box (File menu). To open a database as read*only, select the database in the Open dialog box, click Commands and Settings, and then click Open Read*Only.

    You can change the default database open mode by changing the Default Open Mode setting on the Advanced tab in the Options dialog box (Tools menu). This setting can be either Exclusive for single*user access or Shared for multiuser access to the database.
    vue sur msdn :

    Using Locking Options

    To provide concurrent access to records by multiple users, Access locks records. Unlike some database applications, Access does not lock individual records; instead it locks a 2 KB (2,048 bytes) page of records. The advantage of page locking is that there is less overhead and generally better performance over true record locking when performing operations that affect many records. Unfortunately, this also means that Access usually locks more records than you would like. This is especially an issue when you use pessimistic locking, which allows users to keep records locked for long periods of time. For information about pessimistic locking, see \"Edited Record\" later in this chapter.
    Ces deux citations sont issues de : C H A P T E R 29 Part 5 Using Microsoft Office Throughout Your Organization Microsoft Office Resource Kit

    Je sais que tu n\'utilise pas une base Acces mais ces info (si tu dispose de msdn) devrai te mettre sur la voie.

    Donne des nouvelles
    :wink:

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé