1

I have a project that uses WinForm and Connectivity Pack to read TagLogging data from WinCC's SQLRunTime. When reading data back, all Real Value data is contained in 1 column. I want to separate this data into many different columns, based on the ValueID of the data. However, when I use the command "If ( ValueID == ), the data is divided into 2 columns, but from the second column, the data is not filled in from the first cell but starts filling in from the cell immediately after the cell containing the data. of column 1. How do I fill in the first cell of the second column? Please help me. Sorry my English is not very good. Below is the code and image describing the current situation enter image description here

namespace WinFormToSQLRunTimeWinCC { public partial class UserControl1: UserControl { System.DateTime localDateTimeFrom; System.DateTime localDateTimeTo; System.DateTime univDateTimeFrom; System.DateTime univDateTimeTo; DataTable myTableTag; DataTable myTableTagModify; OleDbConnection myConnection; OleDbDataAdapter myDataAdapter; string mySelectQuery = "";

    public UserControl1()
    {
        InitializeComponent();
    }

    private void UserControl1_Load(object sender, EventArgs e)
    {
        dtpFrom.Value = System.DateTime.Now.AddDays(-1);
        dtpTo.Value = System.DateTime.Now;
        txtStep.Text = Convert.ToString(300);
        
    }
    public int TLG_Connect ( string mySeclectQuery)
    {
        string myConnectionString = "Provider = WinCCOLEDBProvider.1; Data Source = ADMIN\\WINCC; Catalog = CC_92_CS11__24_05_16_16_24_12R; Jet OLEDB:Database Password= ";
        myGrid.Name = "TagLogging";
        myTableTag = new DataTable();
        myTableTagModify = new DataTable();
        System.DateTime localDateTime;

        DataColumn newColumn = new DataColumn("DateTime", System.Type.GetType("System.String"));
        newColumn.Caption = "Date Time";
        newColumn.DefaultValue = string.Empty;
        myTableTagModify.Columns.Add(newColumn);
       
        newColumn = new DataColumn("kPa", System.Type.GetType("System.String"));
        newColumn.Caption = "kPa";
        newColumn.DefaultValue = string.Empty;
        myTableTagModify.Columns.Add(newColumn);
       
        newColumn = new DataColumn("Nm3/h", System.Type.GetType("System.String"));
        newColumn.Caption = "Nm3/h";
        newColumn.DefaultValue = string.Empty;
        myTableTagModify.Columns.Add(newColumn);
        using (OleDbCommand myComand = new OleDbCommand(mySeclectQuery)) 
        {
            myConnection = new OleDbConnection(myConnectionString);
            myComand.Connection = myConnection;
            myDataAdapter = new OleDbDataAdapter(myComand);
            myTableTag.TableName = "myTableTag";
            myTableTagModify.TableName = "myTableTagModify";
            myDataAdapter.Fill(myTableTag);
            myTableTagModify.Clear();
            foreach (DataRow row in myTableTag.Rows)
            {
                int a = Convert.ToInt16(row["ValueID"]);
                if ( a == 1)
                {
                    DataRow newRow = myTableTagModify.NewRow();
                    localDateTime = System.DateTime.Parse(row["Timestamp"].ToString());
                    localDateTime = localDateTime.ToLocalTime();
                    newRow["DateTime"] = localDateTime.ToString();
                    newRow["kPa"] = (String.Format("{0:F3}", row["RealValue"])).PadLeft(20);
                    myTableTagModify.Rows.Add(newRow);
                }
                if ( a ==2 )
                {
                    DataRow newRow = myTableTagModify.NewRow();
                    newRow["Nm3/h"] = (String.Format("{0:F3}", row["RealValue"])).PadLeft(20);
                    myTableTagModify.Rows.Add(newRow);
                }



            }


        }
        myGrid.DataSource = myTableTagModify;
        
        myConnection.Close();

        return (myGrid.RowCount);
    }
    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());
        timeStep = ",'TIMESTEP= " + txtStep.Text + ", 1 '";
        mySelectQuery = "TAG:R,('Process_value_archive\\LPG_kPa_1403';'Process_value_archive\\LPG_Nm3/h_1403'),'" + tfrom + "','" + tto + "'" + timeStep;
        cntData = TLG_Connect(mySelectQuery);

    }

    private void btn_Load_Click(object sender, EventArgs e)
    {
        GetData();
        
    }
}

}

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.