Principales respuestas
Grabar Cabecera y Detalle en un solo SP

Pregunta
-
Hola a todos, la consulta es la siguiente :
Tengo un punto de venta, donde tengo la cabecera en textbox y el detalle en un datagridview, lo que necesito es pasar los parametros de la cabecera al sql, ahi no veo mayor problema. El inconveniente es como paso el datagridview(los detalles) que puede ser 1,2,3, 12 registros al procedimiento almacenado. Asimismo, en el SP como recepciono ese datagridview o tabla para recorrerlo e hacer el insert.
Gracias por su apoyo.
Armando
Respuestas
-
Podrías colocar un resumen. La idea que tengo es pasar un datatable desde c# al sql server como parámetro, ya que los detalles están en un datagridview y en el sql server recibirlo como variable tipo tabla. Tienes alguna idea sobre ello ?
Armando
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 14:40
-
Hola Armando Salas:
Si se pueden usar un Table Value Parameter, pero normalmente se usan por objetos hermanados con las tablas a las que van a insertar, no para una cabecera y varias lineas metidas a calzador.
No te digo que no funcione, pero seguro que te representa más de un problema.
Yo he realizado algunos ejemplos con mas pena que gloria, porque son realmente un poco "tiquismiquis".
Aunque sigo pensando que deberías de insertar primero la cabecera, y recoger el id de inserción y luego insertar el detalle, porque supongo que el mismo llevará un id que los relaciona.
Aunque en c# lo ejecutes en el mismo método.
Este es uno de los pocos ejemplos que verás por la web, que funcionan con menos columnas en el objeto que en la tabla.
https://www.c-sharpcorner.com/UploadFile/ff2f08/table-value-parameter-use-with-C-Sharp/
Otro importante a tener en cuenta.
https://stackoverflow.com/questions/5595353/how-to-pass-table-value-parameters-to-stored-procedure-from-net-code
Espero te ayude.
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 14:40
Todas las respuestas
-
Hola Armando Salas:
Lo más lógico es separar en dos sp,s. Cuando vas a grabar tu cabecera llamas al sp en una transacción que te devuelve el id, y acto seguido vas llamando al sp de las lineas recorriendo un bucle por todas las filas que tengas que grabar. Cuando terminas el bucle terminas la transacción.
Para realizarlo de una sola pasada, tendrías que montarte un xml y enviar este al sp.
http://www.elguille.info/colabora/NET2006/sebaconte_xml_cabecera_detalle_ejemplo.htm
- Propuesto como respuesta Carlos_Ruiz_M viernes, 26 de abril de 2019 14:47
-
Podrías colocar un resumen. La idea que tengo es pasar un datatable desde c# al sql server como parámetro, ya que los detalles están en un datagridview y en el sql server recibirlo como variable tipo tabla. Tienes alguna idea sobre ello ?
Armando
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 14:40
-
Hola Armando Salas:
Si se pueden usar un Table Value Parameter, pero normalmente se usan por objetos hermanados con las tablas a las que van a insertar, no para una cabecera y varias lineas metidas a calzador.
No te digo que no funcione, pero seguro que te representa más de un problema.
Yo he realizado algunos ejemplos con mas pena que gloria, porque son realmente un poco "tiquismiquis".
Aunque sigo pensando que deberías de insertar primero la cabecera, y recoger el id de inserción y luego insertar el detalle, porque supongo que el mismo llevará un id que los relaciona.
Aunque en c# lo ejecutes en el mismo método.
Este es uno de los pocos ejemplos que verás por la web, que funcionan con menos columnas en el objeto que en la tabla.
https://www.c-sharpcorner.com/UploadFile/ff2f08/table-value-parameter-use-with-C-Sharp/
Otro importante a tener en cuenta.
https://stackoverflow.com/questions/5595353/how-to-pass-table-value-parameters-to-stored-procedure-from-net-code
Espero te ayude.
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 14:40