Nach Migration auf WinCC6SP4 kein Zugriff auf Userarchiv

S7_Mich

Level-2
Beiträge
214
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ihr seit meine letzte Hoffnung.

Bisher hatten wir das WinCC-Projekt auf einer Windows 2000 Maschine mit WinCC 5.1. Da nun XP installiert wurde, ist nun WinCC 6 SP4 im Einsatz. Das alte Projekt wurde mit dem Migrator auf den neuesten Stand gebracht. Es funktioniert alles, außer der Zugriff von einer Combobox auf das Userarchiv.

Im Detail sieht das so aus. Die Combobox wurde mit Visual Basic 5 erstellt und in WinCC verwendet. Diese Combobox wird normalerweise gefüllt mit Daten aus dem Userarchiv. Daten sind im Archiv auf jeden Fall vorhanden. Klickt man nun im Runtimemodus auf die Combobox hängt sich die Runtime auf.

Ich vermute, das XP das Problem nicht verursacht. Wahrscheinlicher ist mir, das mit diesem VB nicht mehr in dieser Art auf das Userarchiv zugegriffen werden kann.

Da ich ein absoluter Laie in Sachen VB bin, komme ich einfach nicht weiter. VB5 hatte ich nicht zur Hand. Ich habe den Quellcode mit VB6 geöffnet. Das klappte ohne Probleme. Wenn ich den Code jetzt ausführe, kommt ein Runtime Error: Method 'QueryArchive' of object 'IUsrAcv' failed.

Hier mal die Procedur DropDown:
Code:
Private Sub Combo1_DropDown()
'Call MsgBox("Hello")
    If Ambient.UserMode Then
        Set mcp = CreateObject("WinCC-Runtime-Project")
 
 
        If mcp Is Nothing Then Exit Sub
 
        'Set uarc = CreateObject("UsrAcv.UsrAcv.1")
        'Set arc = CreateObject("Archive.Archive.1")
        'Call setarc(uarc, arc)
        Call setarc
 
        uarc.QueryArchive Trim(m_Archive), arc
        arc.Open
 
        ' Suche Index der DisplayColumn
        On Error GoTo Fehler
        iDisplayColumn = 1
        found = 0
        While (iDisplayColumn < arc.Fields) And (arc.FieldName(iDisplayColumn) <> m_Column)
            iDisplayColumn = iDisplayColumn + 1
            found = 1
        Wend
 
        ' Suche Index der CheckColumn
        If (m_UseCheck) Then
            iCheckColumn = 1
            found = 0
            While (iCheckColumn < arc.Fields) And (arc.FieldName(iCheckColumn) <> m_CheckColumn)
                iCheckColumn = iCheckColumn + 1
                found = 1
            Wend
        End If
 
        ip = 1
        Combo1.Clear
 
        frei_set = 0
        While Not arc.EOF
            arc.Move (ip)
            If (m_UseCheck) Then
                ' Nur Werte <> Checkvalue eintragen
               If (arc.FieldValueString(iCheckColumn) <> m_CheckValue) Then
                    Combo1.AddItem arc.FieldValueString(iDisplayColumn)
               End If
 
            Else ' Alle Werte eintragen (EmptyValue ("frei") nur 1x)
               If (Trim(arc.FieldValueString(iDisplayColumn)) = Trim(m_EmptyValue)) Then
                    frei_set = 1
               Else
                    ' Normal hinzufügen
                    Combo1.AddItem arc.FieldValueString(iDisplayColumn)
               End If
            End If
            ip = ip + 1
        Wend
 
        'Call MsgBox("Hallo", vbOKOnly)
 
Fehler:
        arc.Close
 
        ' "frei" hinzufügen
        If (frei_set = 1) Then
            Combo1.AddItem m_EmptyValue
        End If
 
        index = 0
        For i = 0 To Combo1.ListCount - 1
            If Combo1.List(i) = m_Selected Then
                index = i
                Exit For
            End If
        Next i
 
        If (index > 0) Then
            Combo1.ListIndex = index
        End If
        'Call MsgBox(m_Selected, vbOKOnly)
 
        'Timer2.Enabled = True
 
    End If
 
End Sub

An dieser Stelle hängt sich das VB-Projekt sprich die ComboBox auf: uarc.QueryArchive Trim(m_Archive), arc

Vielleicht ist auch noch die vorherige Procedur interessant.

Code:
Private Sub setarc()
       On Error GoTo Fehler
        Set uarc = CreateObject("UsrAcv.UsrAcv.1")
        Set arc = CreateObject("UAArchive.UAArchive.1")
        Exit Sub
Fehler:
        Set uarc = CreateObject("UsrAcv.UsrAcv.1")
        Set arc = CreateObject("Archive.Archive.1")
End Sub

UserArchiv ist selbstverständlich im Anlauf dabei, also gestartet.

Habt ihr vielleicht dazu einen Rat. Wie gesagt, vorher mit Windows 2000 + WinCC 5.1 hats funktioniert. Nun mit XP und WinCC 6 SP4 ist die Funktion nicht mehr gegeben.

Gruß
Michael
 
Zuletzt bearbeitet:
Hallo nochmal,

hat hier jemand Erfahrung über VB an das UserArchiv zu kommen.

Meine Vermutung hat sich verstärkt, das man mit diesem Code so nicht mehr auf das Userarchiv zugreifen kann.

Als Referenz ist die Library CCUsrAcV 1.0 Type Library in dem Projekt.

Aus dem Code oben.

Set uarc=CreateObject ("UsrAcv.usrAcv.1")
Set arc=CreateObject("Archive.Archive.1")

Hier wird die Library instanziert.

uarc.QueryArchive Trim(m_Archive),arc
Hier sagt er dann, das es das nicht mehr gibt.

Gibts denn irgendwo eine Beschreibung von dieser CCUsrAcv 1.0 Type Library? Müßte es doch geben, sonst weiß man doch garnicht, wie man die verwenden kann, oder?

Gruß
Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo S7_mich!

Ich kenne mich mit WinCC5.1 nicht aus, habe jedoch WinCC6 SP4 mit den Anwenderarchiven im Einsatz.
Die Art und Weise, wie Du mit Visual Basic auf die Anwenderarchive zugreifst, ist mir gar nicht bekannt und im Handbuch finde ich dazu auch nichts.
Zwischen WinCC5.1 und WinCC6 gab es den Wechsel vom Sybase SQL Server zum Microsoft SQL Server.
Ich verwende 2 Möglichkeiten zum Zugreifen auf die Anwenderarchive:

* mit den WinCC C-API-Funktionen in meinen C-Skripten
* in VisualBasic-Script mittels ADO und den Microsoft OLE-DB-Treiber

Zu beiden Möglichkeiten könnte ich Dir Beispiele mailen.

Hier gibt es ein Beipiel für eine Combobox in WinCC6 mittels Visual Basic Script:
http://wincc.net

Im Siemens-Support gibt es einen Beitrag, wie man in C sich den Zugriff auf die Anwenderarchive vereinfachen kann:
http://support.automation.siemens.com/WW/view/de/2463816
 
Hallo,

vielen Dank für deine Antwort.

Die Seite wincc.net ist wirklich interessant.

Wenn du mir die Beispiele schicken könntest, dann wäre das echt genial.
Mit Anwenderarchive meinst du wohl das UserArchiv oder?

Das Problem ist, das Visu-Projekt wurde vor einigen Jahren mit Winnt erstellt.

Gruß
Michael
 
Zuletzt bearbeitet:
Zurück
Oben