Principales respuestas
Carga y modificacion de datos

Pregunta
-
Buenas tardes, les hago 2 pequeñas preguntas. Estoy terminando un proyecto en visual studio 2017 express y sql server 2012. Mis preguntas son las siguientes:
1) Cuando cargo algún producto, ¿Hay alguna forma de que el código empiece con 0? Por ejemplo, tengo un elemento que le quiero asignar el código 00001, me toma el código 1.
2) Cuando consulto un datagridview ¿Como hago para borrar la consulta? Intente con datagridview.rows.clear () y no hace nada.
Desde ya, muchisimas gracias.
Respuestas
-
1) Eso debes hacerlo en la base de datos es mucho mas factible, por ejemplo mira esta imagen.
de esta forma al ingresar cualquier registro el campo de codigo se crea asi "USER000001", en tu caso en el campo de formula solo tendrias que poner right('00000'+ltrim(rtrim('codigo')),5)
donde "codigo" seria el campo de la base de datos donde quiere que obtenga el numero o identificador, por lo general es un campo identy, "00000" aqui pondrias cuanto ceros quieres que aparezcan y "5"es la cantidad de ceros pero en numero.
2) explicame ese punto mejor, cuando haces una consulta a la base de datos y la carga en el datagridview? a eso te refieres?
Alexander Jimenez
- Marcado como respuesta Martin Echeberz lunes, 10 de septiembre de 2018 23:42
-
Hola Martin Echeberz:
1) Cuando cargo algún producto, ¿Hay alguna forma de que el código empiece con 0? Por ejemplo, tengo un elemento que le quiero asignar el código 00001, me toma el código 1.
En la definición de tu tabla el idProducto, lo creas como varchar (5). Cuando insertas un código, bien sea
Puedes hacer algo similar a esto.
CREATE TABLE prod (id VARCHAR(5) PRIMARY KEY, descripcion VARCHAR(10) ); GO INSERT INTO prod (id, descripcion ) VALUES ('00001', 'camisa'); GO ALTER PROCEDURE sp_InsertaProducto(@descripcion VARCHAR(5)) AS BEGIN TRAN; DECLARE @idProd INT; /*advertencia, este sistema de generar el codigo mas 1, no es valido en sistemas donde hay alta concurrencia de datos */ DECLARE @CEROS VARCHAR(5)= '0000'; DECLARE @CODIGO VARCHAR(10); SELECT @idProd = CAST(MAX(id) AS INT) + 1 /* BUSCAMOS EL SIGUIENTE REGISTRO POR NUMERO */ FROM prod; SET @CODIGO = @CEROS + CAST(@IDPROD AS VARCHAR(5)); /*LE AÑADIMOS EL TEXTO */ SELECT @CODIGO = CAST(RIGHT(@CODIGO, 5) AS VARCHAR(5)); /*SOLO COGEMOS LOS 5 CARACTERES DE LA DERECHA*/ INSERT INTO prod ( id, descripcion ) VALUES (@CODIGO, /*INSERTAMOS EL CODIGO CORRESPONDEINTE */ @descripcion /*LE INTRODUCIMOS LO RECIBIDO EN EL PROCEDIMIENTO */ ); IF(@@ERROR = 0) COMMIT TRAN; /*SI TODO VA BIEN, CONFIRMAMOS LA TRANSACCION */ ELSE ROLLBACK TRAN; /*SI NO LA DESHACEMOS */ RETURN; GO /*asi se consume el procedure desde sql */ EXEC sp_InsertaProducto 'CAMIS32'; GO /* visualiza los resultados */ SELECT * FROM PROD;
Esta sería una manera.
2) Cuando consulto un datagridview ¿Como hago para borrar la consulta? Intente con datagridview.rows.clear () y no hace nada.
Leandro Tutitini, en su blog tiene un documento muy bueno en Visual Basic o C# (no has puesto el lenguaje en el que te mueves), para realizar un CRUD, con ADO.NET, que es lo recomenado.
Si lo sigues, aprenderás mucho.
http://ltuttini.blogspot.com/2010/01/adonet-parte-5-ejemplos-simples.html
- Marcado como respuesta Martin Echeberz lunes, 10 de septiembre de 2018 23:45
Todas las respuestas
-
1) Eso debes hacerlo en la base de datos es mucho mas factible, por ejemplo mira esta imagen.
de esta forma al ingresar cualquier registro el campo de codigo se crea asi "USER000001", en tu caso en el campo de formula solo tendrias que poner right('00000'+ltrim(rtrim('codigo')),5)
donde "codigo" seria el campo de la base de datos donde quiere que obtenga el numero o identificador, por lo general es un campo identy, "00000" aqui pondrias cuanto ceros quieres que aparezcan y "5"es la cantidad de ceros pero en numero.
2) explicame ese punto mejor, cuando haces una consulta a la base de datos y la carga en el datagridview? a eso te refieres?
Alexander Jimenez
- Marcado como respuesta Martin Echeberz lunes, 10 de septiembre de 2018 23:42
-
Hola Martin Echeberz:
1) Cuando cargo algún producto, ¿Hay alguna forma de que el código empiece con 0? Por ejemplo, tengo un elemento que le quiero asignar el código 00001, me toma el código 1.
En la definición de tu tabla el idProducto, lo creas como varchar (5). Cuando insertas un código, bien sea
Puedes hacer algo similar a esto.
CREATE TABLE prod (id VARCHAR(5) PRIMARY KEY, descripcion VARCHAR(10) ); GO INSERT INTO prod (id, descripcion ) VALUES ('00001', 'camisa'); GO ALTER PROCEDURE sp_InsertaProducto(@descripcion VARCHAR(5)) AS BEGIN TRAN; DECLARE @idProd INT; /*advertencia, este sistema de generar el codigo mas 1, no es valido en sistemas donde hay alta concurrencia de datos */ DECLARE @CEROS VARCHAR(5)= '0000'; DECLARE @CODIGO VARCHAR(10); SELECT @idProd = CAST(MAX(id) AS INT) + 1 /* BUSCAMOS EL SIGUIENTE REGISTRO POR NUMERO */ FROM prod; SET @CODIGO = @CEROS + CAST(@IDPROD AS VARCHAR(5)); /*LE AÑADIMOS EL TEXTO */ SELECT @CODIGO = CAST(RIGHT(@CODIGO, 5) AS VARCHAR(5)); /*SOLO COGEMOS LOS 5 CARACTERES DE LA DERECHA*/ INSERT INTO prod ( id, descripcion ) VALUES (@CODIGO, /*INSERTAMOS EL CODIGO CORRESPONDEINTE */ @descripcion /*LE INTRODUCIMOS LO RECIBIDO EN EL PROCEDIMIENTO */ ); IF(@@ERROR = 0) COMMIT TRAN; /*SI TODO VA BIEN, CONFIRMAMOS LA TRANSACCION */ ELSE ROLLBACK TRAN; /*SI NO LA DESHACEMOS */ RETURN; GO /*asi se consume el procedure desde sql */ EXEC sp_InsertaProducto 'CAMIS32'; GO /* visualiza los resultados */ SELECT * FROM PROD;
Esta sería una manera.
2) Cuando consulto un datagridview ¿Como hago para borrar la consulta? Intente con datagridview.rows.clear () y no hace nada.
Leandro Tutitini, en su blog tiene un documento muy bueno en Visual Basic o C# (no has puesto el lenguaje en el que te mueves), para realizar un CRUD, con ADO.NET, que es lo recomenado.
Si lo sigues, aprenderás mucho.
http://ltuttini.blogspot.com/2010/01/adonet-parte-5-ejemplos-simples.html
- Marcado como respuesta Martin Echeberz lunes, 10 de septiembre de 2018 23:45
-
Muchisimas gracias por la ayuda.... te cuento, para la carga de datos tengo un formulario, tengo otro para modificar y eliminar y las consultas las hago en un tercer formulario (es mas complicado pero me ayuda a ordenarme). Cuestión que en el de consulta, cuando hago click en consultar, me aparece perfecto la consulta. Ahora, cuando salgo del formulario y vuelvo a entrar, me queda cargada la consulta anterior. Probé con datagridview.rows.clear y no me funciono. Perdón por no expresarme bien.
-