¿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();

1 Respuesta

Respuesta
1
Que tal pues bueno veras si estas accediendo a la base y la base tienes en el dispositivo que ciertos dispositivos si soportan algunas bases es más sencillo es como realizar una aplciación normal, si tu móvil no tiene mucha potencia y memoria utiliza webservices para acceder a datos por cierto te comento que ese firebird en realidad no he probado más bien gracias por hacerme conocer una nueva base pero debe dar igual se debe obtener el mismo resultado, bueno vamos al punto para utilizar el sp y que te ponga varios registros ya que dices que solo te sale uno debes hacer de la siguiente forma crear el
slect normal SELECT campo1, campo2, campo3 from TABLA WHERE campo1=%campo1% and campo2=%campo2%
ese select en un string, luegos haces el nombreString. Replace("%campo1%", mivalor.ToString()). Replace(...) asi hasta completar todo
entonces luego fiiltras en el data set solo enviando el comando, pruebale de esa forma y me avisas
Lo que yo te recomiendo es que uses objetos, tienes que barrerte el reader o tableadapter y que por cada registro te cree un objeto y ese objeto le vayas agegando a una lista de objetos, no se si con eso se te resuelve el problema, lo que te entendí del problema era ese como hacer una lista para mostrar la grilla y que el dataset no te hace bien
Por cierto yo no trabajo con datasets así que no soy muy experto en el tema de lo que estoy seguro que si le mandas de la forma que te indique te sirva, en cambio con el list te va a servir porque yo he probado así
te adjunto el código para pasar a objetos, saludos cualquier cosa ahí me avisas, disculparas por el testamento jajaja
returnData = //un datareader whatever
ProvinciaColeccion = //List<Provincia> yo utilizo esto porque en mi caso yo manejo colecciones propias pero en tu caso trabajale con el List
ojo que este es para pasar de datareader a objetos
while (returnData.Read())
            {
para pasar de datatable a objetos
public List<InformacionEscuela> obtenerListadoEscuela()
        {
         List<InformacionEscuela> escuela = new List<InformacionEscuela>();
         DataTable datos;
         int count;
         int i;
         string consultaEscuelas = "SELECT INS_CODIGO, API_INS_CODIGO, INS_DESCRIP" + " " +
                                   "FROM dbo.APINS_INSTITU";
         coneccion.AbrirConexion();
         datos = coneccion.Consulta(consultaEscuelas);
         count = datos.Rows.Count;
         for(i=0;i<count; i++)
         {
             Codigo  = Convert.ToInt32(datos.Rows["INS_CODIGO"]);
             Api_ins_codigo  =Convert.ToInt32(datos.Rows["API_INS_CODIGO"]);
             Descripcion  = datos.Rows ["INS_DESCRIP"].ToString();
             escuela.Add(new InformacionEscuela(Codigo , Api_ins_codigo , Descripcion ));     
         }
        coneccion.CerrarConexion();
        return escuela ;
        }
public static CollectionBase GenerarProvinciaColeccionDelLector(DbDataReader returnData)
        {
            ProvinciaColeccion lista = new ProvinciaColeccion();
            while (returnData.Read())
            {
                string codigoProvinciaExterna = (string)ConvertirAlTipoDeDato(returnData["CODIGOPROVINCIA"], returnData["CODIGOPROVINCIA"].GetType(), System.TypeCode.String);
                string descripcion = (string)ConvertirAlTipoDeDato(returnData["DESCRIPCION"], returnData["DESCRIPCION"].GetType(), System.TypeCode.String);
                //Codigo Nuevo
                decimal codigoProvincia = -1;
                Provincia provincia = Provincia.ObtenerProvinciaPorCodigoExterno(codigoProvinciaExterna);
                if (provincia != null)
                    codigoProvincia = provincia.CodigoProvincia;
                //Agregamos la provincia a la colección
                Provincia item = new Provincia(codigoProvinciaExterna, codigoProvincia, descripcion);
                if (item.CodigoExterno != "0")
                    lista.Add(item);
            }
            return lista;
        }

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas