Foros del Web » Programación para mayores de 30 ;) » .NET »

C#: Validacion Existe? No existe?

Estas en el tema de C#: Validacion Existe? No existe? en el foro de .NET en Foros del Web. Tengo una tabla simple en sql: Codigo INT Descripcion VarChar (10) Se puede validar desde C# si existe el codigo que estoy ingresando por ejemplo ...
  #1 (permalink)  
Antiguo 14/04/2008, 16:33
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
C#: Validacion Existe? No existe?

Tengo una tabla simple en sql:

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)  
Antiguo 14/04/2008, 16:57
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
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
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 15/04/2008, 10:16
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
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)  
Antiguo 15/04/2008, 10:44
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
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:
CREATE Procedure msp_ExisteCodigo
(
@codigo INT
)
AS
BEGIN
   SELECT count(codigo) FROM TABLA WHERE @codigo = codigo
END
los dos te retornan la cantidad de registros con esa combinacion

o podrias hacer

Código:
CREATE Procedure msp_ExisteCodigo
(
@codigo INT
)
AS
BEGIN
   select dbo.fn_ExisteCodigo(@codigo)
END
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.
__________________
roy rojas
Programación en Español: DotNetcr.com
  #5 (permalink)  
Antiguo 15/04/2008, 15:00
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
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)  
Antiguo 15/04/2008, 15:07
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
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
__________________
roy rojas
Programación en Español: DotNetcr.com
  #7 (permalink)  
Antiguo 15/04/2008, 19:02
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
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)  
Antiguo 15/04/2008, 19:36
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
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:
 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
                    }                       
        }
algo asi seria
__________________
roy rojas
Programación en Español: DotNetcr.com
  #9 (permalink)  
Antiguo 15/04/2008, 21:23
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
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/04/2008 a las 21:37
  #10 (permalink)  
Antiguo 16/04/2008, 10:27
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
Re: C#: Validacion Existe? No existe?

Cita:
Iniciado por ManuelV Ver Mensaje
ds = Helper.ObtenerDataTableGetS("[sp_comanda_valproducto]", txtProducto.Text);
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:
DataTable dt = new DataTable();
dt = Helper.ObtenerDataTableGetS("[sp_comanda_valproducto]", txtProducto.Text); 

if (dt.rows.count == 0 )
nos avisas como te fue con esto
__________________
roy rojas
Programación en Español: DotNetcr.com
  #11 (permalink)  
Antiguo 16/04/2008, 10:48
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
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
  #12 (permalink)  
Antiguo 17/04/2008, 15:07
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: C#: Validacion Existe? No existe?

please help!, estoy a punto de lograrlo!
gracias a ustedes en gran parte

manuel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:38.