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

llenar dataSet con Store Procedure

Estas en el tema de llenar dataSet con Store Procedure en el foro de .NET en Foros del Web. Hola. Me pudieran orientar: Tengo un store procedure el cual hace un join de varias tablas, ¿Cómo podría llenar un dataSet con todos los registros ...
  #1 (permalink)  
Antiguo 30/03/2009, 15:17
Avatar de dadabit  
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 15 años, 2 meses
Puntos: 1
llenar dataSet con Store Procedure

Hola. Me pudieran orientar:

Tengo un store procedure el cual hace un join de varias tablas,
¿Cómo podría llenar un dataSet con todos los registros que arroje el sp?

Bueno para empezar ni siquiera se, si el sp lo estoy llamando correctamente.
El SP necesita 2 parametros (mes,año).

y la verdad no se mucho sobre el tema,

intente con SqlAdapter, pero no llegue a nada
y tambien con SqlDataReader y tampoco....

estaria agradecido si me dieran pistas, o ya de plano resolverme el lio

gracias de antemano
  #2 (permalink)  
Antiguo 30/03/2009, 17:33
 
Fecha de Ingreso: marzo-2006
Mensajes: 124
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: llenar dataSet con Store Procedure

te paso un ejemplo que yo tengo, no es con sp pero igual y te funciona

SqlDataAdapter dAdapter = new SqlDataAdapter("Select * From Cat_Plantas Where Planta=@Planta", sqlconncirix);
SqlParameter p_planta = dAdapter.SelectCommand.Parameters.Add("@Planta", SqlDbType.Char);
p_planta.Value = Ms_Planta;

DataSet ds = new DataSet();
dAdapter.Fill(ds,"Plantas");
return ds.Tables["Plantas"];
  #3 (permalink)  
Antiguo 31/03/2009, 21:30
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 dataSet con Store Procedure

Puedes Usar Tambien de Esta Forma

public DataTable MostrarConsulta(int Mes,int Anyo)
{
SqlDataAdapter Adp = new SqlDataAdapter(); // Variable q me Tomara Los Datos
SqlParameter Par = new SqlParameter(); // Variable para la Recepcion de Datos
DataSet Datos = new DataSet(); // Creando un DataSet
try
{
Adp.SelectCommand = new SqlCommand(); // Creando una Instancia de SqlCommand
Adp.SelectCommand.Connection = Con; // Indicale tu variable de conexion ojo debes estar conectado a la Base de Datos Primero
Adp.SelectCommand.CommandText = "NOM_PROC"; // Indicamos el nombre del Proc Alm.
Adp.SelectCommand.CommandType = CommandType.StoredProcedure; // Le Decimos q es de Tipo Procedure
Par = Adp.SelectCommand.Parameters.Add("@Mes", SqlDbType.Int, 4); // Creando parametro
Par.Value = 4; // aqui le puedes cambiar por una variable
Par = Adp.SelectCommand.Parameters.Add("@Anyo", SqlDbType.Int, 4);// Creando parametro
Par.Value = 2009; // aqui le puedes cambiar por una variable
Adp.Fill(Datos, "x"); // Ejecutando y Recibiendo la consulta devuelta
}
catch(Exception e){MessageBox.show(null,e.Message,"Aviso");}
return Datos.Tables["x"];
}
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #4 (permalink)  
Antiguo 02/04/2009, 11:21
Avatar de dadabit  
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: llenar dataSet con Store Procedure

Ok. Gracia Dradi7.

Ahora, no se si se pueda desmenuzar los datos en este punto.
Quiero decir, que los valores que me devuelve el SP los pueda guardar en variables
en el cliente. Esto para realizar algunas operaciones con los valores devueltos.

De antemano muchas gracias.
  #5 (permalink)  
Antiguo 02/04/2009, 11:46
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 dataSet con Store Procedure

Pero Especificamente lo vas a querer estos valores para un formulario o para varios formularios se un poco mas especifioc
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #6 (permalink)  
Antiguo 02/04/2009, 11:52
Avatar de dadabit  
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: llenar dataSet con Store Procedure

quiero almacenar estos valores, son como 8, y con estos quiero escribirlos en un .txt...
pero necesito tenerlos en variables para ponerles "|" pipes al escribirlos en el .txt

|valor1|valor2|...|valor8|

Mas o menos eso quiero hacer con los valores

Gracias por tu ayuda
  #7 (permalink)  
Antiguo 02/04/2009, 12:13
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 dataSet con Store Procedure

bueno para esto debes tener una clase para alamacenar dichas variables

en ella crea todas tus variables necesarias

public static int campo1 = 0;
..............
..............
..............
etc

luego creas un proc para guardar dichos datos

public void GuardarDatos()
{
DataTable Dt = new DataTable();
Dt = MostrarConsulta(3,2008); // Proc q Mostre Anteriormente
foreach(DataRow Row in Dt.Rows)
{
// Nota esta Clase debe ser el nombre de tu clase creada donde almacenaste las variables
ClasePrueba.campo1 = Convert.toInt(Row.cells[0].value);
ClasePrueba.campo2 = Convert.toString(Row.cells[1].value);
.................
break;//Cortas el ForEach
}
}

Ahora Puedes Utilizar tus variables para trabajarlas donde quieras
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #8 (permalink)  
Antiguo 06/04/2009, 09:41
Avatar de dadabit  
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: llenar dataSet con Store Procedure

Cita:
Iniciado por Dradi7 Ver Mensaje
Puedes Usar Tambien de Esta Forma

public DataTable MostrarConsulta(int Mes,int Anyo)
{
SqlDataAdapter Adp = new SqlDataAdapter(); // Variable q me Tomara Los Datos
SqlParameter Par = new SqlParameter(); // Variable para la Recepcion de Datos
DataSet Datos = new DataSet(); // Creando un DataSet
try
{
Adp.SelectCommand = new SqlCommand(); // Creando una Instancia de SqlCommand
Adp.SelectCommand.Connection = Con; // Indicale tu variable de conexion ojo debes estar conectado a la Base de Datos Primero
Adp.SelectCommand.CommandText = "NOM_PROC"; // Indicamos el nombre del Proc Alm.
Adp.SelectCommand.CommandType = CommandType.StoredProcedure; // Le Decimos q es de Tipo Procedure
Par = Adp.SelectCommand.Parameters.Add("@Mes", SqlDbType.Int, 4); // Creando parametro
Par.Value = 4; // aqui le puedes cambiar por una variable
Par = Adp.SelectCommand.Parameters.Add("@Anyo", SqlDbType.Int, 4);// Creando parametro
Par.Value = 2009; // aqui le puedes cambiar por una variable
Adp.Fill(Datos, "x"); // Ejecutando y Recibiendo la consulta devuelta
}
catch(Exception e){MessageBox.show(null,e.Message,"Aviso");}
return Datos.Tables["x"];
}
Tengo problemas!!

No guarda nada en el datatable....

Código:
Dim oConn As SqlConnection
                       oConn = New SqlConnection("Server=server\sqlexpress;integrated security=true;database=databases;uid=;pwd=;")
                Dim table As New DataTable
                Dim Adp As New SqlDataAdapter()
                Adp.SelectCommand = New SqlCommand() ' Creando una Instancia de SqlCommand
                Adp.SelectCommand.Connection = oConn 'Conexión
                Adp.SelectCommand.CommandText = "s_proc_SP"
                'oConn.Open()
                Adp.SelectCommand.CommandType = CommandType.StoredProcedure
                Adp.SelectCommand.Parameters.Add("@año", SqlDbType.Int, 4)
                Adp.SelectCommand.Parameters("@año").Value = ano
                Adp.SelectCommand.Parameters.Add("@mes", SqlDbType.Int, 4)
                Adp.SelectCommand.Parameters("@mes").Value = mes
                Adp.Fill(table)
                reportGD.DataSource = table
Me pudieran ayudar a identificar mi error,,
Gracias...
  #9 (permalink)  
Antiguo 06/04/2009, 09:53
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 dataSet con Store Procedure

Tu error puede estar en 2 problemas primero no has abierto la Base de Datos y segundo de repente tu consulta no te devuelve ningun valor

Código:
Dim oConn As SqlConnection
                       oConn = New SqlConnection("Server=server\sqlexpress;integrated security=true;database=databases;uid=;pwd=;")
                if Oconn.state = 1 then Oconn.close()
                Oconn.open()
                Dim table As New DataTable
                Dim Adp As New SqlDataAdapter()
                Adp.SelectCommand = New SqlCommand() ' Creando una Instancia de SqlCommand
                Adp.SelectCommand.Connection = oConn 'Conexión
                Adp.SelectCommand.CommandText = "s_proc_SP"
                Adp.SelectCommand.CommandType = CommandType.StoredProcedure
                Adp.SelectCommand.Parameters.Add("@año", SqlDbType.Int, 4)
                Adp.SelectCommand.Parameters("@año").Value = ano
                Adp.SelectCommand.Parameters.Add("@mes", SqlDbType.Int, 4)
                Adp.SelectCommand.Parameters("@mes").Value = mes
                Adp.Fill(table)
                reportGD.DataSource = table
a ver prueba ahi si es q te sale
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #10 (permalink)  
Antiguo 06/04/2009, 09:53
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 dataSet con Store Procedure

a me olvide al final cierras la conexion para liberar memoria y todo el codigo mostrado anteriormente ponlo dentro de un try catch en caso te genere un error
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #11 (permalink)  
Antiguo 06/04/2009, 09:58
Avatar de dadabit  
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: llenar dataSet con Store Procedure

Pues, ese el principal problema, que no me regresa ningun valor.
Pero el store ya lo probe directo en el DBMS y si funciona....
  #12 (permalink)  
Antiguo 06/04/2009, 10:15
Avatar de dadabit  
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: llenar dataSet con Store Procedure

Cita:
Iniciado por Dradi7 Ver Mensaje
Tu error puede estar en 2 problemas primero no has abierto la Base de Datos y segundo de repente tu consulta no te devuelve ningun valor

Código:
Dim oConn As SqlConnection
                       oConn = New SqlConnection("Server=server\sqlexpress;integrated security=true;database=databases;uid=;pwd=;")
                if Oconn.state = 1 then Oconn.close()
                Oconn.open()
                Dim table As New DataTable
                Dim Adp As New SqlDataAdapter()
                Adp.SelectCommand = New SqlCommand() ' Creando una Instancia de SqlCommand
                Adp.SelectCommand.Connection = oConn 'Conexión
                Adp.SelectCommand.CommandText = "s_proc_SP"
                Adp.SelectCommand.CommandType = CommandType.StoredProcedure
                Adp.SelectCommand.Parameters.Add("@año", SqlDbType.Int, 4)
                Adp.SelectCommand.Parameters("@año").Value = ano
                Adp.SelectCommand.Parameters.Add("@mes", SqlDbType.Int, 4)
                Adp.SelectCommand.Parameters("@mes").Value = mes
                Adp.Fill(table)
                reportGD.DataSource = table
a ver prueba ahi si es q te sale
Si tenia el bloque try-catch, abrir y cerrar la conexion no. Pero ya lo implemente y no me regresa valores..ni siquiera pinta el grid....

Otra pudiera ser, de que los parametros no le esten llegando al store:

Mira, mi store recibe 2 parametros enteros: @año y @mes
En VB es una funcion que recibe los parametros: ByVal mes Integer As, ByVal ano As Integer.

¿cómo saber esto, si le estan llegando los parametros o no?

Los 2 valores se los mando desde un dropDownList, y si guarda esos valores y se los pasa a la función, pero de ahi no se como verificar si se enviarón al store.

Gracias por tu ayuda
  #13 (permalink)  
Antiguo 06/04/2009, 10:34
Avatar de dadabit  
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: llenar dataSet con Store Procedure

JAJAJAJAJAJ, Muchas gracias Dradi7

Me da mucha risa, que solo se me olvido poner al final el grid con su dataBind()

pero gracias por la orientación a resolver esta duda (inicio del tema).

Saludos...
  #14 (permalink)  
Antiguo 25/08/2010, 08:15
 
Fecha de Ingreso: agosto-2010
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: llenar dataSet con Store Procedure

Cita:
Iniciado por Dradi7 Ver Mensaje
Puedes Usar Tambien de Esta Forma

public DataTable MostrarConsulta(int Mes,int Anyo)
{
SqlDataAdapter Adp = new SqlDataAdapter(); // Variable q me Tomara Los Datos
SqlParameter Par = new SqlParameter(); // Variable para la Recepcion de Datos
DataSet Datos = new DataSet(); // Creando un DataSet
try
{
Adp.SelectCommand = new SqlCommand(); // Creando una Instancia de SqlCommand
Adp.SelectCommand.Connection = Con; // Indicale tu variable de conexion ojo debes estar conectado a la Base de Datos Primero
Adp.SelectCommand.CommandText = "NOM_PROC"; // Indicamos el nombre del Proc Alm.
Adp.SelectCommand.CommandType = CommandType.StoredProcedure; // Le Decimos q es de Tipo Procedure
Par = Adp.SelectCommand.Parameters.Add("@Mes", SqlDbType.Int, 4); // Creando parametro
Par.Value = 4; // aqui le puedes cambiar por una variable
Par = Adp.SelectCommand.Parameters.Add("@Anyo", SqlDbType.Int, 4);// Creando parametro
Par.Value = 2009; // aqui le puedes cambiar por una variable
Adp.Fill(Datos, "x"); // Ejecutando y Recibiendo la consulta devuelta
}
catch(Exception e){MessageBox.show(null,e.Message,"Aviso");}
return Datos.Tables["x"];
}


Hola tengo un problema, tengo algo parecido a lo que mencionas(llenar un dataset con SP), al hacer click en el dropdown si me manda Informacion a mis textbox., pero cuando cambio de Item en el mismo Dropdown no me manda la Informacion a los textbox correspondientes al segundo Item Seleccionado. anexo mi codigo, esperando me puedas ayudar. Gracias
************************************************** **********
Public Function GetDetailCITEM(ByVal CTHWRK As Integer, ByVal CITEM As String) As System.Data.DataTable


Dim Param As New SqlParameter
Dim ds As New DataSet
Dim da As SqlDataAdapter = New SqlDataAdapter("spGetCITEM", admmetrics)

da.SelectCommand.CommandType = CommandType.StoredProcedure

Param = da.SelectCommand.Parameters.Add("@CTHWRK", SqlDbType.Int)
Param.Value = CTHWRK

Param = da.SelectCommand.Parameters.Add("@CITEM", SqlDbType.NVarChar)
Param.Value = CITEM

da.Fill(ds, "tblMOEEITMSTF")
GetDetailCITEM = ds.Tables("tblMOEEITMSTF")

End Function
************************************************** **********
Private Sub ddlProductCode_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlProductCode.SelectedIndexChanged
Dim DetailFields As MyDataDBConn = New MyDataDBConn

If ddlProductCode.SelectedIndex > 0 Then

Dim dt As DataTable = DetailFields.GetDetailCITEM(ddlProductCode.Selecte dValue, ddlProductCode.SelectedItem.Text)

For Each MiDataRow As DataRow In dt.Rows


Me.TxtCALIAS.Text = MiDataRow(2).ToString
Me.TxtCBUSSN.Text = MiDataRow(3).ToString
Me.TxtCFREE1.Text = MiDataRow(4).ToString
Me.TxtCFREE2.Text = MiDataRow(5).ToString

Next
End If
************************************************** *****
y como referencia este es el Query de mi Stored Procedure:

ALTER PROCEDURE [dbo].[spGetCITEM]
@CTHWRK Int,
@CITEM nvarchar(50)
AS
SELECT A.CTHWRK, A.CITEM, A.CALIAS, A.CBUSSN,
A.CFREE1, A.CFREE2
FROM tblMOEEITMSTF A
INNER JOIN tblCTHWRK B ON B.CTHWRK = A.CTHWRK
WHERE A.CTHWRK = @CTHWRK and A.CITEM = @CITEM
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 07:20.