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]
problemas con conexion c# y access 2003
Comenzado por
el samurai
, feb 15 2012 03:39
9 respuestas en este tema
#1
Escrito 15 febrero 2012 - 03:39
#2
Escrito 15 febrero 2012 - 04:21
Hola
Que complicado, por eso no me gusta C# .
No se en C, pero en delphi es asi:
Tal vez te guie, eso si, usando componentes ado.
saludos
Que complicado, por eso no me gusta C# .
No se en C, pero en delphi es asi:
Tal vez te guie, eso si, usando componentes ado.
delphi
Var BaseDeDatos, ConStr : String; begin // Obtiene la ruta y el nombre de la base de datos BaseDeDatos := ExtractFilePath(Application.ExeName)+'Academia.MDB'; If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos'); ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+ 'Data Source='+BaseDeDatos+';'+ 'Persist Security Info=False;'+ 'Jet OLEDB:Database Password=admin'; AC1.ConnectionString := ConStr; AC1.Open; end;
saludos
#3
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 !
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 !
#4
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
#5
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
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
#6
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
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
#7
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]
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]
#8
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]
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]
#9
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]
[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]
#10
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]
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]