Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: MsgFilterSQL + DATETIME aus Variable bzw. E/A-Feld

  1. #1
    Registriert seit
    25.02.2015
    Beiträge
    38
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Ich möchte eine Filteroption für Alarme erstellen. (WinCC 6.0) Nach Eingabe von Anfangs- und Endzeit soll per Buttonclick dementsprechend gefiltert werden. (Das ganze soll für den DAU sein, der nicht mit den WinCC-eigenen Filtern umgehen kann oder die Finger davon lassen soll)

    Bisher habe ich folgende C-Anweisung auf dem Button:

    Code:
    SetPropChar(lpszPictureName, "OLE-Control1","MsgFilterSQL","#VisibleOnly\\DATETIME >= ' "GetTagChar ("Zeit_Von")" ' AND DATETIME <= ' "GetTagChar ("Zeit_Bis")" ' ");
    ... aber da meckert er " error (0040): ')' expected before 'GetTagChar' "


    Die Variablen habe ich als 16-Bit Textvariablen angelegt und die Eingabefelder wiefolgt vorstrukturiert: 'JJJJ-MM-TT HH:MM:SS.mmm'

    Anscheinend frisst MsgFilterSQL diese Art von Deklaration nicht. Gibt es eine Möglichkeit die Zeiten im Ganzen oder zerstückelt (Einzeleingabe Jahr, Monat, Tag, etc.) hier reinzubiegen?

    Danke im Voraus!
    Zitieren Zitieren MsgFilterSQL + DATETIME aus Variable bzw. E/A-Feld  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.800
    Danke
    144
    Erhielt 1.710 Danke für 1.240 Beiträge

    Standard

    Das ist C, da lassen sich nicht einfach Strings hintereinanderhängen wie es bei diversen Skriptsprachen möglich ist.

    Du musst den SQL Abfragestring erst als lokale Variable mit den diversen Zeichenkettenfunktionen (strcpy, strcat oder sprintf) zusammensetzen, und dann diesen an die Funktion SetPropChar übergeben.

  3. #3
    Registriert seit
    25.02.2015
    Beiträge
    38
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Meine C-Kenntnisse sind leider mehr als schwach und das einzige, was ich im Netz / hier gefunden hab, was mir für mein Vorhaben hilfreich erscheint ist:

    WinCC Prof. Umwandlung string nach DateTime

    Leider existiert die Funktion "SetTagDateTime" z.B: garnicht und ich weiß nicht, wie ich es selbst zusammenschreiben könnte.

    Hat noch wer einen erweiterten Ansatz zu diesem Problem?

  4. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.800
    Danke
    144
    Erhielt 1.710 Danke für 1.240 Beiträge

    Standard

    Probier mal so:
    Code:
    char sql_string[255];
    
    sprintf(sql_string, "#VisibleOnly\\DATETIME >= '%s' AND DATETIME <= '%s'", GetTagChar("Zeit_Von"), GetTagChar("Zeit_Bis"));
    SetPropChar(lpszPictureName, "OLE-Control1", "MsgFilterSQL", sql_string);
    Ob der String dann richtig ist musst du selber wissen, ich weiß zumindest nicht was das "#VisibleOnly\" bewirken soll.

    Es wird an den Stellen wo %s steht der Text der Variablen "Zeit_Von" und "Zeit_Bis" eingesetzt.

  5. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    ThomasMaulwurf (06.08.2015)

  6. #5
    Registriert seit
    25.02.2015
    Beiträge
    38
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Grandios! Ich danke dir ungemein! Das klappt direkt ohne Mucken

    "#VisibleOnly" Sagt hier: "Zeige mir in angegebenem Alarmcontrol (OLE-Control1) nur Meldungen mit angegebenen Eingenschaften"


    So kann ich z.B. auch via DropDown-Menü Meldungen einzelner Teilanlagen selektieren indem ich Meldeblock mit Inhalt vom Textfeld abgleiche:

    Code:
    switch (GetTagWord ("Teilanlage_Textliste"))
    {
    case 0: SetPropChar(lpszPictureName, "OLE-Control1","MsgFilterSQL","#VisibleOnly\\TEXT2 IN('Teilanlage A')");
    break;
    case 1: SetPropChar(lpszPictureName, "OLE-Control1","MsgFilterSQL","#VisibleOnly\\TEXT2 IN('Teilanlage B')");
    break;
    case 2: SetPropChar(lpszPictureName, "OLE-Control1","MsgFilterSQL","#VisibleOnly\\TEXT2 IN('Teilanlage C')");
    break;
    default: SetPropChar(lpszPictureName, "OLE-Control1","MsgFilterSQL","#VisibleOnly\\TEXT2 IN()");
    break;
    }

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 30.07.2015, 13:47
  2. Antworten: 4
    Letzter Beitrag: 24.02.2014, 19:30
  3. T177A E/A Feld mit String-Variable
    Von magmaa im Forum HMI
    Antworten: 8
    Letzter Beitrag: 15.05.2009, 08:43
  4. Variable im EA-Feld
    Von Scouty im Forum HMI
    Antworten: 4
    Letzter Beitrag: 17.02.2008, 01:04
  5. EA Feld als Strg in VB Variable
    Von uz71 im Forum HMI
    Antworten: 2
    Letzter Beitrag: 31.10.2006, 10:36

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •