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

duda try...catch...endtry y consulta SQL en VB net

Estas en el tema de duda try...catch...endtry y consulta SQL en VB net en el foro de .NET en Foros del Web. Buenas, veréis tengo un problema con una cosa, y es que intento meter en una variable unos datos que tengo en la base de datos... ...
  #1 (permalink)  
Antiguo 10/03/2010, 16:40
 
Fecha de Ingreso: febrero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 0
duda try...catch...endtry y consulta SQL en VB net

Buenas,

veréis tengo un problema con una cosa, y es que intento meter en una variable unos datos que tengo en la base de datos... primero el código y ahora os cuento:

Código vb:
Ver original
  1. 'Consulto el nombre de la DIETA y RUTINA asignadas...
  2.            Dim TablaNombreDietaRutina As New DataTable
  3.             TablaNombreDietaRutina.Clear()
  4.             Dim DatAdpt As New SQLiteDataAdapter("SELECT DIETA.nombre, RUTINA.nombre FROM CLIENTES INNER JOIN DIETA on DIETA.id_dieta=CLIENTES.id_dieta INNER JOIN RUTINA on RUTINA.id_rutina=CLIENTES.id_rutina WHERE CLIENTES.activo=1 AND CLIENTES.id_cliente='" & id_clienteSeleccionado & "'", conexion)
  5.             DatAdpt.Fill(TablaNombreDietaRutina)
  6.             '... y me lo copio en variables
  7.            Try 'Probamos si tiene una dieta asignada
  8.                dieta = Convert.ToString(TablaNombreDietaRutina.Rows(0).Item(0)) 'solo hay una fila en la tabla
  9.            Catch ex As Exception 'si no la tiene....
  10.                dieta = "Sin asignar"
  11.             End Try
  12.             Try 'probamos si tiene una rutina...
  13.                rutina = Convert.ToString(TablaNombreDietaRutina.Rows(0).Item(1)) 'solo hayt dos items en la tabla (DIETA.nombre, RUTINA.nombre)
  14.            Catch ex As Exception 'si no la tiene...
  15.                rutina = "Sin asignar"
  16.             End Try

Veamos. Tengo una tabla CLIENTES una tabla RUTINA y otra DIETA, bueno, pues cuando lo pongo así solo me pone la variable con su valor correcto si el cliente tiene asociado una dieta y una rutina (o si no tiene ninguna de las dos cosas asignadas). Si solo tiene una de éstas me dice en las dos "Sin asignar". Debugando he visto que esto es porque cuando yo hago la consulta:

Código SQL:
Ver original
  1. SELECT DIETA.nombre, RUTINA.nombre FROM CLIENTES INNER JOIN DIETA ON DIETA.id_dieta=CLIENTES.id_dieta INNER JOIN RUTINA ON RUTINA.id_rutina=CLIENTES.id_rutina WHERE CLIENTES.activo=1 AND CLIENTES.id_cliente='" & id_clienteSeleccionado & "

Si "CLIENTES.id_dieta" o "CLIENTES.id_rutina" está vacío no me devuelve ninguno de los dos resultados. Yo quiero que me devuelva: ninguna id, una id, la otra id o las dos ids... no se si me explico.

He pensado en hacerlo separando la consulta en dos, pero esto esta en el evento de hacer click en un listBox y no se si sería muy lento...

Solo como dato:
La relación CLIENTES-RUTINA es de 1...1 en la bdd
La relación CLIENTES-DIETA es de 1...1 en la bdd

Se os ocurre alguna otra solución a este problema?
  #2 (permalink)  
Antiguo 10/03/2010, 18:10
 
Fecha de Ingreso: septiembre-2007
Mensajes: 51
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: duda try...catch...endtry y consulta SQL en VB net

lo que pasa es que con el inner join forzas a que el resultado de la consulta dependa de que los datos existan en las 2 tablas (DIETA y RUTINA) que unes a tu tabla pivote (CLIENTES). Usa LEFT en lugar de INNER, pero te aviso que si por ejemplo un cliente no tiene relacionada una rutina pero si tiene una dieta, el nombre de la rutina aparecerá obviamente en NULL y VS,
si el cliente no tiene ninguna relacion ni de dieta ni de rutina, los 2 campos te daran como resultado valores NULL....

Espero te sirva de algo....

Saludos desde Sinaloa, México...
  #3 (permalink)  
Antiguo 11/03/2010, 05:02
Avatar de Valery-Net  
Fecha de Ingreso: agosto-2008
Mensajes: 694
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: duda try...catch...endtry y consulta SQL en VB net

Correcto, debes cambiar el inner por left
  #4 (permalink)  
Antiguo 11/03/2010, 11:39
 
Fecha de Ingreso: febrero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: duda try...catch...endtry y consulta SQL en VB net

Pues sí, era eso, muchas gracias :D

Etiquetas: sql, vb
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:43.