Retroceder   Foros del Web > Programación para sitios web > .NET > win forms

Respuesta
 
Herramientas Desplegado
Antiguo 14-abr-2008, 16:33   #1 (permalink)
ManuelV está en el buen camino
 
Fecha de Ingreso: octubre-2003
Mensajes: 92
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.
ManuelV está desconectado   Responder Citando
Antiguo 14-abr-2008, 16:57   #2 (permalink)
Peterpay está en el buen camino
 
Avatar de Peterpay
 
Fecha de Ingreso: septiembre-2007
Ubicación: Mexico
Mensajes: 1.569
Enviar un mensaje por MSN a Peterpay Enviar un mensaje por Skype™ a Peterpay
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
Peterpay esta en línea ahora   Responder Citando
Antiguo 15-abr-2008, 10:16   #3 (permalink)
ManuelV está en el buen camino
 
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
ManuelV está desconectado   Responder Citando
Antiguo 15-abr-2008, 10:44   #4 (permalink)
royrojas está en el buen camino
 
Avatar de royrojas
 
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:
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
sitio: DotNetcr.com | foro: ForosDotNet.com | blog: the news star
royrojas está desconectado   Responder Citando
Antiguo 15-abr-2008, 15:00   #5 (permalink)
ManuelV está en el buen camino
 
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
ManuelV está desconectado   Responder Citando
Antiguo 15-abr-2008, 15:07   #6 (permalink)
royrojas está en el buen camino
 
Avatar de royrojas
 
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
__________________
roy rojas
sitio: DotNetcr.com | foro: ForosDotNet.com | blog: the news star
royrojas está desconectado   Responder Citando
Antiguo 15-abr-2008, 19:02   #7 (permalink)
ManuelV está en el buen camino
 
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
ManuelV está desconectado   Responder Citando
Antiguo 15-abr-2008, 19:36   #8 (permalink)
royrojas está en el buen camino
 
Avatar de royrojas
 
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:
 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
sitio: DotNetcr.com | foro: ForosDotNet.com | blog: the news star
royrojas está desconectado   Responder Citando
Antiguo 15-abr-2008, 21:23   #9 (permalink)
ManuelV está en el buen camino
 
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.
ManuelV está desconectado   Responder Citando
Antiguo 16-abr-2008, 10:27   #10 (permalink)
royrojas está en el buen camino
 
Avatar de royrojas
 
Fecha de Ingreso: diciembre-2004
Mensajes: 377
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
sitio: DotNetcr.com | foro: ForosDotNet.com | blog: the news star
royrojas está desconectado   Responder Citando
Antiguo 16-abr-2008, 10:48   #11 (permalink)
ManuelV está en el buen camino
 
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
ManuelV está desconectado   Responder Citando
Antiguo 17-abr-2008, 15:07   #12 (permalink)
ManuelV está en el buen camino
 
Fecha de Ingreso: octubre-2003
Mensajes: 92
Re: C#: Validacion Existe? No existe?

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

manuel
ManuelV está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 16:11.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93