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

Llenar un DataSet a partir de una consulta.

Estas en el tema de Llenar un DataSet a partir de una consulta. en el foro de .NET en Foros del Web. Buenas a todos, mi duda es la siguiente: Despues de comprender el funcionamiento de Crystal Reports, ahora necesito que los datos que se pasen al ...
  #1 (permalink)  
Antiguo 10/09/2009, 05:09
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Pregunta Llenar un DataSet a partir de una consulta.

Buenas a todos, mi duda es la siguiente:
Despues de comprender el funcionamiento de Crystal Reports, ahora necesito que los datos que se pasen al infome ya esten filtrados por una consulta.

Normalmente cuando vamos a llenar el un DataSet lo hacemos a partir de los datos que se cargan de la BDD y que contiene nuestro DataAdapter.

En mi caso cargo todas las tablas en el mismo DS.

Código:
DS_Listados.Clear()
DA_TAusencias.Fill(DS_Listados, "TAusencias")
DA_TFaltas.Fill(DS_Listados, "TFaltas")
DA_TProfesores.Fill(DS_Listados, "TProfesores")
DA_TCargos.Fill(DS_Listados, "TCargos")
DA_TRelaciones.Fill(DS_Listados, "TRelacion")
Bien:
Lo que intento es pasar a un Crystal Reports los datos que unicamente me interesan mostrar, para ello necesito realizar una consulta sobre la tabla TRelación.

La consulta seria mas o menos asi:

Código SQL:
Ver original
  1. SELECT R.CodProf AS Codigo, SUM(R.NumHoras) AS Numero Horas
  2. FROM TRelaciones AS R
  3. INNER JOIN TProfesores AS P ON R.CodProf=P.CodProf
  4. WHERE R.FechaInicial = '" Mes.Text "'
  5. AND
  6. R.CodFalta = (SELECT CodFalta FROM TFaltas WHERE Descripcion = "Lectiva")
  7. GROUP BY R.CodProf

Si veis algun error en la consulta avisarme... :D

Mi pregunta es:

Como y donde realizo la consulta para que al codificar el "CrystalReports.SetDataSource(DS_Listados)" Ya contenga los datos que me interesan?
  #2 (permalink)  
Antiguo 10/09/2009, 05:41
 
Fecha de Ingreso: junio-2008
Ubicación: Valencia
Mensajes: 152
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Llenar un DataSet a partir de una consulta.

Yo cargo los datasets del crystal asi:
Código vb.net:
Ver original
  1. Dim adap As New OleDBDataAdapter()
  2.   Dim command3 As New OleDBCommand
  3.  
  4.             command3 = conn.CreateCommand()
  5.             command3.CommandText = sqlGFH
  6.             adap.SelectCommand = command3
  7.             adap.Fill(custDB, "datosCostos")

Donde custDB es mi dataset, "datos costos" es la tabla donde introducire los datos.
Espero te sirva
  #3 (permalink)  
Antiguo 10/09/2009, 06:00
 
Fecha de Ingreso: septiembre-2009
Ubicación: Galicia
Mensajes: 111
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Llenar un DataSet a partir de una consulta.

Hola, tokero!

no sé si es a lo que te refieres, pero yo cuando lleno un dataset creo la consulta a mano, indicándole el filtro que quiera.

Código:
comando = conexion.CreateCommand
comando.CommandText = "SELECT * FROM Tabla WHERE ---"
DataAdapter = New SqlCeDataAdapter(comando)
DataAdapter.Fill(DataSet, "Tabla")
Saludos!
  #4 (permalink)  
Antiguo 10/09/2009, 06:21
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Respuesta: Llenar un DataSet a partir de una consulta.

Gracias por vuestras respuestas!!

lo estoy haciendo mediante

Código CODE:
Ver original
  1. DA_TRelaciones.SelectCommand.CommandText =
  2. "SELECT CodProf as Codigo, SUM(R.NumHoras) AS Numero Horas " _
  3. & "FROM TRelacion AS R " _
  4. & "WHERE R.CodFalta = (SELECT CodFalta FROM TFaltas WHERE Descripcion = 'Lectiva') " _
  5. & "GROUP BY R.CodProf"
  6.  
  7. DA_TRelaciones.Fill(DS_Listados, "TRelacion")
  8.  
  9. Lectivas.SetDataSource(DS_Listados)

Pero me da el siguiente error:

"La instrucción SELECT incluye una palabra reservada, le falta un argumento o está mal escrito, o bien los signos de puntuación no son correctos."

Estoy probando a eliminar algunos apartados pero sigue cascando...
Alguna idea?
  #5 (permalink)  
Antiguo 10/09/2009, 09:29
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Llenar un DataSet a partir de una consulta.

Ojo:

No es recomendable trabajar con los query dentro de la aplicacacion por varios motivos principalmente el momento de accesar los datos y la injeccion Sql

es recomendable trabajar siempre en lo mas posible con Procedimientos Almacenados
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #6 (permalink)  
Antiguo 11/09/2009, 00:45
 
Fecha de Ingreso: septiembre-2009
Ubicación: Galicia
Mensajes: 111
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Llenar un DataSet a partir de una consulta.

Hola!

en la linea

Código:
SELECT CodProf as Codigo, SUM(R.NumHoras) AS Numero Horas
el AS no puede ir separado; tendría que ser NumeroHoras o bien si lo quieres con espacios "Numero Horas" (entre comillas)

Saludos!
  #7 (permalink)  
Antiguo 11/09/2009, 05:15
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Respuesta: Llenar un DataSet a partir de una consulta.

Vamos que no hay manera!!!

No se si tengo alguna incongruencia en la base de datos o que le pasa pero me da errores de varios tipos! si no me da el error arriba descrito me da un error de clave:

Unique, null o foreing key!

Creeis que deshabilitando las restricciones de la base de datos se puede solucionar?

Puede ser tambien a la hora de crear el informe de Crystal que haya relacionado mal las tablas?

Gracias de nuevo!
  #8 (permalink)  
Antiguo 11/09/2009, 10:52
 
Fecha de Ingreso: agosto-2007
Mensajes: 25
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Llenar un DataSet a partir de una consulta.

amigo los ejemplos dados efectivamente solucionan tu problema...!!!

ahora cuando tienes tablas con llaves foraneas y vas llenando datatatables se van con las mismas propiedades

entonces debes tener mucho cuidado con tus consultas y sobre todo la estructura de tablas

ahora la solucion no es deshabiltar restricciones, eso es lo ultimo que haria, ya que estarias rompiendo tus mismas reglas de BD

mi consejo es que cheques tu estructura y la forma en la que estas llenando tus tablas..!!!

suerte y saludos...!!!
  #9 (permalink)  
Antiguo 12/09/2009, 19:24
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Respuesta: Llenar un DataSet a partir de una consulta.

Ok muchisimas gracias!

Creo que el problema reside en la forma de crear los informes... al usar el asistente no estoy configurando bien las tablas!

Aver si lo soluciono!!

Un saludo!
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 12:05.