• Domingo 22 de Diciembre de 2024, 15:13

Autor Tema:  Creando Consulta En Tiempo De Ejecución  (Leído 1709 veces)

marto

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Creando Consulta En Tiempo De Ejecución
« en: Jueves 19 de Agosto de 2004, 05:09 »
0
Hola a todos!!!

Os cuento mi problema, estoy haciendo una pantalla de búsqueda sobre una tabla. Tengo un combo en el que me elijen el criterio de búsqueda y un text donde ponen el valor a buscar. Lo que se me ha ocurrido es definir una constante (que en el ejemplo esta como variable) con la parte de la query en comun y añadir el resto en función de la elección, os paso el código.

Código: Text
  1.  
  2. SqlCommand c = new SqlCommand();
  3. c.CommandText = "SELECT id, RazonSocial, Direccion, Cp, Nif FROM Clientes "
  4. c.CommandType = CommandType.Text;
  5. c.Connection = conn;
  6. switch (cbCriterio.SelectedIndex)
  7. {
  8.   case 0:
  9.     c.CommandText += " AND UPPER(RazonSocial) = @razon";
  10.     c.Parameters.Add(new System.Data.SqlClient.SqlParameter("@razon", System.Data.SqlDbType.Variant));
  11.     c.Parameters["@razon"].Value = "%" + txtValor.Text.ToUpper()+ "%";
  12.     break;
  13.   default:
  14.     c.CommandText += " AND UPPER(Nif) = @Nif";
  15.     c.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Nif", System.Data.SqlDbType.VarChar, 9, "Nif"));
  16.     c.Parameters["@Nif"].Value = "%" + txtValor.Text.ToUpper()+ "%";
  17.     break;
  18.  
  19. }
  20. daCli.SelectCommand = c;
  21. dsClientes1.Clientes.Clear();
  22. daCli.Fill(dsClientes1);
  23. grid.DataSource = dsClientes1.Clientes;
  24.  
  25. }
  26.  
  27.  
  28.  

Si ejecuto este código quitando el switch, es decir, sin parametros, funciona ok. Pero poniendo los parámetros, al acer el fill me da este maravilloso error:

"Excepción no controlada del tipo 'System.Data.SqlClient.SqlException' en system.data.dll

Información adicional: Error del sistema."

¿Alguien sabe qué hago mal?
Marto

lechuza

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Creando Consulta En Tiempo De Ejecución
« Respuesta #1 en: Lunes 23 de Agosto de 2004, 18:45 »
0
No es que hagas nada mal( a bote pronto).

 Es que tienes que controlar si sucede la SqlException (si no da encontrado la BD o no puede establecer la conexión o errores varios o si la tabla no es válida).

Lo único que tienes que hacer es meter el código en un bloque try catch para esa exception y ya está.

Espero que se te arregle.

sergiotarrillo

  • Moderador
  • ******
  • Mensajes: 1059
    • Ver Perfil
    • http://sergiot2.com/blog
Re: Creando Consulta En Tiempo De Ejecución
« Respuesta #2 en: Lunes 30 de Agosto de 2004, 05:57 »
0
tu problema esta en la cosulta que agregas a la inicial, para que son los parametros......? :blink:


Sergio Tarrillo
Blog]miBlog[/url]

No me visiten!