valor una texto tabla registros que por para macro lista formularios formulario etiqueta ejemplo cuadro crear coincidencia busqueda busque buscar c# .net database ms-access ado.net

una - Obtener datos de Access en un cuadro de texto en C#haciendo clic en un botón



formularios en access (3)

Tengo una tabla en MS Access que contiene: (FoodID, FoodName, Price).

En C # tengo tres cuadros de texto (txtId, txtName, txtPrice) y un botón (btnSearch). Mi pregunta es que, en C # simplemente escribo FoodID en (txtId) y luego hago clic en el botón Buscar. Aparecerá FoodName y Price (desde el acceso a la tabla) en txtName y txtPrice por sí mismo. Obtuve el código fuente de usted, pero el error en (OleDbDataReader dr = cmd.ExecuteReader ();) su mensaje es "Tipo de datos no coinciden en la expresión de criterios".

Por favor resuelve este problema para mí. Este es el código fuente completo que obtuve para ti.

System.Data.OleDb.OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = "your connection string"; OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn; cmd.CommandText = "select FoodName, Price from tablename where FoodID = ''" + txtId + "'' "; conn.Open(); OleDbDataReader dr = cmd.ExecuteReader();//error this line! while(dr.Read()) { txtName.Text = dr["FoodName"].ToString(); txtPrice.Text = dr["Price"].ToString(); } dr.Close(); conn.Close();


Creo que el FoodId es de tipo Integer en la base de datos, pero aquí en la consulta que ha pasado como cadena, así que convierta la cadena en un entero.

cmd.CommandText = "select FoodName, Price from tablename where FoodID = ''" + int.Parse(txtId.Text) + "'' " ;

Parece que no hay problema con esta línea de código:

OleDbDataReader dr = cmd.ExecuteReader();// correct way


Creo que el problema está en:

cmd.CommandText = "select FoodName, Price from tablename where FoodID = ''" + txtId + "'' ";

Necesita usar .Text Propiedad del cuadro de texto

cmd.CommandText = "select FoodName, Price from tablename where FoodID = ''" + txtId.Text + "'' ";


Supongo que FoodID es int. Debe eliminar las comillas simples en este caso

cmd.CommandText = "select FoodName, Price from tablename donde FoodID =" + txtId;

Aún mejor: usa parámetros:

using (var connection = new OleDbConnection("your connection string")) using (var command = connection.CreateCommand()) { command.CommandText = "select FoodName, Price from tablename where FoodID = @FoodID"; command.Parameters.AddWithValue("FoodID", int.Parse(txtId.Text)); connection.Open(); var reader = command.ExecuteReader(); while (reader.Read()) { txtName.Text = reader["FoodName"].ToString(); txtPrice.Text = reader["Price"].ToString(); } }