CLR: .Net / Mono / Boo / Otros CLR > C#

 DataSet?

(1/1)

+Onis:
Hola, ante todo gracias por leer este mensaje,…ya hace tiempo que mantengo una lucha con este programa, el cual recoge   un XML de una tabla de SQL, lo desglosa e inserta los campos necesarios en una o varias tablas de ORACLE.
Demomento, en lo que veis de código(es una version mini del programa grande), recojo un solo XML desde un id concreto de operación y un id concreto de tabla…lo que querria es poder automatizar este select y solo tener que especificarle el idtabla,,,y que él solito vaya cogiendo todos los xml con el idtabla=122, en este caso,,y los vaya insertando en la tabla de oracle,,,en vez de ir 1 por 1 a manija concretandole el idoperacion. Me supongo que para ello seria necesario un “datatable”, pero no entiendo la mecánica, si me podeis enseñar como, lo agradeceria enormemente.
MUCHAS GRACIAS.




--- Código: C# ---namespace TO_REC{    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();          //Instanciamos el objeto de la estructura          CabPedido CPedido         =  new CabPedido();             PedidoDetalle PDetalle    =  new PedidoDetalle();          private void RecogerXML()        {             XmlDocument doc1 = new XmlDocument();                        SqlConnection cnn = new SqlConnection(cnnStrTPV);             cnn.Open();             LoadXml1(cnn, doc1);             cnn.Close();             doc1.Save("C:\\Users\\dnonis\\Desktop\\temp\\OutputXml1.xml");                    }           protected bool LoadXml1(SqlConnection cnn, XmlDocument doc1)        {            //Leemos el campo serialización(XML) de la bbdd.               idtabla = 122;//pedidostiendas            Id = //100019014084;                 //100163019855;                  1001310122429;                 //100152014221;             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"));                    doc1.LoadXml(MiXml.Value);                    return true;                }                else                {                    return false;                }            }        }         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/dnonis/Desktop/temp/OutputXml1.xml");//ruta del archivo xml             XmlNodeList pedidostiendas =                xDoc.GetElementsByTagName("PedidoTienda");//idtabla=122-->PedidosTiendas              foreach (XmlElement nodo in pedidostiendas)            {                                 CPedido.IdPedidoTienda = Convert.ToUInt64(nodo.GetElementsByTagName("IdPedidoTienda")[0].InnerText);//nodo xsi.nil                 CPedido.IdentidadOrigenPedido = Convert.ToInt32(nodo.GetElementsByTagName("IdEntidadOrigenPedido")[0].InnerText);                 CPedido.FechaPedido = nodo.GetElementsByTagName("FechaPedido")[0].InnerText;                 CPedido.CodigoBarras = nodo.GetElementsByTagName("CodigoBarras")[0].InnerText;                 CPedido.IdDivisa = Convert.ToInt32(nodo.GetElementsByTagName("IdDivisa")[0].InnerText);                 CPedido.IdTicket = nodo.GetElementsByTagName("IdTicket")[0].InnerText;                 CPedido.Comodin2 = nodo.GetElementsByTagName("Comodin2")[0].InnerText;                 CPedido.Comodin8 = nodo.GetElementsByTagName("Comodin8")[0].InnerText;                 CPedido.IdEmpleado = nodo.GetElementsByTagName("IdEmpleado")[0].InnerText;                                ListaPedidos.Add(CPedido);                          }              XmlNodeList pedidostiendasDetalleCollection =                xDoc.GetElementsByTagName("PedidoTiendaDetalleCollection");                XmlNodeList PedidoTiendaDetalle =                  ((XmlElement)pedidostiendasDetalleCollection[0]).GetElementsByTagName("PedidoTiendaDetalle");                             foreach (XmlElement nodo1 in PedidoTiendaDetalle)                 {                     PDetalle.IdPedidoTienda1 = Convert.ToUInt64(nodo1.GetElementsByTagName("IdPedidoTienda")[0].InnerText);                                        PDetalle.Linea = Convert.ToInt32(nodo1.GetElementsByTagName("Linea")[0].InnerText);                                        PDetalle.IdTipoPedido = Convert.ToInt32(nodo1.GetElementsByTagName("IdTipoPedido")[0].InnerText);                                        PDetalle.IdEntidadDestinoPedido = Convert.ToInt32(nodo1.GetElementsByTagName("IdEntidadDestinoPedido")[0].InnerText);                                        PDetalle.FechaPrevistaEntregaEnTienda = nodo1.GetElementsByTagName("FechaPrevistaEntregaEnTienda")[0].InnerText;                                        PDetalle.FechaEfectivaEntregaEnTienda = nodo1.GetElementsByTagName("FechaEfectivaEntregaEnTienda")[0].InnerText;                                        PDetalle.IdArticuloVariante = nodo1.GetElementsByTagName("IdArticuloVariante")[0].InnerText;                                        PDetalle.Unidades = nodo1.GetElementsByTagName("Unidades")[0].InnerText;                                        PDetalle.UnidadesServidas = nodo1.GetElementsByTagName("UnidadesServidas")[0].InnerText;                                        PDetalle.UnidadesCanceladas = nodo1.GetElementsByTagName("UnidadesCanceladas")[0].InnerText;                                        PDetalle.PrecioVenta = nodo1.GetElementsByTagName("PrecioVenta")[0].InnerText;                                        PDetalle.CodigoBarras = nodo1.GetElementsByTagName("CodigoBarras")[0].InnerText;                                        PDetalle.IdPrioridadPedido = Convert.ToInt32(nodo1.GetElementsByTagName("IdPrioridadPedido")[0].InnerText);                     if (PDetalle.IdReserva == null) { PDetalle.IdReserva = Convert.ToUInt32(nodo1.GetElementsByTagName("IdReserva")[0].InnerText); }                     if (PDetalle.IdValija == null)  { PDetalle.IdValija = Convert.ToUInt32(nodo1.GetElementsByTagName("IdValija")[0].InnerText); }                     if (PDetalle.IdEstadoPedido == null) { PDetalle.IdEstadoPedido = Convert.ToInt32(nodo1.GetElementsByTagName("IdEstadoPedido")[0].InnerText); }                     PDetalle.notas = nodo1.GetElementsByTagName("Observaciones")[0].InnerText;                  ListaPedidos.Add(PDetalle);                 }        }         public void InsertPedidosTotalOracle()        {             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();            System.Data.OracleClient.OracleCommand MiComando2= new System.Data.OracleClient.OracleCommand();                         /*OracleTransaction transaction1;            OracleTransaction transaction2;*/             ////////-------------------            System.Data.OracleClient.OracleParameter var1 = new System.Data.OracleClient.OracleParameter();            var1.OracleType = System.Data.OracleClient.OracleType.UInt32;                        if (CPedido.IdTicket == "") { var1.Value = Convert.ToUInt64(0); }            else if (CPedido.IdTicket != "") { var1.Value = Convert.ToUInt64(CPedido.IdTicket); }            else { var1.Value = Convert.ToUInt32(0); }            ////////-------------------            System.Data.OracleClient.OracleParameter var2 = new System.Data.OracleClient.OracleParameter();            var2.OracleType = System.Data.OracleClient.OracleType.Int32;                        if (CPedido.Comodin2 == "") { var2.Value = Convert.ToInt32(0); }            else if (CPedido.Comodin2 != "") { var2.Value = Convert.ToInt32(CPedido.Comodin2); }            else { var2.Value = Convert.ToUInt32(0); }            ////////-------------------            System.Data.OracleClient.OracleParameter var3 = new System.Data.OracleClient.OracleParameter();            var3.OracleType = System.Data.OracleClient.OracleType.UInt32;                        if (CPedido.IdEmpleado == "") { var3.Value = Convert.ToUInt64(0); }            else if (CPedido.IdEmpleado != "") { var3.Value = Convert.ToUInt64(CPedido.IdEmpleado); }            else { var3.Value = Convert.ToUInt32(0); }            ////////-------------------            System.Data.OracleClient.OracleParameter var4 = new System.Data.OracleClient.OracleParameter();            var4.OracleType = System.Data.OracleClient.OracleType.VarChar;             if (PDetalle.FechaPrevistaEntregaEnTienda == "") { var4.Value = "null"; }            else { var4.Value = Convert.ToDateTime(PDetalle.FechaPrevistaEntregaEnTienda); }            ////////-------------------            System.Data.OracleClient.OracleParameter var5 = new System.Data.OracleClient.OracleParameter();            var5.OracleType = System.Data.OracleClient.OracleType.VarChar;             if (PDetalle.FechaEfectivaEntregaEnTienda == "") { var5.Value = "null"; }            else { var5.Value = Convert.ToDateTime(PDetalle.FechaEfectivaEntregaEnTienda); }            ////////-------------------                         MiComando.Parameters.Clear();            /* // Start a local transaction            transaction2 = conn.BeginTransaction(IsolationLevel.ReadCommitted);            // Assign transaction object for a pending local transaction             MiComando2.Transaction = transaction2;            */            try            {                string numTPV=Convert.ToString(CPedido.IdPedidoTienda);                string numTPVsbtr= numTPV.Substring(7,2);                 //string numTicket = Convert.ToString(CPedido.IdTicket);                //string numTicketsbtr = numTicket.Substring(10, (numTPV.Length));                                 string oracle = "Insert into TO_REC_PEDIDOS_TIENDAS_CAB" +                                "(CODIGO_EMPRESA,NUMERO_PEDIDO,TIENDA_ORIGEN,FECHA_PEDIDO,"+                                "CODIGO_BARRAS_PEDIDO,CODIGO_DIVISA," +                                "NUMERO_TPV,NUMERO_TIQUET,CLIENTE_DESTINO,PEDIDO_ORIGINAL_XTRELA," +                                "CODIGO_TRABAJADOR,PERSONA_PEDIDO)" +                                "VALUES('1234D',"+CPedido.IdPedidoTienda+"," +CPedido.IdentidadOrigenPedido+ ",'"+                                Convert.ToDateTime(CPedido.FechaPedido)+"','"+CPedido.CodigoBarras+"',"+CPedido.IdDivisa+ ","+                                 Convert.ToInt32(numTPVsbtr)+","+var1.Value+",'EJEMPLO',"+                                 var2.Value+","+var3.Value+",'"+CPedido.Comodin8+"')";                  string oracle_= "Insert into TO_REC_PEDIDOS_TIENDAS_LIN" +                                "(CODIGO_EMPRESA,NUMERO_PEDIDO,NUMERO_LINEA,TIPO_PEDIDO," +                                "CLIENTE_DESTINO,FECHA_ENTREGA_PREVISTA,FECHA_ENTREGA_REAL,"+                                "CODIGO_ARTICULO,UNIDADES_PEDIDAS,UNIDADES_SERVIDAS,UNIDADES_CANCELADAS,"+//,"+                                "PRECIO_VENTA,CODIGO_BARRAS_SOBRE,PRIORIDAD_PEDIDO,"+                                "NUMERO_RESERVA,NUMERO_VALIJA,STATUS_PEDIDO,"+                                "OBSERVACIONES)"+                                "VALUES('1234D',"+PDetalle.IdPedidoTienda1+","+PDetalle.Linea+",'"+                                PDetalle.IdTipoPedido+"','"+PDetalle.IdEntidadDestinoPedido+"','"+                                var4.Value+"','"+var5.Value+"','"+                                PDetalle.IdArticuloVariante+"','"+(PDetalle.Unidades)+"','"+                                (PDetalle.UnidadesServidas)+"','"+(PDetalle.UnidadesCanceladas)+"','"+                                PDetalle.PrecioVenta+"','"+PDetalle.CodigoBarras+"',"+PDetalle.IdPrioridadPedido+","+                                PDetalle.IdReserva+","+PDetalle.IdValija+","+                                PDetalle.IdEstadoPedido+","+PDetalle.notas+")";                                                               MiComando = new OracleCommand(oracle, conn);                MiComando.ExecuteNonQuery();                 MiComando2 = new OracleCommand(oracle_, conn);                MiComando2.ExecuteNonQuery();                                //transaction2.Commit();                 MessageBox.Show("Ejecución realizada con éxito", "INFO",                   MessageBoxButtons.OK, MessageBoxIcon.Information);                             }            catch (Exception err)            {                                //transaction2.Rollback();                 MessageBox.Show("Error..." + err.Message, "ERROR",                  MessageBoxButtons.OK, MessageBoxIcon.Error);                 MessageBox.Show("Para más información consulte con su Administrador");             }             conn.Close();//--cerramos conexión              this.Close();//cerramos y salimos de la aplicación         }               public class CabPedido //--> .:Oracle:. "TO_REC_PEDIDOS_TIENDAS_CAB"        {             //Codigo_Empresa            public ulong IdPedidoTienda;            public int IdentidadOrigenPedido;            public string FechaPedido;            public string CodigoBarras;            public int IdDivisa;//tinyint             public string IdTicket;//bigint             //cliente_destino            public string Comodin2;            public string Comodin8;//nvarchar(100)             public string IdEmpleado;//bigint             //Fecha_Grabacion        }                         public class PedidoDetalle //--> "TO_REC_PEDIDOS_TIENDAS_LIN"        {            //Codigo_Empresa            public ulong IdPedidoTienda1;            public ulong IdPedidoTiendaDetalle;//¿¿??            public int Linea;            public int IdTipoPedido;            public int IdEntidadDestinoPedido;            public string FechaPrevistaEntregaEnTienda;//DATETIME            public string FechaEfectivaEntregaEnTienda;//DATETIME            //fecha real de entrega a cliente            public string IdArticuloVariante;            public string Unidades;//Numeric(11,4)            public string UnidadesServidas;//Numeric(11,4)            public string UnidadesCanceladas;//Numeric(11,4)            public string PrecioVenta;//money            public string CodigoBarras;            public int IdPrioridadPedido;            public long IdReserva;//long            public long IdValija;//long            public int IdEstadoPedido;            public string notas;            //Fecha_Grabacion        }         private void button4_Click(object sender, EventArgs e)        {            RecogerXML();            GetCampos_PedidoTienda();            InsertPedidosTotalOracle();              this.Close();         }    }}  

+Onis:
En el titulo del post , indique DATASET,,,,queria decir DATATABLE..

Gracias.

Navegación

[0] Índice de Mensajes

Ir a la versión completa