# WinCC V6.2.2 User Archive



## leo (19 September 2008)

Hallo,
kann man auf die User Archive tatsächlich nur über C-Script zugreifen, oder geht das auch über VB-Script? Mein Problem: VB Kenntnisse HUI, C Kenntnisse Pfui.
Leo


----------



## Spier (23 September 2008)

Hey, du kannst das User Archive über ein im Bild eingefügtes User Archiv Control ansprechen. Weiß zwar nicht genau, aber dieses Control dürfte ja auch nix anderes sein als ein ActiveX- Control. Also müsste das auch rein über ein Script ansprechbar sein. Aber das erste wird wohl einfacher sein.

Gruß Spier


----------



## leo (23 September 2008)

Ja, das geht, ich muß aber etliche Funktionen hinterlegen (Eintrag direkt aus Comboboxen etc.). Dazu muß man mit EAFeldern arbeiten, die dann auf das Userarchiv zugreifen.Das Handling der EAFelder klappt mit VB recht gut aber das Schreiben ins Archiv scheint nur mit "C" zu gehen.


----------



## Spier (24 September 2008)

Also unter C kann ich, neben den C-Funktionen, das Control direkt mit den Befehlen bearbeiten:

SetPropChar("NameBild.pdl","Control1","PressTBButton","New");//Neuer Eintrag

SetPropChar("NameBild.pdl","Control1","PressTBButton","Edit");//Eintrag editieren

SetPropChar("NameBild.pdl","Control1","PressTBButton","ReadVar");//in Archiv schreiben

SetPropChar("NameBild.pdl","Control1","PressTBButton","WriteVar");//aus Archiv lesen

Hab mal kurz probiert, also damit kannst du auf das Control zugreifen und dann über PressTBButton das Archiv bearbeiten (wobei ich aber nicht alle Befehle für PressTBButton kenne, nur oben die)


```
Sub OnClick(ByVal Item) 
Dim objControl
Set objControl = ScreenItems("Control1") 'Also Control des User Archivs
objControl.PressTBButton = "*" 'Befehl wie Edit
End Sub
```
Es gibt aber noch die Möglichkeit, das User Archiv über Steuervariablen anzusprechen. Ein Beispiel findest du in der WinCC Hilfe unter "Steuervariablen , Beispiel".

Ich könnte dir auch ein paar Beispiele in C zusenden.


----------



## marlob (24 September 2008)

Hier mal ein paar C-Scripte zum schreiben vom
UA  -> PLC
UA  -> UA
PLC -> UA

Die sind aus irgendeinem Siemens-Beispielprojekt kopiert


----------



## leo (26 September 2008)

Hallo Spier und Marlob,
danke für die Scripts. Bin gerade vom AD zurück und habe Rücken . Werde am Montag mal reinschnuppern.

Schönes Wochenende,
Leo


----------



## leo (13 Oktober 2008)

Hallo,
bin jetzt soweit das Userarchiv auszulesen, aber das Zurückschreiben will einfach nicht klappen. Ich habe mal das aufs nötigste abgespeckte Script angehängt. Weiß jemand was ich falsch mache?
Gruß, Leo


```
[FONT=Arial]Set DSN_Name = HMIRuntime.Tags("@DatasourceNameRT")[/FONT]
[FONT=Arial]Set RN = ScreenItems("RN") [/FONT]
[FONT=Arial]Set ER = ScreenItems("ER")[/FONT]
[FONT=Arial]Set EP = ScreenItems("EP")  [/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]DataSource = DSN_Name.Read[/FONT]
[FONT=Arial]strConnectionString = "Provider=MSDASQL.1;PersistSecurityInfo=False; Data Source=" &DataSource&";" [/FONT]
[FONT=Arial]strSQL = "UA#Mischungen" 'Auswahl der Tabelle[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]Set objConnection = CreateObject("ADODB.Connection") 'Verbindung zur Datenbank[/FONT]
[FONT=Arial]            objConnection.ConnectionString = strConnectionString[/FONT]
[FONT=Arial]            objConnection.Open[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]Set objCommand = CreateObject("ADODB.Command")[/FONT]
[FONT=Arial]            objCommand.CommandType = 2 [/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]With objCommand[/FONT]
[FONT=Arial]            .ActiveConnection = objConnection[/FONT]
[FONT=Arial]            .CommandText = strSQL 'Commandtext ist der Name der Tabelle[/FONT]
[FONT=Arial]End With[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]'Verbindung herstellen[/FONT]
[FONT=Arial]Set oRs = objCommand.Execute [/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]'---------------------------------SUB Archiv Datensatz auslesen---------------------------------------[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]RN.OutputValue = oRs.Fields(1).value[/FONT]
[FONT=Arial]ER.OutputValue = oRs.Fields(2).value[/FONT]
[FONT=Arial]EP.OutputValue = oRs.Fields(3).value[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]'-------------------------------SUB ins Archiv Datensatz schreiben---------------------------------[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]oRs.Fields(1).value = RN.OutputValue[/FONT]
[FONT=Arial]oRs.Fields(2).value = ER.OutputValue[/FONT]
[FONT=Arial]oRs.Fields(3).value = EP.OutputValue[/FONT]
[FONT=Arial]oRs.update[/FONT]
```


----------

