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

parametros

Estas en el tema de parametros en el foro de .NET en Foros del Web. saludos: cuando por ejemlo datos a una base de datos,en ves de ocupar directamente un INSERT ocupo un procedimiento almacenado. el problema es q obviamente ...
  #1 (permalink)  
Antiguo 17/02/2005, 14:11
 
Fecha de Ingreso: agosto-2003
Ubicación: Viña del mar
Mensajes: 280
Antigüedad: 21 años, 7 meses
Puntos: 0
parametros

saludos:

cuando por ejemlo datos a una base de datos,en ves de ocupar directamente un INSERT ocupo un procedimiento almacenado. el problema es q obviamente el procedimiento tiene parametros,,y con el sqlparameter se agregan los parametros,,,el problema esta que el parametro q se agrega al sqlparameter tiene q tener el mismo nombre que el parametro del procedimiento o si no me arroja una ecepcion de q el parametro "x" del procedimiento no se a definido o algo asi,,, y lo que yo ncesito es poder agregar parametros al sqlparameter pero teniendo en cuenta q no se el nombre del parametro del procedimiento,,,,,
entonces me pregunto si existe alguna funcion q me devuelva el nombre del parametro del procedimiento, para posteriormente agregarselo al sqlparameter


algunos me han dicho q si se puede pero no se acuerdan como se hace,,,


alguien me puede ayudar,,es urgente

gracias
  #2 (permalink)  
Antiguo 17/02/2005, 17:45
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 20 años, 2 meses
Puntos: 7
Podrías hacer una rutina en la que te devuelva todos lo parámetros de un procedimiento almacenado, y luego asignar sus valores dinámicamente (tendrías que respetar el orden en el que ingresan los parámetros), algo con el que puedes pasar varios parámetros a un procedimiento en C# es la palabra clave "params" (no sé si en vb.net se pueda)
Te envío parte del código que tengo, para darte alguna idea:
Código:
protected System.Data.IDbCommand Comando(string ProcedimientoAlmacenado)
{
	System.Data.SqlClient.SqlCommand Com;
	if(ColComandos.Contains(ProcedimientoAlmacenado))
		Com= (System.Data.SqlClient.SqlCommand) ColComandos[ProcedimientoAlmacenado];
	else
	{
		System.Data.SqlClient.SqlConnection Con2=new System.Data.SqlClient.SqlConnection(this.CadenaConexion);
		Con2.Open();
		Com=new System.Data.SqlClient.SqlCommand(ProcedimientoAlmacenado,Con2);
		Com.CommandType=System.Data.CommandType.StoredProcedure;
		System.Data.SqlClient.SqlCommandBuilder.DeriveParameters(Com);
		Con2.Close();
		Con2.Dispose();
		ColComandos.Add(ProcedimientoAlmacenado,Com);
	}
	Com.Connection=(System.Data.SqlClient.SqlConnection)  this.Conexion;
	Com.Transaction=(System.Data.SqlClient.SqlTransaction) this.mTransaccion;
	return (System.Data.IDbCommand) Com;
}
protected void CargarParametros(System.Data.IDbCommand Com,System.Object[] Args)
{ 
	int Limite=Com.Parameters.Count;
	for(int i=1;i<Com.Parameters.Count;i++)
	{
		System.Data.SqlClient.SqlParameter P=(System.Data.SqlClient.SqlParameter) Com.Parameters[i];
		if(i<=Args.Length)
			P.Value=Args[i-1];
		else
			P.Value=null;
	}
}
También puedes utilizar la clase SqlHelperParameterCache que forma parte de Data Access Application Block, tiene una funcionalidad parecida al código que te envié antes, evidentemente varias mejoras.
http://msdn.microsoft.com/library/de.../html/daab.asp

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #3 (permalink)  
Antiguo 18/02/2005, 08:20
 
Fecha de Ingreso: agosto-2003
Ubicación: Viña del mar
Mensajes: 280
Antigüedad: 21 años, 7 meses
Puntos: 0
saludos

con el SqlCommandBuilder.DeriveParameters le paso al objeto del sqlcommand la coleccion de parametros del procedimiento,,y con

Dim p As String = Objetocomando.Parameters(0).ToString
Label1.Text = p

muestro en pantalla el nombre del parametro,,ahora el problema es q aunque el procedimiento no tenga ningun parametro, al ocupar SqlCommandBuilder.DeriveParameters
siempre existe el prametro @RETURN_VALUE ,,, como evitarlo?
ya q al agregar un parametro "x" (teniendo en cuenta q tengo definido un parametro)
siempre tira la exepcion de "La función o el procedimiento procPrueba tiene demasiados argumentos. "

q puedo hacer?
  #4 (permalink)  
Antiguo 18/02/2005, 09:17
 
Fecha de Ingreso: agosto-2003
Ubicación: Viña del mar
Mensajes: 280
Antigüedad: 21 años, 7 meses
Puntos: 0
saludos:

la solucion q le di es eliminar el parametro @RETURN_VALUE y simplemente darle el value,, cualquier otra manera de solucionar el problema se lo agradezco
  #5 (permalink)  
Antiguo 18/02/2005, 10:52
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 20 años, 2 meses
Puntos: 7
Simplemente empieza a asignar tus valores desde la posición 1 del array de parámetros.
__________________
Alex Concha
Buayacorp - Programación y Diseño
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 11:36.