sdg.matiaan
2014-05-23 12:33
You can use this C# code to import data from PnPScada web services into an MS Access DB.
It compiles with MS Visual Studio 2013 Express
[CODE]
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                WebClient webClient = new WebClient();
                webClient.QueryString.Add("LOGIN", "test.test");     // insert your webservice login
                webClient.QueryString.Add("PWD", "test123");         // insert your webservice password
                webClient.QueryString.Add("eid", "19862");           // insert ied of meter that you want to import
                webClient.QueryString.Add("startdate", "2014-01-09");// insert start date
                webClient.QueryString.Add("enddate", "2014-01-29");  // insert end date
                string result = webClient.DownloadString("https://test-adam.pnpscada.com/readMeterTotals");// change "test" to your organization-subdomain
                XDocument doc = XDocument.Parse(result);
                string serial = doc.Descendants("serial").First().Value;
                var st = doc.Descendants("start_total");
                string sdate = st.Descendants("date").First().Value;
                string sp1 = st.Descendants("P1").First().Value;
                string sp2 = st.Descendants("P2").First().Value;
                string sq1 = st.Descendants("Q1").First().Value;
                string sq2 = st.Descendants("Q2").First().Value;
                string sq3 = st.Descendants("Q3").First().Value;
                string sq4 = st.Descendants("Q4").First().Value;
                var et = doc.Descendants("end_total");
                string edate = et.Descendants("date").First().Value;
                string ep1 = et.Descendants("P1").First().Value;
                string ep2 = et.Descendants("P2").First().Value;
                string eq1 = et.Descendants("Q1").First().Value;
                string eq2 = et.Descendants("Q2").First().Value;
                string eq3 = et.Descendants("Q3").First().Value;
                string eq4 = et.Descendants("Q4").First().Value;
                var md = doc.Descendants("max_demand");
                string mddate = md.Descendants("date").First().Value;
                string mdkva = md.Descendants("kVA").First().Value;
                Console.WriteLine("serial=" + serial);
                Console.WriteLine("start date=" + sdate);
                Console.WriteLine("start P1=" + sp1);
                Console.WriteLine("start P2=" + sp2);
                Console.WriteLine("start Q1=" + sq1);
                Console.WriteLine("start Q2=" + sq2);
                Console.WriteLine("start Q3=" + sq3);
                Console.WriteLine("start Q4=" + sq4);
                Console.WriteLine("end date=" + edate);
                Console.WriteLine("end P1=" + ep1);
                Console.WriteLine("end P2=" + ep2);
                Console.WriteLine("end Q1=" + eq1);
                Console.WriteLine("end Q2=" + eq2);
                Console.WriteLine("end Q3=" + eq3);
                Console.WriteLine("end Q4=" + eq4);
                Console.WriteLine("date of maximum demand=" + mddate);
                Console.WriteLine("maximum demand=" + mdkva);
                OleDbConnection conn = new OleDbConnection();
                conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:/mydb.accdb"; // insert path to your .accdb file here
                OleDbCommand cmd = new OleDbCommand("INSERT into totals (p1,q1,rdate) Values(@p1,@q1,@date)");  // change this insert statement to fit your database
                cmd.Connection = conn;
                conn.Open();
                if (conn.State == ConnectionState.Open)
                {
                    cmd.Parameters.Add("@p1", OleDbType.VarChar).Value = sp1;
                    cmd.Parameters.Add("@q1", OleDbType.VarChar).Value = sp1;
                    cmd.Parameters.Add("@date", OleDbType.VarChar).Value = sdate;
                    // add all parameters here
                    cmd.ExecuteNonQuery();
                    Console.WriteLine("Data Added");
                    conn.Close();
                }
                else
                {
                    Console.WriteLine("Connection Failed");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
    }
}
[/CODE]