Codigo INT
Descripcion VarChar (10)
Se puede validar desde C# si existe el codigo que estoy ingresando por ejemplo en la variabla txtCodigo del formulario, sin necesidad de realizar un procedimiento almacenado.
Manuel.
|
|
#1 (permalink) |
![]() Fecha de Ingreso: octubre-2003
Mensajes: 92
|
C#: Validacion Existe? No existe?
Codigo INT Descripcion VarChar (10) Se puede validar desde C# si existe el codigo que estoy ingresando por ejemplo en la variabla txtCodigo del formulario, sin necesidad de realizar un procedimiento almacenado. Manuel. |
|
|
|
|
|
#2 (permalink) |
![]() |
Re: C#: Validacion Existe? No existe?
con una consulta sea plana o sp tienes q validarlo no hay otra forma, a menos de q tuvieses un cache de aplicacion compartido entre todos tus usarios y validaras si no esta ahi pero es mas complicado
__________________
Saludos Peterpay MCPD Enterprise Applications |
|
|
|
|
|
#3 (permalink) |
![]() Fecha de Ingreso: octubre-2003
Mensajes: 92
|
Re: C#: Validacion Existe? No existe?
en el subforo de sql me dijeron que este sp me podria servir
CREATE FUNCTION fn_ExisteCodigo ( @codigo INT ) RETURNS INT AS BEGIN RETURN EXISTS(SELECT 1 FROM TABLA WHERE @codigo = codigo) END claro que me da un error: Mens 156, Nivel 15, Estado 1, Procedimiento fn_ExisteCodigo, Línea 9 Sintaxis incorrecta cerca de la palabra clave 'EXISTS'. como puedo unir esa funcion desde mi aplicacion c# es decir, despues que se digite en el texbox el codigo, como enlazarlo con la funcion? saludos manuel |
|
|
|
|
|
#4 (permalink) |
![]() Fecha de Ingreso: diciembre-2004
Mensajes: 377
|
Re: C#: Validacion Existe? No existe?
esa es una funcion no un procedimiento.
lo que podrias hacer es consultar un procedimiento o funcion que te retorne un valor numerico
Código:
CREATE FUNCTION fn_ExisteCodigo ( @codigo INT ) RETURNS INT AS BEGIN Declare @valor int SELECT count(codigo) into @valor FROM TABLA WHERE @codigo = codigo return @valor END
Código:
los dos te retornan la cantidad de registros con esa combinacionCREATE Procedure msp_ExisteCodigo ( @codigo INT ) AS BEGIN SELECT count(codigo) FROM TABLA WHERE @codigo = codigo END o podrias hacer
Código:
en cualquier de los casos para hacer eso que necesitas vas a tener que ir a la base de datos a consultar, ya que como dice Peterpay se podria tener la informacion en memoria, pero seria muy costoso para el sistema en almacenamiento, y eso te podria ocacionar otros problemas, en cambio una consulta a la base de datos es rapida y muy liviana.CREATE Procedure msp_ExisteCodigo ( @codigo INT ) AS BEGIN select dbo.fn_ExisteCodigo(@codigo) END |
|
|
|
|
|
#5 (permalink) |
![]() Fecha de Ingreso: octubre-2003
Mensajes: 92
|
Re: C#: Validacion Existe? No existe?
ejecute el sp y me resulto, m devuelve 0 o 1 segun el caso. perfecto!
ahora me gustaria saber como engancho ese sp al txtCodigo que es la variable del form en la cual se tiene que digitar. se que por ahi tendria que ocupar un message.box("no existe") y que quiza previo a eso debiera haber algun if y else...por favor estimados, ayudenme a ordenar la idea. private void txtProducto_TextChanged(object sender, EventArgs e) { if (????? ==0) MessageBox.Show("No existe") else ????? }saludos manuel |
|
|
|
|
|
#6 (permalink) |
![]() Fecha de Ingreso: diciembre-2004
Mensajes: 377
|
Re: C#: Validacion Existe? No existe?
en ese caso lo mas sano es hacerlo en el Leave y no en el Change, o capturar el caracter que estan digitando y validarlo solo si es digitaron un enter.
imaginate que tienes que digitar una palabra de 5 letras, osea de la letra 1 a la 4 te va a salir el mensaje de no existe, me pego un tiro. es mejor que valide una unica ves cuando se termina de digitar y ya sea que abandona el textbox o digita un enter en el textbox |
|
|
|
|
|
#7 (permalink) |
![]() Fecha de Ingreso: octubre-2003
Mensajes: 92
|
Re: C#: Validacion Existe? No existe?
este es mi sp
ALTER Procedure [dbo].[sp_comanda_valproducto] ( @txtProducto VARCHAR(10) ) AS BEGIN SELECT count(codigo) as codigoreturn FROM tbl_producto WHERE @txtProducto = codigo END la ayuda que necesito es como validar lo que ingreso en el txtproducto del form, es decir si el codigo es valido o no...se que el sp, me devuelve un 0 o un 1, pero no se como llenar la parte del private void private void txtProducto_Leave(object sender, System.EventArgs e) { } manuel |
|
|
|
|
|
#8 (permalink) |
![]() Fecha de Ingreso: diciembre-2004
Mensajes: 377
|
Re: C#: Validacion Existe? No existe?
Voy a escribir el codigo sin validarlo en el visual studio, no estoy en mi compu asi que lo tienes que traducir, es casi pseudocidogo lo que voy a poner
Código:
algo asi seria private void txtProducto_Leave(object sender, System.EventArgs e)
{
DataSet ds = new DataSet();
ds = ConsultaBaseDatos(txtCodigo.text);
if ds.tables(0).rows.count > 0 {
//Si existe
}
}
|
|
|
|
|
|
#9 (permalink) |
![]() Fecha de Ingreso: octubre-2003
Mensajes: 92
|
Re: C#: Validacion Existe? No existe?
private void txtProducto_Leave(object sender, System.EventArgs e)
{ DataSet ds = new DataSet(); ds = Helper.ObtenerDataTableGetS("[sp_comanda_valproducto]", txtProducto.Text); if (ds.tables(0).rows.count == 0 ) { MessageBox.Show("No existe!"); } } nota: Helper.ObtenerDataTableGetS, es mi clase para llamar SP por ahi va...solo que me da estos errores: Error 1 No se puede convertir implícitamente el tipo 'System.Data.DataTable' a 'System.Data.DataSet' C:\Proyectos Visual.NET\GesCas\GesCas\ComandaForm.cs 406 22 GesCas Error 2 'System.Data.DataSet' no contiene una definición para 'tables' C:\Proyectos Visual.NET\GesCas\GesCas\ComandaForm.cs 408 28 GesCas manuel Última edición por ManuelV; 15-abr-2008 a las 21:37. |
|
|
|
|
|
#10 (permalink) |
![]() Fecha de Ingreso: diciembre-2004
Mensajes: 377
|
Re: C#: Validacion Existe? No existe?
Cita:
ds.tables.add(Helper......);la funcion que estas consultando del Helper te retorna un datatable o tambien en lugar de haces ds = NewDataset puedes cambiarlo por
Código:
nos avisas como te fue con estoDataTable dt = new DataTable();
dt = Helper.ObtenerDataTableGetS("[sp_comanda_valproducto]", txtProducto.Text);
if (dt.rows.count == 0 )
|
|
|
|
|
|
#11 (permalink) |
![]() Fecha de Ingreso: octubre-2003
Mensajes: 92
|
Re: C#: Validacion Existe? No existe?
como el procedimiento almacenado me pide @txtProducto, ajuste el codigo y lo deje asi:
SqlParameter[] parametros3 = new SqlParameter[1]; parametros3[0] = new SqlParameter("@txtProducto", SqlDbType.Char); parametros3[0].Value = txtProducto.Text; DataTable dt = new DataTable(); dt = Helper.EjecutarProcedimiento "[sp_comanda_valproducto]",parametros3); if (dt.Rows.Count == 0) MessageBox.Show("No existe!"); pero me da el siguiente error: Error 1 No se puede convertir implícitamente el tipo 'void' a 'System.Data.DataTable' C:\Proyectos Visual.NET\GesCas\GesCas\ComandaForm.cs 410 18 GesCas |
|
|
|
![]() |
| Herramientas | |
| Desplegado | |
|
|