Ir al contenido



Foto

problemas con conexion c# y access 2003


  • Por favor identifícate para responder
9 respuestas en este tema

#1 el samurai

el samurai

    Member

  • Miembros
  • PipPip
  • 40 mensajes

Escrito 15 febrero 2012 - 03:39

hola a todos,estoy aprendiendo c# y estaba tratando de hacer una conexion entre un form y una base de datos hecha en access 2003,y pido perdon por la utilizacion de una bd tan antigua, creo que tengo un problema en la parte logica de la conexion ya que no me da errores del c#,agradeceria cualquier ayuda que me puedan dar,yo pienso que talves el problema este en la ruta de la bd
[csharp] private void cmb_buscar_Click(object sender, EventArgs e)
        {
            if (buscar_registros(tex_id.Text) == false)
            {
                interface_Datos();
            }
            else
            {
                MessageBox.Show("el registro ya existe");
                tex_id.Focus();
           
            }
           
        }

        //funcion para buscar
        private bool buscar_registros (string codigo)
        {
            //convertir cadena a numero
            int cod=Convert.ToInt32(codigo);
             
        //conexion
            OleDbConnection conexion = new OleDbConnection();
            conexion.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0; data source= C:\\proyecto empresa base de datos\bbddmaestra.mdb";
            //cadena sql
            string cadenasql = "select * from personal where id="+codigo;
            //adaptador
            OleDbDataAdapter adaptador = new OleDbDataAdapter(cadenasql, conexion);

            //dataset
            DataSet ds = new DataSet();

            //llenar el dataset
            conexion.Open();
            adaptador.Fill(ds);
            conexion.Close();

            //contar registro
            if (ds.Tables[0].Rows.Count == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
       
       
        }
        private void  interface_Datos()
        {
            label1.Enabled = false;
            tex_id.Enabled = false;
            cmb_buscar.Enabled = false;
            cmb_cancelar.Enabled = true;

            label2.Enabled = true;
            label4.Enabled = true;
            label3.Enabled = true;

            tex_nombre.Enabled = true;
            tex_direccion.Enabled = true;
            tex_Edad.Enabled = true;

            cmd_guardar.Enabled = true;
            tex_nombre.Focus();


[/csharp]
  • 0

#2 Caral

Caral

    Advanced Member

  • Administrador
  • 4.218 mensajes
  • LocationCosta Rica

Escrito 15 febrero 2012 - 04:21

Hola
Que complicado, por eso no me gusta C# . 8o|
No se en C, pero en delphi es asi:
Tal vez te guie,  eso si, usando componentes ado.


delphi
  1. Var BaseDeDatos, ConStr : String;
  2.  
  3. begin
  4.   // Obtiene la ruta y el nombre de la base de datos
  5.   BaseDeDatos := ExtractFilePath(Application.ExeName)+'Academia.MDB';
  6.   If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
  7.   ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
  8.             'Data Source='+BaseDeDatos+';'+
  9.             'Persist Security Info=False;'+
  10.             'Jet OLEDB:Database Password=admin';
  11.   AC1.ConnectionString := ConStr;
  12.   AC1.Open;
  13. end;


saludos
  • 0

#3 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.475 mensajes
  • LocationMexico City

Escrito 15 febrero 2012 - 05:07

Amigo no te disculpes por usar access... todas las BD tienen su propósito y su campo de acción así que es válido su uso  ;)

Ahora, no nos comentas el error o el comportamiento erróneo del sistema, es decir, cómo te das cuenta de que el error es en la conexión a access ???

Saludox ! :)


  • 0

#4 el samurai

el samurai

    Member

  • Miembros
  • PipPip
  • 40 mensajes

Escrito 15 febrero 2012 - 07:35

muchas gracias por contestar tan rapido, amigo caral estoy de acuerdo con usted c# es muy complicado,y fenareth creo que el problema es la conexion a la base de datos,ya que no hay ningun error de sintaxis ni de compilacion,asi que supongo que tiene que ser un error logico o en la conexion a la base de datos
  • 0

#5 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.475 mensajes
  • LocationMexico City

Escrito 15 febrero 2012 - 08:53

Bueno amigo, pero sigues sin decirnos cuál error es el que te genera...

Una pregunta: la línea donde le indicas el open al dataset, la ejecuta ?

Saludox ! :)

P.D. Veo una doble diagonal en la ruta de tu archivo mdb, no creo que sea el problema, pero comencemos a pensar en posibilidades  ^o|
  • 0

#6 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 260 mensajes
  • LocationMedellín Colombia

Escrito 15 febrero 2012 - 08:58

Hola buen día,

Podrías enviar algo mas sobre el error que sucede,

Lo que puedo evidenciar es que  la cadena de conexión no está completa:

[csharp]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=;[/csharp]

o bien así con password:

[csharp]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;Jet OLEDB:Database Password=MyDbPassword;[/csharp]

Saludos
  • 0

#7 el samurai

el samurai

    Member

  • Miembros
  • PipPip
  • 40 mensajes

Escrito 15 febrero 2012 - 09:06

hasta ahora,e tomado sus consejos y los e probado aunque todavia no logro hacer que me funcione, veran trado de traer un grupo de registros de la base de datos pasando un id por un textbox,y si la consulta es 0 registros me tiene que devolver un false y asi continuo,y si es true entonces que me salga un mensaje que diga que el id ya existe,ya cambie el nombre de la base de datos y revise la ruta,al parecer no se esta ejecutando nada de la consulta,les dejo el codigo que tengo hasta ahora[csharp]
        private void cmb_buscar_Click(object sender, EventArgs e)
        {
           
            if (buscar_registros(tex_id.Text) == false)
            {
                interface_Datos();
                MessageBox.Show("ok puede agregar al usuario");

            }
            else
            {
                MessageBox.Show("ya existe");
                //tex_id.Focus();
           
            }
           
        }

        //funcion para buscar
        private bool buscar_registros (string codigo)
        {
            //convertir cadena a numero
            int cod=Convert.ToInt32(codigo);
             
        //conexion
            OleDbConnection conexion = new OleDbConnection();
            conexion.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;  data = C:\base_proyecto\base_proyecto.mdb ;persist security info=false; user id=adm password=" ;
         
            //cadena sql
            string cadenasql = "select * from personal where id="+cod;
            //adaptador
            OleDbDataAdapter adaptador = new OleDbDataAdapter(cadenasql, conexion);

            //dataset
            DataSet ds = new DataSet();

            //llenar el dataset
            conexion.Open();
            adaptador.Fill(ds);
            conexion.Close();

            //contar registro
            if (ds.Tables[0].Rows.Count == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
       
       
        }[/csharp]
  • 0

#8 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 260 mensajes
  • LocationMedellín Colombia

Escrito 15 febrero 2012 - 09:19

Hola

Abre primero la conexión y luego utiliza el OleDbDataAdapter

Saludos

[csharp]
private bool buscar_registros (string codigo)
        {
            //convertir cadena a numero
            int cod=Convert.ToInt32(codigo);
             
        //conexion
            OleDbConnection conexion = new OleDbConnection();
            conexion.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;  data = C:\base_proyecto\base_proyecto.mdb ;persist security info=false; user id=adm password=" ;
       
            //cadena sql
            string cadenasql = "select * from personal where id="+cod;
            //adaptador

            conexion.Open();    /*Está línea la cambie de posición */
            OleDbDataAdapter adaptador = new OleDbDataAdapter(cadenasql, conexion);

            //dataset
            DataSet ds = new DataSet();

            //llenar el dataset
           
            adaptador.Fill(ds);
            conexion.Close();

            //contar registro
            if (ds.Tables[0].Rows.Count == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
       
     
        }
[/csharp]
  • 0

#9 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 260 mensajes
  • LocationMedellín Colombia

Escrito 15 febrero 2012 - 09:24

Se me olvidó decir que la conexión la cierres despúes de la validación.

[csharp]private bool buscar_registros (string codigo)
        {
            //convertir cadena a numero
            int cod=Convert.ToInt32(codigo);
          bool retorno=false;
             
        //conexion
            OleDbConnection conexion = new OleDbConnection();
            conexion.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;  data = C:\base_proyecto\base_proyecto.mdb ;persist security info=false; user id=adm password=" ;
       
            //cadena sql
            string cadenasql = "select * from personal where id="+cod;
            //adaptador

            conexion.Open();    /*Está línea la cambie de posición */
            OleDbDataAdapter adaptador = new OleDbDataAdapter(cadenasql, conexion);

            //dataset
            DataSet ds = new DataSet();

            //llenar el dataset
         
            adaptador.Fill(ds);
           

            //contar registro
            if (ds.Tables[0].Rows.Count == 0)
            {
                retorno=false;
            }
            else
            {
                retorno=true;
            }
       
      conexion.Close();
      return retorno;
        }[/csharp]
  • 0

#10 el samurai

el samurai

    Member

  • Miembros
  • PipPip
  • 40 mensajes

Escrito 16 febrero 2012 - 10:38

muchas a gracias a todos por su ayuda,despues de revisar la conexion de datos,pude darme cuenta que el problema no estaba
hay sino que el valor que le estaba pasando por el textbox no estaba llegando bien a la consulta,le asigne un valor fijo a la variable,y coloque mensajes para ver si al funcion me devolvia un true o false,despues de ver que todo estaba bien, arregle el problema del paso de valores como parametros por la funcion buscar y me funciono bien,les dejo el codigo por si otra persona tiene el mismo problema que yo,y les doy gracias de nuevo por su ayuda.
[csharp]private void cmb_buscar_Click(object sender, EventArgs e)
        {
            //asignacion del valor introducido por el textbox a una variable
            string valor = tex_id.Text;
           
            if (buscar_registros(valor) == false)
            {
             
                interface_Datos();
               

            }
            else
            {
                MessageBox.Show("el usuario existe");
                tex_id.Focus();

            }
            //buscar_registros("1");
        }

        //funcion para buscar
        private bool buscar_registros(string codigo)
        {
            //convertir cadena a numero
         
            int cod = Convert.ToInt32(codigo);
         
            //conexion
            OleDbConnection conexion = new OleDbConnection();
            conexion.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;  data source = C:\base_proyecto\base_proyecto.mdb ;persist security info=false";

            //cadena sql
            string cadenasql = "select * from personal where id=" + cod;
            //adaptador
            OleDbDataAdapter adaptador = new OleDbDataAdapter(cadenasql, conexion);

            //dataset
            DataSet ds = new DataSet();

            //llenar el dataset
            conexion.Open();
            adaptador.Fill(ds);
            conexion.Close();

            //contar registro
            if (ds.Tables[0].Rows.Count == 0)
            {
                //MessageBox.Show("no hay registros");
                return false;
               
            }
            else
            {
                //MessageBox.Show("si hay registros");
              return true;
            }

           

        }[/csharp]
  • 0