Problème de requête...

Résolu
Bulldozair Messages postés 4 Date d'inscription mercredi 8 juillet 2009 Statut Membre Dernière intervention 15 mars 2010 - 10 févr. 2010 à 10:43
Bulldozair Messages postés 4 Date d'inscription mercredi 8 juillet 2009 Statut Membre Dernière intervention 15 mars 2010 - 10 févr. 2010 à 11:29
Bonjour,
J'ai un petit souci avec une requête sous Access 2003. La connexion à la BD fonctionne très bien.
Voici mon code :

public string chercheLex(string strMot, string strNomLot)
{
string strResult;
string strCheminBdLex = "C:\\Documents and Settings\\xavier.lavaine\\Bureau\\StyxTables.mdb";
string csindex = "Provider=Microsoft.Jet.OLEDB.4.0; ";
csindex += "Data Source=" + strCheminBdLex + ";";

// Open a connection to the certificate database
oConnect = new OleDbConnection(csindex);
oConnect.Open();

string strSql;
strSql = "SELECT Diagnostic ";
strSql += "FROM " + strNomLot;
strSql +" WHERE Diagnostic '"+strMot+"'";

OleDbCommand cmd = new OleDbCommand(strSql, oConnect);

strResult = ((string)cmd.ExecuteScalar());
MessageBox.Show(strResult);
return strResult;
}

Le souci c'est que lorsque la variable "strMot" contient g* (je demande donc le mot commençant par g, je n'ai pas de retour, strResult ne contient rien par contre lorsque strmot contient un mot entier contenu dans ma BD, strResult contient bien ce mot. J'ai donc un souci avec, soit les quotes '' ou avec *. Je ne comprends pas ce qui se passe. Si quelqu'un peut m'aider, merci à vous...

2 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
10 févr. 2010 à 11:23
Salut

Le problème vient du fait qu'Access n'utilise pas du SQL standard.

Essaie donc de modifier ainsi :

strSql += " WHERE Diagnostic LIKE '" + strMot + "'";
// Normalement, les tests avec des lettres "joker" doivent être faits avec LIKE et non =

Et dans ta valeur de strSql, le symbole pour "n'importe quoi" (là où tu as mis *) est % normalement.

Théoriquement, avec ces deux modifications ça devrait marcher.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
3
Bulldozair Messages postés 4 Date d'inscription mercredi 8 juillet 2009 Statut Membre Dernière intervention 15 mars 2010
10 févr. 2010 à 11:29
Le problème est résolu, LIKE et % étaient la solution, un grand merci à toi... Cordialement...
0