Download - Code Co Pack

Transcript

using System;using System.IO;//using System.Collections.Generic;//using System.ComponentModel;using System.Data;using System.Data.OleDb; //using System.Data.SqlClient;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Threading;namespace appCopack{ public partial class Form1 : Form { // selection archive type; 1=Tag Logging, 2=Alarm Logging, 3 User Archives int iArchiveSel = 0; bool CrystalReportInstalled = false; // string szValueName; string mySelectQuery = ""; System.DateTime localDateTimeFrom; System.DateTime localDateTimeTo; System.DateTime univDateTimeFrom; System.DateTime univDateTimeTo; OleDbConnection myConnection; OleDbDataAdapter myAdapter; DataTable myTableAlarms; DataTable myTableAlarmsModify; DataTable myTableTags; DataTable myTableTagsModify; DataTable myTableProducts; Form_Start frmStarting = new Form_Start(); Thread StartingThread; public static ManualResetEvent mre = new ManualResetEvent(false); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//++ funktions ++//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //################################################################ //#### Form1() ## //################################################################ ///========================================== /// /// Starr the "Starting"-Window in own thread /// /// public void StartingForm() { Thread.BeginThreadAffinity(); frmStarting.ShowDialog(); Thread.EndThreadAffinity(); } //################################################################ //#### Form1() ## //################################################################ ///========================================== /// /// Configuration of first start /// /// Initialize all objects of Form1 and /// Set default values /// public Form1() { // Start the StartingForm StartingThread = new Thread(new ThreadStart(this.StartingForm)); StartingThread.Start(); // Start the StartingForm // Initialize all objects of Form1 InitializeComponent();// Initialize all objects of Form1 } private void Form1_Load(object sender, EventArgs e) { try { TabPage CRTab = new myTabPageCR(); tabView.TabPages.Add(CRTab); CrystalReportInstalled = true; } catch (Exception ex) { TabPage CRTab = new Error_CR(); tabView.TabPages.Add(CRTab); MessageBox.Show("#E001: Warning caused by Crystal Report initializiing.\n" +"Please install Crystal Report\n\n" +"Crystal Report is not available for this session", "Crystal Report WARNING",MessageBoxButtons.OK,MessageBoxIcon.Warning); CrystalReportInstalled = false; } //-------------------------------- // presets for Test-Environment //-------------------------------- // data source name txtCatalog.Text = "CC_DIEU_KHI_14_05_04_08_11_05R"; // name of WinCC-Server and instance of SQL-Server txtSource.Text = "BLACKWIN\\WINCC"; txtUid.Text = "BLACKWIN"; txtPwd.Text = "080292"; // Provider txtProvider.Text = "WinCCOLEDBProvider"; // data in between dtpFrom and dtpTo dtpFrom.Format = DateTimePickerFormat.Custom; dtpFrom.CustomFormat = "dd.MM.yyyy HH:mm:ss"; // dtpFrom.Value = DateTime.Now.AddHours(-1); dtpFrom.Value = DateTime.Now.AddDays(-1); dtpTo.Format = DateTimePickerFormat.Custom; dtpTo.CustomFormat = "dd.MM.yyyy HH:mm:ss"; dtpTo.Value = DateTime.Now; //Disable all parts grpDataSelection.Enabled = false; grpExport.Enabled = false; grpTimeInterval.Enabled = false; btnRead.Enabled = false; myGrid.Visible = false; // // Tags: choisable Interval-Type dblArray[] interpolArray = new dblArray[] { new dblArray("Without Aggreg.",0), new dblArray("FIRST",1), new dblArray("LAST",2), new dblArray("MIN",3), new dblArray("MAX",4), new dblArray("AVG",5), new dblArray("SUM",6), new dblArray("COUNT",7), new dblArray("FIRST_INTERPOLATED",257), new dblArray("LAST_INTERPOLATED",258), new dblArray("MIN_INTERPOLATED",259), new dblArray("MAX_INTERPOLATED",260), new dblArray("AVG_INTERPOLATED",261), new dblArray("SUM_INTERPOLATED",262), new dblArray("COUNT_INTERPOLATED",263) }; cmbInterpol.DataSource = interpolArray; cmbInterpol.ValueMember = "No"; cmbInterpol.DisplayMember = "Name"; StartingThread.Abort(); // Terminate the StartingForm } //################################################################ //#### ChangeComponent() ## //################################################################ //========================================= /// /// enable/disabel the needed groups and fill the Data Selection /// /// triggered by Button "connect to database" /// of group "Archive" /// /// //========================================= public void ChangeComponent() { //-------------------------------- //iArchiveSel //-------------------------------- switch (iArchiveSel) { case 1: //Tag Logging grpDataSelection.Enabled = true; if (TLG_Archive() == 0) // read all prozess values without { grpTimeInterval.Enabled = true; btnRead.Enabled = true; myGrid.Visible = true; } break; case 2: //Alarm Logging grpDataSelection.Enabled = false; btnRead.Enabled = true; grpTimeInterval.Enabled = true; break; case 3: //User Archives grpDataSelection.Enabled = false; grpTimeInterval.Enabled = false; btnRead.Enabled = true; break; default: grpDataSelection.Enabled = false; grpTimeInterval.Enabled = false; btnRead.Enabled = false; break; }//switch (iArchiveSel) }//ChangeComponent() //################################################################ //#### TLG_Archive() ## //################################################################ //========================================= /// /// reading IDs/Names of archived Tags /// /// access by OleDB of SQL-Server /// needed for the choise of archived Tag /// //========================================= public int TLG_Archive() { try { tagInfos ti = new tagInfos("Provider=SQLOLEDB; Data Source =" + txtSource.Text + "; uid=" + txtUid.Text + "; pwd=" + txtPwd.Text + "; Initial Catalog = " + txtCatalog.Text + ";"); cmbTags.DataSource = ti.getTaginfos(); cmbTags.ValueMember = "ValueID"; cmbTags.DisplayMember = "ValueName"; return (0); } // try catch (Exception) { //MessageBox.Show("#108-1 TLGArchive() faild..."); return (-1); }// catch }//TLG_Archive //################################################################ //#### TLG_ArchiveGetID ## //################################################################ public int TLG_ArchiveGetID(String strValueName) { string myConnectionString = "Provider=SQLOLEDB; Data Source =" + txtSource.Text + "; uid=" + txtUid.Text + "; pwd=" + txtPwd.Text + "; Initial Catalog = " + txtCatalog.Text + ";"; myTableTags = new DataTable(); string mySelectQuery = "SELECT * FROM Archive"; //------------ try { using (OleDbCommand myCommand = new OleDbCommand(mySelectQuery)) { // Connection Archive-Database myConnection = new OleDbConnection(myConnectionString); myCommand.Connection = myConnection; myAdapter = new OleDbDataAdapter(myCommand); // // Providing data for loop throug data table, data grid myTableTags.TableName = "myTableTags"; myAdapter.Fill(myTableTags); myGrid.DataSource = myTableTags; lbl_AnzArchTag.Text = (myGrid.RowCount-1).ToString() + " Archive-Tags found"; myConnection.Close(); // //Loop through DataTable by DataRow // foreach (DataRow row in myTableTags.Rows) {// strLine = String.Format("{0}; {1}; {2:F3}; {3}; {4}", row[0], row[1], row[2], row[3], row[4]);// streamTagLogging.WriteLine(strLine); }//DataRow } return (myGrid.RowCount); } catch (Exception) { return (-1); } }//TLG_ArchiveGetID() //################################################################ //#### TLG_Connect ## //################################################################ ///========================================== /// /// /// /// /// /// /// /// /// /// ///========================================== public int TLG_Connect(string mySelectQuery) { //StreamWriter streamTagLogging = null; //string strLine = ""; //string strExportFile = ""; string myConnectionString = "Provider=" + txtProvider.Text + "; Data Source =" + txtSource.Text + "; Catalog = " + txtCatalog.Text + ";"; myGrid.Name = "Tags"; myTableTags = new DataTable(); myTableTagsModify = new DataTable(); System.DateTime localDateTime; //System.DateTime univDateTime; //============================================================== // //Adding Columns and Rows to Data Table myTableTagsModify // //============================================================== // DataColumn newColumn = new DataColumn("localTimestamp", System.Type.GetType("System.String")); newColumn.Caption = "localTimestamp"; newColumn.DefaultValue = string.Empty; myTableTagsModify.Columns.Add(newColumn); // newColumn = new DataColumn("RealValue", System.Type.GetType("System.String")); newColumn.Caption = "RealValue"; newColumn.DefaultValue = string.Empty; myTableTagsModify.Columns.Add(newColumn); // newColumn = new DataColumn("Quality", System.Type.GetType("System.String")); newColumn.Caption = "Quality"; newColumn.DefaultValue = string.Empty; myTableTagsModify.Columns.Add(newColumn); // newColumn = new DataColumn("Flags", System.Type.GetType("System.String")); newColumn.Caption = "Flags"; newColumn.DefaultValue = string.Empty; myTableTagsModify.Columns.Add(newColumn); // newColumn = new DataColumn("ValueID", System.Type.GetType("System.String")); newColumn.AllowDBNull = false; newColumn.Caption = "ValueID"; newColumn.DefaultValue = string.Empty; myTableTagsModify.Columns.Add(newColumn); // newColumn = new DataColumn("ValueName", System.Type.GetType("System.String")); newColumn.Caption = "ValueName"; newColumn.DefaultValue = string.Empty; myTableTagsModify.Columns.Add(newColumn); // newColumn = new DataColumn("localDateTimeFrom", System.Type.GetType("System.String")); newColumn.Caption = "localDateTimeFrom"; newColumn.DefaultValue = string.Empty; myTableTagsModify.Columns.Add(newColumn); // newColumn = new DataColumn("localDateTimeTo", System.Type.GetType("System.String")); newColumn.Caption = "localDateTimeTo"; newColumn.DefaultValue = string.Empty; myTableTagsModify.Columns.Add(newColumn); // newColumn = new DataColumn("univDateTimeFrom", System.Type.GetType("System.String")); newColumn.Caption = "univDateTimeFrom"; newColumn.DefaultValue = string.Empty; myTableTagsModify.Columns.Add(newColumn); // newColumn = new DataColumn("univDateTimeTo", System.Type.GetType("System.String")); newColumn.Caption = "univDateTimeTo"; newColumn.DefaultValue = string.Empty; myTableTagsModify.Columns.Add(newColumn); //------------ try { using (OleDbCommand myCommand = new OleDbCommand(mySelectQuery)) { // Connection Archive-Database myConnection = new OleDbConnection(myConnectionString); myCommand.Connection = myConnection; myAdapter = new OleDbDataAdapter(myCommand); // // Providing data for Data-Grid // myTableTags.TableName = "myTableTags"; myTableTagsModify.TableName = "myTableTagsModify"; myAdapter.Fill(myTableTags); // //modify DataTable // myTableTagsModify.Clear(); foreach (DataRow row in myTableTags.Rows) { DataRow newRow = myTableTagsModify.NewRow(); //covert to local time localDateTime = System.DateTime.Parse(row["Timestamp"].ToString()); localDateTime = localDateTime.ToLocalTime(); newRow["localTimestamp"] = localDateTime.ToString(); newRow["RealValue"] = (String.Format("{0:F3}", row["RealValue"])).PadLeft(20); newRow["Quality"] = String.Format("0x{0:X}", row["Quality"]).PadLeft(10); newRow["Flags"] = String.Format("0x{0:X}", row["Flags"]).PadLeft(10); newRow["ValueID"] = row["ValueID"]; newRow["ValueName"] = szValueName; newRow["localDateTimeFrom"] = localDateTimeFrom; newRow["localDateTimeTo"] = localDateTimeTo; newRow["univDateTimeFrom"] = univDateTimeFrom; newRow["univDateTimeTo"] = univDateTimeTo; myTableTagsModify.Rows.Add(newRow); }//foreach(DataRow) myGrid.DataSource = myTableTagsModify;// myGrid.DataSource = myTableTags; // lblAnzEntries.Text = myGrid.RowCount.ToString() + " Rows found"; myConnection.Close(); if (CrystalReportInstalled) { // Update Crystal-Report myTabPageCR ArchivCR = (myTabPageCR)tabView.TabPages["myTabPageCR"]; ArchivCR.ShowInCristalReport(iArchiveSel, myTableTagsModify); }//if (CrystalReportInstalled) } return (myGrid.RowCount); } catch (Exception ex) { MessageBox.Show("#E110: TLG_Connect() - Failed connect to the database.\n" + "WinCC Connectivity Pack required" + "{0}" + ex.Message, "Failed connect to the database", MessageBoxButtons.OK, MessageBoxIcon.Error); return (-1); } }//TLG_Connect() //################################################################ //#### UA_Connect ## //################################################################ ///========================================== /// /// Connect to Database / User Archiv /// /// connecting to database by OleDB-Provider of WinCC /// public int UA_Connect(string mySelectQuery) { string myConnectionString = "Provider=SQLOLEDB; Data Source =" + txtSource.Text + "; uid=" + txtUid.Text + "; pwd=" + txtPwd.Text + "; Initial Catalog = " + txtCatalog.Text + ";"; myTableProducts = new DataTable(); //------------ try { using (OleDbCommand myCommand = new OleDbCommand(mySelectQuery)) { // Connection Archive-Database myConnection = new OleDbConnection(myConnectionString); myCommand.Connection = myConnection; myAdapter = new OleDbDataAdapter(myCommand); // // Providing data for loop throug data table, data grid myTableProducts.TableName = "myTableProducts"; myAdapter.Fill(myTableProducts); myGrid.DataSource = myTableProducts; myConnection.Close(); lblAnzEntries.Text = (myGrid.RowCount-1).ToString() + " Rows found"; if (CrystalReportInstalled) { // Update Crystal-Report myTabPageCR ArchivCR = (myTabPageCR)tabView.TabPages["myTabPageCR"]; ArchivCR.ShowInCristalReport(iArchiveSel, myTableProducts); }//if (CrystalReportInstalled) } return (myGrid.RowCount); } catch (Exception ex) { MessageBox.Show("#E310: UA_Connect() - Failed connect to the database.\n{0}" + ex.Message, "Failed connect to the database", MessageBoxButtons.OK, MessageBoxIcon.Error); return (-1); } }//UA_Connect() //################################################################ //#### ALG_Connect(string mySelectQuery) ## //################################################################ ///========================================== /// /// Connect to Database / Alarms> /// /// connecting to database by OleDB-Provider of WinCC /// reading data-rows by Data-Adapter /// providing these rows in Data-Table for Datagrid /// providing these rows in Data-Table for Report /// aktivating of Crystal-Report /// /// ///========================================== public int ALG_Connect(string mySelectQuery) { string myConnectionString = "Provider=" + txtProvider.Text + "; Data Source =" + txtSource.Text + "; Catalog = " + txtCatalog.Text + ";"; myGrid.Name = "Alarms"; myTableAlarms = new DataTable(); myTableAlarmsModify = new DataTable(); System.DateTime localDateTime; //System.DateTime univDateTime; //============================================================== //Adding Columns and Rows to Data Table myTableAlarmsModify //============================================================== DataColumn newColumn = new DataColumn("localDateTime", System.Type.GetType("System.String")); newColumn.Caption = "localDateTime"; newColumn.DefaultValue = string.Empty; myTableAlarmsModify.Columns.Add(newColumn); // newColumn = new DataColumn("MsgNr", System.Type.GetType("System.String")); newColumn.Caption = "MsgNr"; newColumn.DefaultValue = string.Empty; myTableAlarmsModify.Columns.Add(newColumn); // newColumn = new DataColumn("State", System.Type.GetType("System.String")); newColumn.Caption = "State"; newColumn.DefaultValue = string.Empty; myTableAlarmsModify.Columns.Add(newColumn); // newColumn = new DataColumn("Text1", System.Type.GetType("System.String")); newColumn.Caption = "Text1"; newColumn.DefaultValue = string.Empty; myTableAlarmsModify.Columns.Add(newColumn); // newColumn = new DataColumn("Text3", System.Type.GetType("System.String")); newColumn.AllowDBNull = false; newColumn.Caption = "Text3"; newColumn.DefaultValue = string.Empty; myTableAlarmsModify.Columns.Add(newColumn); // newColumn = new DataColumn("localDateTimeFrom", System.Type.GetType("System.String")); newColumn.Caption = "localDateTimeFrom"; newColumn.DefaultValue = string.Empty; myTableAlarmsModify.Columns.Add(newColumn); // newColumn = new DataColumn("localDateTimeTo", System.Type.GetType("System.String")); newColumn.Caption = "localDateTimeTo"; newColumn.DefaultValue = string.Empty; myTableAlarmsModify.Columns.Add(newColumn); // newColumn = new DataColumn("univDateTimeFrom", System.Type.GetType("System.String")); newColumn.Caption = "univDateTimeFrom"; newColumn.DefaultValue = string.Empty; myTableAlarmsModify.Columns.Add(newColumn); // newColumn = new DataColumn("univDateTimeTo", System.Type.GetType("System.String")); newColumn.Caption = "univDateTimeTo"; newColumn.DefaultValue = string.Empty; myTableAlarmsModify.Columns.Add(newColumn); try { using (OleDbCommand myCommand = new OleDbCommand(mySelectQuery)) { // Connection Archive-Database myConnection = new OleDbConnection(myConnectionString); myCommand.Connection = myConnection; myAdapter = new OleDbDataAdapter(myCommand); // Providing data for Data-Grid myTableAlarms.TableName = "myTableAlarms"; myTableAlarmsModify.TableName = "myTableAlarmsModify"; myAdapter.Fill(myTableAlarms);// myAdapter.Fill(myTableAlarmsModify); myTableAlarmsModify.Clear(); // //modify DataTable //// myTableAlarmsModify = myTableAlarmsModify.select(SortOrder localDateTime); foreach (DataRow row in myTableAlarms.Rows) { string szState = ""; short iState; DataRow newRow = myTableAlarmsModify.NewRow(); //covert to local time localDateTime = System.DateTime.Parse(row["DateTime"].ToString()); localDateTime = localDateTime.ToLocalTime(); newRow["localDateTime"] = localDateTime.ToString(); newRow["MsgNr"] = (String.Format("{0}", row["MsgNr"])).PadLeft(10); //szState = String.Format("0x{0:X}", row["State"]).PadLeft(10); iState = (short)(row["State"]); switch (iState){ case 1: szState = row["TxtCame"].ToString(); break; case 2: szState = row["TxtWent"].ToString(); break; case 3: szState = row["TxtAck"].ToString(); break; case 16://0x10 (Quit System) szState = row["TxtAck"].ToString(); break; default: szState = String.Format("0x{0:X}", row["State"]).PadLeft(10); break; }//switch row["State"] newRow["State"] = szState; newRow["Text1"] = row["Text1"]; newRow["Text3"] = row["Text3"]; newRow["localDateTimeFrom"] = localDateTimeFrom; newRow["localDateTimeTo"] = localDateTimeTo; newRow["univDateTimeFrom"] = univDateTimeFrom; newRow["univDateTimeTo"] = univDateTimeTo; myTableAlarmsModify.Rows.Add(newRow); }//foreach(DataRow) myGrid.DataSource = myTableAlarmsModify; myConnection.Close(); lblAnzEntries.Text = (myGrid.RowCount - 1).ToString() + " Rows Found "; if (CrystalReportInstalled) { // Update Crystal-Report myTabPageCR ArchivCR = (myTabPageCR)tabView.TabPages["myTabPageCR"]; ArchivCR.ShowInCristalReport(iArchiveSel, myTableAlarmsModify); } //if (CrystalReportInstalled) } return (myGrid.RowCount); } catch (Exception ex) { MessageBox.Show("#E210: ALG_Connect() - Failed connect to the database.\n" + "WinCC Connectivity Pack required" + "\n{0}" + ex.Message, "Failed connect to the database", MessageBoxButtons.OK, MessageBoxIcon.Error); return (-1); } }//ALG_Connect() //################################################################ //#### GetData() ## //################################################################ //============================================== /// /// get archived Data /// /// depending on selected Archive: Alarms/Tags /// creating select-statement, considering fro/to time /// calling Fuction for access to database /// ///========================================== public void GetData() { string timeStep = ""; int cntData = 0; //covert dtpFrom to universal time (utc) localDateTimeFrom = dtpFrom.Value; localDateTimeFrom = System.DateTime.Parse(localDateTimeFrom.ToString()); univDateTimeFrom = localDateTimeFrom.ToUniversalTime(); string tfrom = dtpFrom.Value.Year.ToString() + "-" + string.Format("{0:MM}", univDateTimeFrom.Month.ToString()) + "-" + string.Format("{0:dd}", univDateTimeFrom.Day.ToString()) + " " + string.Format("{0:HH}", univDateTimeFrom.Hour.ToString()) + ":" + string.Format("{0:mm}", univDateTimeFrom.Minute.ToString()) + ":" +string.Format("{0:ss}", univDateTimeFrom.Second.ToString()); //covert dtpTo to universal time (utc) localDateTimeTo = dtpTo.Value; localDateTimeTo = System.DateTime.Parse(localDateTimeTo.ToString()); univDateTimeTo = localDateTimeTo.ToUniversalTime(); string tto = dtpTo.Value.Year.ToString() + "-" + string.Format("{0:MM}", univDateTimeTo.Month.ToString()) + "-" + string.Format("{0:dd}", univDateTimeTo.Day.ToString()) + " " + string.Format("{0:HH}", univDateTimeTo.Hour.ToString()) + ":" + string.Format("{0:mm}", univDateTimeTo.Minute.ToString()) + ":" + string.Format("{0:ss}", univDateTimeTo.Second.ToString()); switch (iArchiveSel) { case 1://TagLogging grpExport.Enabled = true; if (cmbInterpol.SelectedValue.ToString() != "0") { timeStep = ",'TIMESTEP=" + txtStep.Text + "," + cmbInterpol.SelectedValue.ToString() + "'"; } mySelectQuery = "TAG:R," + cmbTags.SelectedValue.ToString() + ",'" + tfrom + "','" + tto + "'" + timeStep; try { cntData = TLG_Connect(mySelectQuery); //Start read out } catch (Exception ex) { MessageBox.Show("#E120: TLG_Connect() - Failed to retrieve the required data from database.\n{0}", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } break; case 2://Alarm Logging grpExport.Enabled = true; txtExportFile.Text = "AlarmLogging.txt"; mySelectQuery = "ALARMVIEW:SELECT * FROM AlgViewDeu Where DateTime>'" + tfrom + "' AND DateTime


Top Related