Visual Basic.NET - Procedimiento Almacenado

 
Vista:

Procedimiento Almacenado

Publicado por Mauro Vilosio (14 intervenciones) el 11/05/2009 01:10:34
Hola a todos,

Les escribo para realizarles una consulta, ya que estoy trabado en este tema y no se como seguir. Voy a tratar de explicarlo de la mejor manera posible para que me entiendan.

En mi BD tengo el siguiente Procedimiento Almacenado:

CREATE PROCEDURE [dbo].[PedidosGetResultadosAll]

AS
Select Id_Pedido, Fecha, Apellido, Nombre From Pedidos, Pacientes
where Pedidos.Id_His=Pacientes.Id_His
and Pedidos.Estado=0
return

GO

Este procedimiento funciona correctamente. Mi problema es como llamarlo desde VB.Net. Yo lo estoy haciendo de esta manera, pero está mal porque solamente tengo en cuenta la Tabla Pedidos y no la de Pacientes y no se como hacer para que me traiga los datos que yo quiero. El código en VB.Net es el siguiente:

Public Function PedidosGetResultadosAll() As CapaEntidades.Pedidos
Using oCnn As SqlConnection = CreateConnection()
oCnn.Open()
Using ocmd As New SqlCommand
ocmd.Connection = oCnn
ocmd.CommandType = CommandType.StoredProcedure
ocmd.CommandText = "PedidosGetResultadosAll"
Dim oReader As SqlDataReader
Dim oCol As New CapaEntidades.Pedidos
oReader = ocmd.ExecuteReader
Do While oReader.Read
Dim oPedido As New CapaEntidades.Pedido
oPedido.Id_Pedido = oReader("Id_Pedido")
oPedido.Id_His = oReader("Id_His")
oPedido.Matricula = oReader("Matrícula")
oPedido.Estado = oReader("Estado")
oPedido.Fecha = oReader("Fecha")
oPedido.Hora = oReader("Hora")
oCol.Add(oPedido)
Loop
Return oCol
End Using
End Using
End Function

Basicamente no se como hacer que esta funcion me devuelva datos del pedido y datos del paciente.

Espero que me hayan entendido y puedan ayudarme, porque estoy perdido.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

RE:Procedimiento Almacenado

Publicado por roger (186 intervenciones) el 11/05/2009 15:55:24
estas un poco confundido, mira, el codigo en VB lo tienes bien, lo que pasa es que los campos que quieres recuperar en tu codigo los debes incluir en la consulta del procedimiento almacenado, y en el select solo tienes
" Id_Pedido, Fecha, Apellido, Nombre ", seria cuestion agregues el resto de campos en el select
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento Almacenado

Publicado por Mauro Vilosio (14 intervenciones) el 11/05/2009 20:02:20
Hola roger,

Primero te quería agradecer por la rapidez para contestarme. Lo que vos decís estña perfecto, el problema es que no sé como hacerlo. En el Procedimiento Almacenado que está en la BD yo traigo datos de 2 tablas (este procedimiento funciona correcto, porque lo ejecute y funciona bien). Mi problema es que la función que tengo en VB.Net para ejecutar el procedimiento almacenado solamente devuelve datos de la tabla Pedidos y no sé como hacer que me devuelva datos de las 2 tablas involucradas en el Procedimiento Almacenado. Si yo ejecuto esto no me da ningún error, pero solamente me trae la información de los campos Id_Pedido y Fecha que hacen referencia a la Tabla Pedidos y los otros 2 campos (Nombre y Apellido me los trae vacíos).

Espero que se entienda mi duda.

Muchas gracias y Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:Procedimiento Almacenado

Publicado por roger (186 intervenciones) el 11/05/2009 23:48:01
o sea, cuantos campos llames en el select, esos mismos se te cargaran en el reader, si en base de datos la consulta te trae el nombre y apellido vacios, tambien en el reader se veran vacios, si en base de datos la consulta trae el campo fecha o id_pedido, el reader tambien los tendrá, lo unico que yo alcanzo a ver con el codigo que posteaste, es, que teniendo el procedimiento llamando a una lista de campos, luego se trata de obtener el valor de uno o mas campo, que no estan dentro de esa lista.

Ejemplo
Create procedure getTodo()
as
begin
select nombre from tabla
end

y en el codigo

nombre = oReader("nombre")
fecha = oreader("Fecha")'no lo trae porque no esta en la lista de selección

Entonces no se si estoy entendiendo mal, pero lo que veo es eso, que te faltan columnas por poner en el select, para poder que se vean desde tu codigo en VB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento Almacenado

Publicado por Mauro Vilosio (14 intervenciones) el 12/05/2009 00:18:23
claro, los campos nombre y apellido me vienen vaciós porque no los pongo en el reader. el tema es que no se como agregarlos en la función de vb.net a esos campos, porque en la función solamente traigo campos de la tabla pedidos. Mi pregunta es: Se puede realizar una funcion como la que yo muestro, pero que devuelva datos de dos tablas?

Public Function PedidosGetResultadosAll() As CapaEntidades.Pedidos (aca falta la parte de la otra tabla)
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento Almacenado

Publicado por Mauro Vilosio (14 intervenciones) el 12/05/2009 01:59:04
Ya pude solucionarlo.

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:Procedimiento Almacenado

Publicado por roger (186 intervenciones) el 12/05/2009 15:09:11
me podrias decir como lo solucionaste?, como lo veo tendrias que agregar esas propiedades en la tabla de pedidos, pero seria medio raro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento Almacenado

Publicado por Mauro Vilosio (14 intervenciones) el 14/05/2009 02:29:11
El Problema era que yo tenía creado 2 Objetos (Pedidos y Pacientes) cuando yo creaba la función que llamaba al Procedimiento Almacenado esta función me devolvía solamente datos del objeto Pedido y no podía hacer que me devuelva de la otra tabla. Lo que hice fue crear un objeto que contenga como propiedades los 4 campos que yo necesito (2 de la Tabla Pedidos y 2 de la Tabla Pacientes) y me funcionó correctamente.

Espero que me hayas entendido.

Muchas gracias y saludos,

Mauro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar