namespace prueba2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private static readonly string cnnStrTPV =
ConfigurationManager.ConnectionStrings["xTrelaTPVConnectionString"].ConnectionString;
System.Data.OracleClient.OracleConnection conn =
new System.Data.OracleClient.OracleConnection();
int idtabla;
long Id;
string sql = "";
//
System.Collections.ArrayList ListaPedidos =
new System.Collections.ArrayList();//definimos e instanciamos el objeto ArrayList CabPedido CPedido
= new CabPedido
();
System.Collections.ArrayList ListaTickets =
new System.Collections.ArrayList(); CabTicket CTicket
= new CabTicket
();
System.Collections.ArrayList ListaOperacionesT =
new System.Collections.ArrayList(); CabOperac COperac
= new CabOperac
();
//Código encargado de realizar la conexion con la BBDD
//y de llamar al método que realiza la recogida del XML del campo de la bbdd
//y de crear el archivo xml en la ruta especificada
private void RecogerXML()
{
XmlDocument doc1
= new XmlDocument
(); XmlDocument doc2
= new XmlDocument
(); XmlDocument doc3
= new XmlDocument
();
SqlConnection cnn
= new SqlConnection
(cnnStrTPV
);
cnn.Open();
LoadXml1(cnn, doc1);
LoadXml2(cnn, doc2);
LoadXml3(cnn, doc3);
cnn.Close();
doc1.Save("C:\Users\davidms\Desktop\temp\OutputXml1.xml");
doc2.Save("C:\Users\davidms\Desktop\temp\OutputXml2.xml");
doc3.Save("C:\Users\davidms\Desktop\temp\OutputXml3.xml");
MessageBox.Show("Archivo XML importado y creado correctamente", "Info",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//Método que recoge el campo xml de la bbdd
protected bool LoadXml1(SqlConnection cnn, XmlDocument doc1)
{
//Leemos el campo serialización(XML) de la bbdd.
idtabla = 122;//pedidostiendas
Id = 10001901982;
sql = @"SELECT Serializacion
FROM xTrelaTPV..OPERACIONES
WHERE IdOperacion =" + Id +
"and idtabla=" + idtabla + "";
SqlCommand cm
= new SqlCommand
(sql, cnn
); /* cm.Parameters.Add(new SqlParameter("@IdOperacion", 10001901982));//id de ejemplo
//10009801627));
//cm.Parameters.Add(new SqlParameter("@Idtabla", 122));//Idtabla PedidosTiendas
//127));//id tabla OperacionesTalleresHistorico*/
using (SqlDataReader dr = cm.ExecuteReader())
{
if (dr.Read())
{
SqlXml MiXml = dr.GetSqlXml(dr.GetOrdinal("Serializacion"));
doc1.LoadXml(MiXml.Value);
return true;
}
else
{
return false;
}
}
}
protected bool LoadXml2(SqlConnection cnn, XmlDocument doc2)
{
idtabla = 127;//OperacionesTalleresHistorico
Id = 1001520165;
sql = @"SELECT Serializacion
FROM xTrelaTPV..OPERACIONES
WHERE IdOperacion =" + Id +
"and idtabla=" + idtabla + "";
SqlCommand cm
= new SqlCommand
(sql, cnn
);
using (SqlDataReader dr = cm.ExecuteReader())
{
if (dr.Read())
{
SqlXml MiXml = dr.GetSqlXml(dr.GetOrdinal("Serializacion"));
doc2.LoadXml(MiXml.Value);
return true;
}
else
{
return false;
}
}
}
protected bool LoadXml3(SqlConnection cnn, XmlDocument doc3)
{
//Leemos el campo serialización(XML) de la bbdd.
idtabla = 135;//tickets
Id = 100098011891;
sql = @"SELECT Serializacion
FROM xTrelaTPV..OPERACIONES
WHERE IdOperacion =" + Id +
"and idtabla=" + idtabla + "";
SqlCommand cm
= new SqlCommand
(sql, cnn
);
using (SqlDataReader dr = cm.ExecuteReader())
{
if (dr.Read())
{
SqlXml MiXml = dr.GetSqlXml(dr.GetOrdinal("Serializacion"));
doc3.LoadXml(MiXml.Value);
return true;
}
else
{
return false;
}
}
}
//Método encargado de sacar los campos del xml
//moviendose por los diferentes nodos del archivo
public void GetCampos_PedidoTienda()
{
XmlDocument xDoc
= new XmlDocument
();//XmlDocument nos permite editar el XML //La ruta del documento XML permite rutas relativas
//respeto del ejecutable!
xDoc.Load("C:/Users/davidms/Desktop/temp/OutputXml1.xml");//ruta del archivo xml
XmlNodeList pedidostiendas =
xDoc.GetElementsByTagName("PedidoTienda");//idtabla=122-->PedidosTiendas
foreach (XmlElement nodo in pedidostiendas)
{
int i = 0;
CPedido.idPedidoTienda = Convert.ToUInt32(nodo.GetElementsByTagName("IdPedidoTienda")[i].InnerText);
if (CPedido.Pedido == null)
{
CPedido.Pedido = Convert.ToInt32(nodo.GetElementsByTagName("Pedido")[i].InnerText);//nodo xsi.nil
}
CPedido.IdentidadOrigenPedido = Convert.ToInt32(nodo.GetElementsByTagName("IdEntidadOrigenPedido")[i].InnerText);
CPedido.FechaPedido = (nodo.GetElementsByTagName("FechaPedido")[i].InnerText);
CPedido.CodigoBarras = nodo.GetElementsByTagName("CodigoBarras")[i].InnerText;
CPedido.IdDivisa = Convert.ToInt32(nodo.GetElementsByTagName("IdDivisa")[i].InnerText);
CPedido.AvisarALaRecepcion = Convert.ToBoolean(nodo.GetElementsByTagName("AvisarAlaRecepcion")[i].InnerText);
CPedido.SMS = Convert.ToBoolean(nodo.GetElementsByTagName("Sms")[i].InnerText);
CPedido.AvisarALaRecepcionCompletaDelPedido = Convert.ToBoolean(nodo.GetElementsByTagName("AvisarAlaRecepcionCompletaDelPedido")[i].InnerText);
//Agrego la estructura o objeto CPedido a mi ArrayList
ListaPedidos.Add(CPedido);
//
}
}
public void GetCampos_Ticket()
{
XmlDocument xDoc
= new XmlDocument
();//XmlDocument nos permite editar el XML //La ruta del documento XML permite rutas relativas
//respeto del ejecutable!
xDoc.Load("C:/Users/davidms/Desktop/temp/OutputXml2.xml");//ruta del archivo xml
XmlNodeList Ptickets =
xDoc.GetElementsByTagName("Ticket");//idtabla=135-->Tickets
foreach (XmlElement nodo in Ptickets)
{
int i = 0;
//CTicket.IdEntidad =Convert.ToInt32(nodo.GetElementsByTagName("IdEntidad")[i].InnerText);
CTicket.CodigoBarras = (nodo.GetElementsByTagName("CodigoBarras")[i].InnerText);
CTicket.NumeroTicket = Convert.ToInt32(nodo.GetElementsByTagName("NumeroTicket")[i].InnerText);
CTicket.Fecha = (nodo.GetElementsByTagName("Fecha")[i].InnerText);//tabla de pruebas-> DATE ,,cambiado a VARCHAR
ListaTickets.Add(CTicket);
}
}
public void GetCampos_OperacTaller()
{
XmlDocument xDoc
= new XmlDocument
();//XmlDocument nos permite editar el XML //La ruta del documento XML permite rutas relativas
//respeto del ejecutable!
xDoc.Load("C:/Users/davidms/Desktop/temp/OutputXml3.xml");//ruta del archivo xml
XmlNodeList operaciontallerH =
xDoc.GetElementsByTagName("OperacionTallerHistorico");//idtabla=127-->OperacionTallerHist
foreach (XmlElement nodo in operaciontallerH)
{
int i = 0;
COperac.IdOperacionTaller = Convert.ToUInt32(nodo.GetElementsByTagName("IdOperacionTaller")[i].InnerText);
COperac.DescripcionGeneradaReparacion = nodo.GetElementsByTagName("DescripcionGeneradaReparacion")[i].InnerText;
COperac.FechaOperacionTaller = nodo.GetElementsByTagName("FechaOperacionTaller")[i].InnerText;
ListaOperacionesT.Add(COperac);
}
}
public void InsertOracle()
{
// TODO: Modify the connection string and include any
// additional required properties for your database.
conn.ConnectionString =
"Data Source=DEVELOP_ORASRVDEV03;" + //schema bbdd
"User ID=xxxxx;" + //usuario
"Password=xxxxxxxxx"; //password
conn.Open();//--abrimos conexion
//Declaro una variable de tipo command del oracle
System.Data.OracleClient.OracleCommand MiComando
= new System.Data.OracleClient.OracleCommand();
foreach (CabPedido MiPedido in ListaPedidos)
{
foreach (CabTicket MiTicket in ListaTickets)
{
foreach (CabOperac MiOperacion in ListaOperacionesT)
{
System.Data.OracleClient.OracleParameter var1;
System.Data.OracleClient.OracleParameter var2;
System.Data.OracleClient.OracleParameter var3;
var1
= new System.Data.OracleClient.OracleParameter(); var2
= new System.Data.OracleClient.OracleParameter(); var3
= new System.Data.OracleClient.OracleParameter();
var1.OracleType = System.Data.OracleClient.OracleType.Int32;
var2.OracleType = System.Data.OracleClient.OracleType.VarChar;
var3.OracleType = System.Data.OracleClient.OracleType.VarChar;
var1.Value = CPedido.idPedidoTienda;
var2.Value = CTicket.CodigoBarras;
var3.Value = COperac.FechaOperacionTaller;
MiComando.Parameters.Clear();
try
{
string oracle = "Insert into TO_PRUEBAS" +
"(IDPEDIDO,CODIGOBARRAS,FECHA)" +
"values('" + var2.Value + "'," + var1.Value + ",'" +
(Convert.ToDateTime(var3.Value)) + "')";
MiComando
= new OracleCommand
(oracle, conn
); MiComando.ExecuteNonQuery();
MessageBox.Show("Ejecución realizada con éxito", "INFO",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception err)
{
MessageBox.Show("Error..." + err.Message, "ERROR",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
conn.Close();//--cerramos conexión
File.Delete("C:/Users/davidms/Desktop/temp/OutputXml1.xml");
File.Delete("C:/Users/davidms/Desktop/temp/OutputXml2.xml");
File.Delete("C:/Users/davidms/Desktop/temp/OutputXml3.xml");
}
}
}
}
public class CabPedido //dentro el XML la primera tabla que
//indica en este caso PEDIDOTIENDA
{
public long idPedidoTienda;
public int Pedido;
public int IdentidadOrigenPedido;
public string FechaPedido;//si lo pones a String y en el momento del Insert lo conviertes a date,,,mejor
public string CodigoBarras;
public int IdDivisa; //tinyint
public bool AvisarALaRecepcion; //bit --> bool¿?
public bool SMS; //bit
public bool AvisarALaRecepcionCompletaDelPedido; //bit
public int IdCaja; //tinyint
public long IdTicket; //bigint
public int Comodin1;
public int Comodin2;
public int Comodin3;
public int Comodin4;
public bool Comodin5; //bit
public bool Comodin6; //bit
public string Comodin7; //nvarchar(10)
public string Comodin8; //nvarchar(100)
public DateTime Comodin9;
public DateTime Comodin10;
public long IdEmpleado; //bigint
public int IdEntidadDestinoPedido;
public long Comodin11; //bigint
public long Comodin12; //bigint
public int Comodin13; //money
public int Comodin14; //money
public bool Comodin15; //bit
public bool Comodin16; //bit
public DateTime Comodin17;
public DateTime Comodin18;
public string Comodin19;// nvarchar(300)
//public string Comodin20 //xml
public int Categoria1;
public int Categoria2;
public int Categoria3;
public int Categoria4;
public int Categoria5;
}
public class CabTicket//XML Tickets
{
public long IdTicket;//bigint
public int IdEntidad;
public int IdCaja;//tinyint
public int NumeroTicket;
public string Fecha;//DateTime
public int IdTipoTicket;
public int IdCajaSesion;
public long IdEmpleado;//bigint
public decimal PorcentajeDescuentoGlobal;//numeric(6,3)
public int ImporteDescuentoGlobal;//money
public bool emitido;//bit
public int IdEstadoTicket;
public string CodigoBarras;
public long IdTicketEnlace;
public int Comodin1;
public int Comodin2;
public int Comodin3;
public int Comodin4; //money
public bool Comodin5; //bit
public bool Comodin6; //bit
public string Comodin7; //nvarchar(10)
public string Comodin8; //nvarchar(100)
public DateTime Comodin9;
public DateTime Comodin10;
public long Comodin11; //bigint
public long Comodin12; //bigint
public int Comodin13; //money
public int Comodin14; //money
public bool Comodin15; //bit
public bool Comodin16; //bit
public DateTime Comodin17;
public DateTime Comodin18;
public string Comodin19;// nvarchar(300)
//public string Comodin20 //xml
//en la tabla hay 4 campos más, que no creo pinten nada..
}
public class CabOperac //XML OperacionesTalleresHistorico
{
public long IdOperacionTallerHistorico;//bigint
public long IdOperacionTaller;//bigint
public string FechaOperacionTaller;//DATETIME
public string DescripcionGeneradaReparacion;
public bool SolicitarPresupuesto;//bit
public bool ViajaPieza;//bit
public int PresupuestoOperacionTaller;//money
public bool PresupuestoAceptadoPorCliente;//bit
public bool PresupuestoModificadoPorCentral;//bit
public bool PresupuestoModificadoPorTienda;//bit
public bool InformadoCliente;
}
private void button1_Click(object sender, EventArgs e)
{
RecogerXML();
}
private void button2_Click(object sender, EventArgs e)
{
GetCampos_PedidoTienda();
GetCampos_Ticket();
GetCampos_OperacTaller();
InsertOracle();
}
private void button3_Click(object sender, EventArgs e)
{
this.Close();
}
}
}