none
Je recherche une solution sur: "Erreur 429 un composant ActiveX ne peut pas créer d'objet RRS feed

  • Question

  • Bonjour,

    Sur le forum Anglais, j'ai posé la question sans qu'une solution ne soit trouvée. Par le passé plusieurs programmeurs de la France m'ont aidés à trouver des solutions complexes, je me tourne donc vers vous pour ce qui est le module final du logiciel Auto-Caisse.

    Voilà, j'ai demandé à une compagnie (Mercury Payment System) de pouvoir intégrer un module de paiement par cartes de débit ou crédit, j'ai donc payé les droits requis et j'ai reçu tous les fichiers et périphériques requis pour l'intégration... du moins c'est ce que je pensais...

    Les exemples de code étaient en vb6 ou C# ce qui fait que j'ai dû modifier quelque peu le code pour pouvoir l'utiliser, quoiqu'il en soit, j'ai une erreur 429 un composant ActiveX ne peut pas créer d'objet lorsque je clique sur le bouton "btnProcessTransaction", lorsque je débogue, Access VBA m'amène sur la ligne suivante du code:

    req.TenderType = MSEnum.TenderTypes_CanadianEMV

    Voici le code complet:

    Private Sub btnProcessTransaction_Click()
    Dim dbs As DAO.Database
    Dim rs As DAO.Recordset
    Dim rst As DAO.Recordset
    Dim i As Variant
    Dim f As Integer
    Dim ms As New MercuryShield.MercuryShieldUI
    Dim req As New Transaction.Request
    Dim resp As New Transaction.Response
    Dim ret As Integer
    Set dbs = CurrentDb
    
    Set rs = CurrentDb.OpenRecordset("FactureMEVTemp2")
    Set rst = CurrentDb.OpenRecordset("FactureMEVTemp2 TOTAUX")
    
    
    req.TenderType = MSEnum.TenderTypes_CanadianEMV
    req.TransactionType = MSEnum.TransactionTypes_Sale
    req.AmountData.PurchaseAmount = 177.09
    req.MerchantID = "MPS53001"
    req.UserID = "Auto -Caisse"
    req.InvoiceNumber = "4"
    req.ReferenceNumber = "4"
    req.Memo = "TestMemo"
    req.CreditServers = "fe1.mercurydev.net"
    req.GiftServers = "g1.mercurydev.net"
    req.TerminalName = "TranSentryvb6"
    '
    'set the request object in the MercuryShieldUI object
    '
    Set ms.MercuryShieldRequest = req
    '
    'show the MercuryShieldUI
    '
    ret = ms.ShowDialog()
    'ret = 2 means user cancelled the MS UI dialog
    'ret = 1 means user hit the process button and the dialog closed
    Set resp = ms.MercuryShieldResponse
    '
    'do something with the resp object here
    'for example print resp.CmdStatus
    '
    ret = MsgBox("; CmdResponse = " & resp.CmdStatus, vbOKOnly, "; TranSentry; ")
    
            rs.Close
            Set rs = Nothing
            rst.Close
            Set rst = Nothing
            dbs.Close
            Set dbs = Nothing
    
    End Sub

    Les programmeurs US m'ont envoyés quelques réponses mais à date, l'erreur 429 est toujours là...

    Merci de votre aide

    Claude du Québec, Canada


    Claude Larocque

    samedi 28 juillet 2012 07:44

Réponses

  • Bonjour,

    Il semble évident que c'est le composant "MercuryShield.MercuryShieldUI" qui vous pose cette erreur.

    • Quel est-il ?
    • Est-ce un composant COM ? Si oui, l'avez-vous inscrit dans le Registre ou réinscrit ?


    Argy

    lundi 30 juillet 2012 09:02
    Modérateur

Toutes les réponses

  • Bonjour,

    Il semble évident que c'est le composant "MercuryShield.MercuryShieldUI" qui vous pose cette erreur.

    • Quel est-il ?
    • Est-ce un composant COM ? Si oui, l'avez-vous inscrit dans le Registre ou réinscrit ?


    Argy

    lundi 30 juillet 2012 09:02
    Modérateur
  • Bonjour, Claude, 

    Ciao, Jean-Philippe :o)

    Ton erreur "429 un composant ActiveX ne peut pas créer d'objet" évoque quelques souvenirs.

    1ère question : où/qui/quand/comment est créé ton objet MSenum ? (je suppose partie de MercuryShield ?) 

    2ème piste : j'ai déjà eu des problèmes de ce type avec 'Dim ... As New ...' -> essaye déjà de remplacer toutes tes déclarations par des 

    Dim ms As MercuryShield.MercuryShieldUI
    
        Set ms = New MercuryShield.MercuryShieldUI

    y compris, bien sûr et surtout, l'objet MSenum.

    Enfin, si tu as accès à la classe MSenum en question,mais je suppose qu'il s'agit d'une librairie en référence !, vérifie si elle est bien 'Creatable' ?

    Si ce n'est pas le cas, il doit y avoir une méthode pour créer cet objet. Par exemple, un classeur Excel peut être créé,

    - soit par un 'Set Wbk = New Excel.Workbook', qui marche parce que la classe Workbook EST creatable, pour nous, en VBA, 

    - soit par un Set Wbk = ExcelApplication.Workbooks.Add ..., qui ne donnera jamais l'erreur 429, parce que l'objet est créé en interne, DANS la méthode Add, pas dans ton code VBA.

    mercredi 8 août 2012 09:07