Résultats de 1 à 9 sur 9

Sujet : Enregistrement successifs dasn Access VB

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

    Enregistrement successifs dasn Access VB

    Salut.

    Mon application permet de traiter et d\'enregistrer des informations issues d\'une feuille excel dans une base de données Access. Pour plus de confort pour l\'utilisateur, j\'aimerai lui donner le choix de fermer l\'apllication ou d\'effectuer un nouvel enregistrement. Seulement voilà, le deuxième ichier ne s\'enregistre pas. Pourtant, je ferme Excel, le recordset et la connexion, que je réouvre de nouveau pour le fichier Excel suivant

    Pourquoi celà ne marche-t-il pas?

    Code du bouton de sauvegarde :

    \'MsgBox \"Connection opened :\" & connectionOpened

    CmdSave.Enabled = False
    Set connection = New ADODB.connection
    connection.ConnectionString = \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\CTI.mdb;Persist Security Info=False\"
    connection.Open

    Set Recordset = New ADODB.Recordset
    Recordset.CursorType = adOpenKeyset
    Recordset.LockType = adLockOptimistic
    Recordset.Open \"CTIDailySummary\", connection, , , adCmdTable

    MsgBox \"Connexion réussie avec la base de données. Enregistrement en cours\"
    connectionOpened = True

    Do While excelApplication.Cells(ligne, 1) & excelApplication.Cells(ligne, 2) & excelApplication.Cells(ligne, 3) & excelApplication.Cells(ligne, 4) & excelApplication.Cells(ligne, 5) <> \"\"

    Recordset.AddNew
    Recordset!NOPID = excelApplication.Cells(ligne, 1)
    Recordset!Product = excelApplication.Cells(ligne, 2)
    Recordset!trafficDate = excelApplication.Cells(ligne, 3)
    Recordset!Duration = excelApplication.Cells(ligne, 4)
    Recordset.Update
    booRecordAdded = True




    ligne = ligne + 1
    Loop

    \'MsgBox \"Enregisrtement terminé\"
    \'CmdSave.Enabled = False


    \'Libération de l\'objet Excel.Application

    excelApplication.Application.Quit
    Set excelApplication = Nothing
    excelFileOpened = False

    \'Libération de la connexion

    Recordset.Close
    connection.Close
    Set Recordset = Nothing
    Set connection = Nothing
    connectionOpened = False

    Form4.Visible = True

    \'Affichage des bouttons nouvel enregistrement et précédent

    CmdBack.Visible = True
    CmdNextSave.Visible = False
    CmdBack.Enabled = False
    CmdNextSave.Enabled = False
    CmdExit.Enabled = False
    Combo1.Enabled = False


    End Sub

    Merci d\'avance! :!: :!:
    Mangekyo Sharingan!

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    2 538
    Salut,

    heum heum !! c\'est bizarre as tu un message d\'erreur ? essaie de verifier si le pb viens de Access ou de Excel.

    Quand tu parle de fichier, tu entend bien enregistrement dans ta base de donnée ?
    Admin retraité du site MoteurProg.Com" la meilleur façon de remercier est de pouvoir aider les autres à son tour !! "http://www.moteurprog.com

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    245
    Bonjour,
    Pourquoi est ce que vous avez utilisez cette maniére de faire
    [Do While excelApplication.Cells(ligne, 1) & excelApplication.Cells(ligne, 2) & excelApplication.Cells(ligne, 3) & excelApplication.Cells(ligne, 4) & excelApplication.Cells(ligne, 5) <> \"\"
    ]
    déclarez des variables pour recupérer la valeur de chaque cellule; le probléme pourait venir de là
    :wink:
    La réussite est au bout de l'effort

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    14
    Pour xidma :

    J\'utilise cette condition pour arrêter le parcourt des lignes du fichier Excel à la première ligne vide.

    Pour admin :

    Aucun msg d\'erreurs. J\'ai mis un msgbox qui se déclenche si l\'enregistrement s\'est bien déroulé, et il sort à chaque fois, et presque immédiatement pour le deuxième essai.

    Un fichier est un fichier Excel dont je vais enregistrer les données sur Access après traitement.

    Si je ferme l\'application, l\'enregistrement suivant ne pose plus problème; il me faut donc fermer à chaque enregistrement de fichier Excel.

    J\'utilise un temporisateur quand je ferme la connexion et quand je libère la référence au fichier Excel, car Excel et Access tardent à se fermer.
    Mangekyo Sharingan!

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    14
    Salut.

    Je me suis rappelé un truc. Mon encadrant m\'a dit que peut être quand je lance le deuxième enregistrement, il commence à la première ligne de la table. Comment faire pour dire au pointeur de pointer la dernière ligne.

    Autre chose, quand je termine un enregistrement, je ferme le recordSet et la connection. Est-ce la bonne chose à faire :?:
    Mangekyo Sharingan!

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    245
    Bonjour,
    je vous avez demander pourquoi vous utilisez cette maniére de faire :
    excelApplication.Cells(ligne, 1) & excelApplication.Cells(ligne, 2) & excelApplication.Cells(ligne, 3) & excelApplication.Cells(ligne, 4) & excelApplication.Cells(ligne, 5) <> \"\"
    parce que vous pouvez avoir des Beugs qui sont difficilement décelable avec cette méthode.

    Pour répondre à votre question: il faut mettre
    recordset.Movelast avant recordset.AddNew

    Quand vous déclarez vos variables n\'utiliser pas des noms des d\'Objet RECORDSET est un nom d\'Objet de ADODB. Il peut là aussi créer une ambiguité occasionnant un Beug
    Merçi :
    La réussite est au bout de l'effort

  7. #7
    Membre MP
    Inscrit
    août 2013
    Messages
    14
    Salut.

    Ok, c\'est ce que je vais utiliser.

    Mais, je ne comprend pas très bien le dernier conseil : tu parle de nom tel que \"connectionEnregistrement\" et \"recordSetEnregistrement\" :?:
    Mangekyo Sharingan!

  8. #8
    Membre MP
    Inscrit
    août 2013
    Messages
    245
    Bonjour,
    Pour être plus explicite, quand vous déclarez une variable de type Recordset au lieu de prendre textuellement comme non de variable Recordset, mettez par exemple rsProduit si c\'est une table produit ou tout autre nom sauf le nom RECORDSET, vous m\'avez compris maintenant :?:
    La réussite est au bout de l'effort

  9. #9
    Visiteur MP
    Visiteur MP
    Salut.

    C\'est noté, même si ça ne devrai pas poser de pbs si on fait attention. J\'utilise un format de déclaration de variables :

    une variable commence avec une miniscule et à chaque début de terme je met une majiscule. Pour les fonction, idem, et donc je me retrouve facilement avec des nom significatifs.

    Merci pour tous vos conseils.

    Salut.

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é