Problème VBA dans RSVIEW

pitipilot Messages postés 112 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 14 mai 2021 - 13 mai 2011 à 09:51
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 13 mai 2011 à 11:02
Bonjour je suis actuellement en train de développer une application via RSVIEW SE (logiciel de supervision des systemes automatisés). Ce logiciel permet d'associer un code VBA à des objets.

Private Sub Button10_Released()
Dim sParametre, sNum_OF As String

Dim oGroup As TagGroup

Dim oTag As Tag
Dim vValue As Variant
Dim sMa_Chaine As String
    
Dim Value As Variant
Dim TimeStamp As Date
Dim Quality As tagQualityConstants
Dim SubStatus As tagSubStatusConstants
Dim Limit As tagLimitConstants
Dim sMessage, sNom_Appli As String

Dim Date_Jour As String
Dim Heure_Jour As String


Date_Jour = Date
Heure_Jour = Time


' Permet de récupérer le parametre envoyé a l'écran générique ex: B76\G88000\VANNES\VP08185
sParametre = Me.Parent.ActiveDisplay.TagParameters.Item(1)

'MsgBox "Parametre =" & sParametre, vbInformation
    
    On Error Resume Next

    Err.Clear

'Acces a la base de donnée
    If oGroup Is Nothing Then
        Set oGroup = Application.CreateTagGroup(Me.AreaName, 500)

            If Err.Number Then
            LogDiagnosticsMessage "Error creating TagGroup. Error: " & Err.Description, ftDiagSeverityError
            Exit Sub
     End If

        'Attention recuperer le Numero OF
                    sNum_OF = Mid(sParametre, 1, 11) & "NUM_LOT\NUM_OF"
                    oGroup.Add sNum_OF
                       
                    oGroup.Active = True

    End If
    
    If Not oGroup Is Nothing Then

           
        'Lecture du Numero OF
        Set oTag = oGroup.Item(1)
         Err.Clear
        
        oTag.GetTagData vValue, TimeStamp, Quality, SubStatus, Limit, True

        'On recupére le Num OF en chaine
        sMa_Chaine = CStr(vValue)
        
      


'Envoie d'un message


sMon_Message = "AUDITTRAIL, date= " & Date_Jour & " ,heure= " & Heure_Jour & " ,message num lot = " & vValue & " & sParametre)"

Me.Application.LogDiagnosticsMessage (sMon_Message)
      
      
    
    ' Gestion Erreur
     Select Case Err.Number


            Case tagErrorReadValue:

                MsgBox "Error to reading tag value. Error: " & oTag.LastErrorString

        
            Case tagErrorOperationFailed:

                MsgBox "Failed to read from tag. Error: " & Err.Description

        End Select

        

    End If

    oGroup.RemoveAll
    
End Sub




La ligne en rouge pose problème, j'obtiens ce message d'erreur : "Runtime error 5 Invalid procedure call or argument".

Bonne journée.

2 réponses

pitipilot Messages postés 112 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 14 mai 2021 1
13 mai 2011 à 09:51
Désolé ce n'est pas la ligne en rouge qui pose problème mais celle ci :

sParametre = Me.Parent.ActiveDisplay.TagParameters.Item(1)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 mai 2011 à 11:02
Salut

VBA n'est que le langage associé aux logiciels de Office et à certaines applications professionnelles comme RsView.
RsView possède des déclarations d'objet propres à son environnement et nous ne les connaissons pas.
Impossible donc de te dire où est le problème.

Pour une erreur du type "Invalid procedure call or argument", il faut se poser les questions suivantes :
Me est-il reconnu ? (il peut ne pas l'être dans un module par exemple)
Me possède t-il un Parent ?
Le Parent possède t-il une propriété ActiveDisplay ?
ActiveDisplay possède t-il une collection TagParameters ?
Existe t-il un Item d'index 1 dans la collection TagParameters ?
TagParameters.Item(1) est-il sensé renvoyer un String ?

Tu trouveras l'arborescence de tous ces objets et la définition de leurs paramètres dans l'explorateur d'objets = touche F2

Pour info :
Dim sParametre, sNum_OF As String
ne veut pas dire que sParametre et sNum_OF seront de type String.
Seul sNum_OF le sera.
sParametre sera de type Variant
Pour une déclaration propre, il faut répéter le type de chaque variable
Dim sParametre As String, sNum_OF As String

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous