¿Procedimiento almacenado?
Que tal primero que nada saludarte, tengo un pequeño problema estoy haciendo una aplicación para windows mobile con firebird, en la cual mando llamar un procedimiento almacenado el cual se lo asigno a una tabla la cual va a un datagrid, el problema es que no despliega los datos, ya intente con un reader y tampoco, ahora el procedimiento almacenado esta funcionando bien ya que esta funcionando en un sistema hecho en delphi y funciona a la perfección, espero que me puedas ayudar.
Nota
Si acceso al parámetro directo si me muestra el primer dato de la consulta
Ejemplo
DataRow row;
row = art.NewRow();
row['articulo'] =busca_articulos.Parameters[5].Value;
art.Rows.Add(row);
de antemano gracias
aqui esta el codigo:
if (Buscatxt.Text != "")
{
RegistryKey regservidor = Registry.LocalMachine.OpenSubKey(@"Software\Aplicaciones NG", true);
string Servidortxt = Convert.ToString(regservidor.GetValue("Servidor"));
string Datos = Convert.ToString(regservidor.GetValue("Datos"));
string usuario = Convert.ToString(regservidor.GetValue("Usuario"));
string contrasena = Convert.ToString(regservidor.GetValue("Contrasena"));
string database = Convert.ToString(regservidor.GetValue("Database"));
string ConnectionString =
"User ID=" + usuario + ";Password=" + contrasena + ";Database=" + Servidortxt + ":" + Datos + "\\" + database + ".FDB;DataSource=" + Servidortxt + ";Charset=NONE;";
FirebirdSql.Data.FirebirdClient.FbConnection conexion = new FirebirdSql.Data.FirebirdClient.FbConnection(ConnectionString);
conexion.Open();
FirebirdSql.Data.FirebirdClient.FbTransaction transaccion = conexion.BeginTransaction();
// procedimiento para buscar articulos
FirebirdSql.Data.FirebirdClient.FbCommand busca_articulos = new FirebirdSql.Data.FirebirdClient.FbCommand("EXECUTE PROCEDURE BUSCA_ARTICULOS (@V_CAMPO_BUSQUEDA,@V_COINCIDIR_MAY_MIN,@V_CUALQUIER_POS,@V_TEXTO_BUSQUEDA)", conexion, transaccion);
busca_articulos.CommandType = CommandType.StoredProcedure;
busca_articulos.Transaction = transaccion;
busca_articulos.Parameters.Add("@V_CAMPO_BUSQUEDA", FbDbType.VarChar, 6, "CAMPO_BUSQUEDA").Direction = ParameterDirection.Input;
busca_articulos.Parameters.Add("@V_COINCIDIR_MAY_MIN", FbDbType.VarChar, 1, "COINCIDIR_MAY_MIN").Direction = ParameterDirection.Input;
busca_articulos.Parameters.Add("@V_CUALQUIER_POS", FbDbType.VarChar, 1, "CUALQUIER_POS").Direction = ParameterDirection.Input;
busca_articulos.Parameters.Add("@V_TEXTO_BUSQUEDA", FbDbType.VarChar, 100, "TEXTO_BUSQUEDA").Direction = ParameterDirection.Input;
busca_articulos.Parameters.Add("ARTICULO_ID", FbDbType.Integer, 30, "ARTICULO_ID").Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("CLAVE_ARTICULO", FbDbType.VarChar, 20).Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("NOMBRE_ARTICULO", FbDbType.VarChar, 100).Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("UNIDAD_VENTA", FbDbType.VarChar, 5).Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("ES_ALMACENABLE", FbDbType.VarChar, 5).Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("ES_JUEGO", FbDbType.VarChar, 1).Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("ESTATUS", FbDbType.VarChar, 1).Direction = ParameterDirection.Output;
busca_articulos.Parameters[0].Value = "NOMBRE";
busca_articulos.Parameters[1].Value = "S";
busca_articulos.Parameters[2].Value = "S";
busca_articulos.Parameters[3].Value = Buscatxt.Text;
DataSet bd = new DataSet();
FirebirdSql.Data.FirebirdClient.FbDataAdapter adaptador = new FirebirdSql.Data.FirebirdClient.FbDataAdapter(busca_articulos);
adaptador.Fill(bd);
this.dataGrid1.DataSource = bd;
this.dataGrid1.Refresh();
Nota
Si acceso al parámetro directo si me muestra el primer dato de la consulta
Ejemplo
DataRow row;
row = art.NewRow();
row['articulo'] =busca_articulos.Parameters[5].Value;
art.Rows.Add(row);
de antemano gracias
aqui esta el codigo:
if (Buscatxt.Text != "")
{
RegistryKey regservidor = Registry.LocalMachine.OpenSubKey(@"Software\Aplicaciones NG", true);
string Servidortxt = Convert.ToString(regservidor.GetValue("Servidor"));
string Datos = Convert.ToString(regservidor.GetValue("Datos"));
string usuario = Convert.ToString(regservidor.GetValue("Usuario"));
string contrasena = Convert.ToString(regservidor.GetValue("Contrasena"));
string database = Convert.ToString(regservidor.GetValue("Database"));
string ConnectionString =
"User ID=" + usuario + ";Password=" + contrasena + ";Database=" + Servidortxt + ":" + Datos + "\\" + database + ".FDB;DataSource=" + Servidortxt + ";Charset=NONE;";
FirebirdSql.Data.FirebirdClient.FbConnection conexion = new FirebirdSql.Data.FirebirdClient.FbConnection(ConnectionString);
conexion.Open();
FirebirdSql.Data.FirebirdClient.FbTransaction transaccion = conexion.BeginTransaction();
// procedimiento para buscar articulos
FirebirdSql.Data.FirebirdClient.FbCommand busca_articulos = new FirebirdSql.Data.FirebirdClient.FbCommand("EXECUTE PROCEDURE BUSCA_ARTICULOS (@V_CAMPO_BUSQUEDA,@V_COINCIDIR_MAY_MIN,@V_CUALQUIER_POS,@V_TEXTO_BUSQUEDA)", conexion, transaccion);
busca_articulos.CommandType = CommandType.StoredProcedure;
busca_articulos.Transaction = transaccion;
busca_articulos.Parameters.Add("@V_CAMPO_BUSQUEDA", FbDbType.VarChar, 6, "CAMPO_BUSQUEDA").Direction = ParameterDirection.Input;
busca_articulos.Parameters.Add("@V_COINCIDIR_MAY_MIN", FbDbType.VarChar, 1, "COINCIDIR_MAY_MIN").Direction = ParameterDirection.Input;
busca_articulos.Parameters.Add("@V_CUALQUIER_POS", FbDbType.VarChar, 1, "CUALQUIER_POS").Direction = ParameterDirection.Input;
busca_articulos.Parameters.Add("@V_TEXTO_BUSQUEDA", FbDbType.VarChar, 100, "TEXTO_BUSQUEDA").Direction = ParameterDirection.Input;
busca_articulos.Parameters.Add("ARTICULO_ID", FbDbType.Integer, 30, "ARTICULO_ID").Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("CLAVE_ARTICULO", FbDbType.VarChar, 20).Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("NOMBRE_ARTICULO", FbDbType.VarChar, 100).Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("UNIDAD_VENTA", FbDbType.VarChar, 5).Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("ES_ALMACENABLE", FbDbType.VarChar, 5).Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("ES_JUEGO", FbDbType.VarChar, 1).Direction = ParameterDirection.Output;
busca_articulos.Parameters.Add("ESTATUS", FbDbType.VarChar, 1).Direction = ParameterDirection.Output;
busca_articulos.Parameters[0].Value = "NOMBRE";
busca_articulos.Parameters[1].Value = "S";
busca_articulos.Parameters[2].Value = "S";
busca_articulos.Parameters[3].Value = Buscatxt.Text;
DataSet bd = new DataSet();
FirebirdSql.Data.FirebirdClient.FbDataAdapter adaptador = new FirebirdSql.Data.FirebirdClient.FbDataAdapter(busca_articulos);
adaptador.Fill(bd);
this.dataGrid1.DataSource = bd;
this.dataGrid1.Refresh();
Respuesta de jorivelme
1