Je recherche une solution sur: "Erreur 429 un composant ActiveX ne peut pas créer d'objet
-
samedi 28 juillet 2012 07:44
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 SubLes 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
Toutes les réponses
-
lundi 30 juillet 2012 09:02Modérateur
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
- Marqué comme réponse Claude Larocque mardi 14 août 2012 19:31
-
mercredi 8 août 2012 09:07
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.MercuryShieldUIy 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.

