Hola a todos,

Recibi la siguiente pregunta de un exalumno:

Profe. otra vez a molestar tengo esta consulta:
OleDbCommand cm1 = new OleDbCommand(“Select IdCliente, NombreCompania, NombreContacto, CargoContacto, Direccion FROM Clientes WHERE IdCliente=”+id_cliente, cn1);

Y me genera un error en:
OleDbDataReader leerc = cm1.ExecuteReader();
error:  No se han especificado valores para algunos de los parámetros requeridos
Si a la consulta no le agrego la variable +id_cliente, me muestra los datos ubicándose al final de la tabla

Este tipo de errores tiene una clara descripcion pero puede presentarse por varias causas relacionadas con el paramentero de la condicion where. Algunas posibles causas son:

Si la variable id_cliente es de tipo string y esta vacia entonces la sentencia SQL sera concatenada sin ningun valor para comparar la igualdad con IdCliente. En este caso la sentencia resultante seria erronea como se describe a continuacion:

“Select IdCliente, NombreCompania, NombreContacto, CargoContacto, Direccion FROM Clientes WHERE IdCliente=”

Si la variable es de tipo string en la tabla y se ejecuta la sentencia sin las correspondientes indicaciones de tipo literal en la variable se podria presentar este error (u otro aun mas extrano). La sentencia incorrecta seria:

“Select IdCliente, NombreCompania, NombreContacto, CargoContacto, Direccion FROM Clientes WHERE IdCliente=CUALQUIER_TEXTO”

En lugar de:

“Select IdCliente, NombreCompania, NombreContacto, CargoContacto, Direccion FROM Clientes WHERE IdCliente=’CUALQUIER_TEXTO'”

Siguiendo las aclaraciones anteriores se puede solucionar el error, sin embargo lo mejor seria utilizar procedimientos almacenados.

Saludos,

Javier Andrés Cáceres Alvis

Microsoft Most Valuable Professional – MVP

Intel Black Belt Software Developer