pnpscada to access db

Avatar

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]

Please log in to post a comment