C/Visual C - Problema al ejecutar una sentencia SQL para Access

 
Vista:

Problema al ejecutar una sentencia SQL para Access

Publicado por evth_sux (14 intervenciones) el 19/10/2007 19:58:47
Hola,

Estoy intentando ejecutar una sentencia SQL desde VC++ para una función de búsqueda.

sSentencia.Format ("SELECT * FROM Cliente WHERE Nombre LIKE 'j*'" );
rs.Open (CRecordset::forwardOnly, sSentencia.c_str ());

Cuando ejecuto esa misma orden desde el propio Access, me devuelve los registros que empiezan con j. Sin embargo, cuando lo hago desde VC++ no devuelve ningún registro.

Si en vez de usar esa sentencia uso esta otra:

sSentencia.Format ("SELECT * FROM Cliente WHERE Nombre = 'Un_Nombre_de_la_BD'" );
rs.Open (CRecordset::forwardOnly, sSentencia.c_str ());

Funciona perfectamente.

A ver si alguien me puede ayudar.

Gracias de antemano y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema al ejecutar una sentencia SQL para Acc

Publicado por fernando.gomez (1603 intervenciones) el 19/10/2007 22:15:27
DAO (las clases que empleas con CDatabase y CRecordset de MFC) está basado en ODBC, y por lo tanto, debes seguir las reglas de ODBC. Éste, a su vez, sigue las reglas de SQL estándar (mmm... más o menos).

La sentencia SQL es errónea desde el punto de vista de SQL, vaya ni siquiera "compilaría". Si eso te funciona en Access, es porque (seguramente) se trata de algún dialecto particular.

En fin, en SQL el uso de "like" se hace con signos de porcentaje. Así, tu consulta quedaría como:

sSentencia.Format ("SELECT * FROM Cliente WHERE Nombre LIKE 'j%' " );
rs.Open (CRecordset::forwardOnly, sSentencia.c_str ());

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar