survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 2022
-
7 avril 2009 à 15:36
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 2022
-
8 avril 2009 à 15:58
Bonjour,
J'ai une db access contenant une table "Contact" avec une série de champs : Nom Prénom Date ...
Je voudrais adresser une requête (avec comme filtre le nom le prénom et la date) qui me renverrait un bool m'indiquant si cette personne existe déjà dans la base de donnée.
Je me connecte à la base
string DataBase = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Application.StartupPath + "\\data\\client.mdb";
Conn.ConnectionString = DataBase;
Conn.Open();
et c'est après que je pêche car je ne connais pas les termes pour créer la string de ma requête.
Merci pour votre aide : un tuto ou un bout de code.
www.survey-copter.com
A voir également:
Aucune valeur donnée pour un ou plusieurs des paramètres requis
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201548 7 avril 2009 à 16:42
Salut
Utilise SqlCommand, insère ta requête SQL dedans et met "Conn" dans la propriété "Connection".
Ensuite, SqlDataReader reader = commande.ExecuteReader();
if(reader.HasRows)
{
// là, il y a un enregistrement (ou plus)
}else{
// là il n'y en a pas
}
Si tu n'es pas très familier avec le SQL, voici une requête simple : "SELECT * FROM Contact WHERE nom '"+nom+"' AND prenom '"+prenom+"' AND date = "+date;
Attention que le SQL dans Access n'est pas parfaitement standard. Teste d'abord ta requête directement dans Access.
(et comme je le disais, il s'agit d'une requête simple, normalement, on utilise des requêtes paramétrées)
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 20221 8 avril 2009 à 10:09
Merci pour tes indications j'ai fait comme ça :
using System.Data.OleDb;
...
string DataBase = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Application.StartupPath + "\\data\\client.mdb";
Conn.ConnectionString = DataBase;
Conn.Open();
string SqlSearch "SELECT * FROM Contact WHERE nom '" + TxtNom.Text + "' AND prenom = '" + TxtPrenom.Text + "' AND date = " + TxtDateAnniv.Text;
OleDbCommand cmd = new OleDbCommand(SqlSearch, Conn);
OleDbDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
// là, il y a un enregistrement (ou plus)
reponse = true;
}
else
{
// là il n'y en a pas
reponse = false;
}
Conn.Close();
avec comme paramètre
TxtNom.Text = "BELMONDO";
TxtPrenom.Text = "Jean Paul";
TxtDateAnniv.Text = "01/01/1901";
Mais le code me génère une erreur au moment de la déclaration de reader il me dit
Une exception de première chance de type 'System.Data.OleDb.OleDbException' s'est produite dans System.Data.dll
System.Data.OleDb.OleDbException: Aucune valeur donnée pour un ou plusieurs des paramètres requis.
à System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
à System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
à System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
à System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
à System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
à System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
à System.Data.OleDb.OleDbCommand.ExecuteReader()
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201548 8 avril 2009 à 11:50
Tu as vérifié que ton string de requête est EXACTEMENT le même que sous access ? (n'exécute pas ta requête dans ton programme, affiche-la et copie-colle dans access).
Si le problème n'apparaît pas sur Access, c'est très bizarre. Essaie de modifier ta requête en ajoutant ou enlevant des champs dans la condition... mais je ne garantis vraiment rien.
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 20221 8 avril 2009 à 13:49
J'ai tapé ça sous access dans une requête
SELECT FROM Contact WHERE Contact.Nom '"BELMONDO"' AND Contact.Prenom '"Jean Paul"' AND Contact.DateNaissance = "01/01/1901"
il me dit :
"Dans l'instruction SELECT,un mot réservé ou un argument est mal othographié ou absent,ou la ponctuation est incorrecte"
Une idée ?
Au passage l'aide access est bien faite elle me répond :
<title>Dans l'instruction SELECT, un mot réservé ou un argument est mal orthographié ou absent, ou la ponctuation est incorrecte. (Erreur 3141)</title><link rel="stylesheet" type="text/css" href="sqldoc.css" />Vous avez saisi une
<object id="alink_1" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" type="application/x-oleobject" width="0" height="0"></object>[javascript:alink_1.Click() instruction SQL] ayant une instruction
SELECT incorrecte.
Causes possibles :
Un nom de
<object id="alink_2" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" type="application/x-oleobject" width="0" height="0"></object>[javascript:alink_2.Click() mot réservé] ou
<object id="alink_3" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" type="application/x-oleobject" width="0" height="0"></object>[javascript:alink_3.Click() d’argument] est mal orthographié ou
manquant.
La ponctuation est incorrecte.
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 20221 8 avril 2009 à 13:55
Avec l'aide Access j'obtiens ça
SELECT Contact.Nom,Contact.Prenom,Contact.DateNaissance
FROM ContactWHERE Contact.Nom '"BELMONDO"' AND Contact.Prenom '"Jean Paul"' AND Contact.DateNaissance = "01/01/1901"
et cette erreur
Type de données incompatible dans l'expression du critère
???
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201548 8 avril 2009 à 14:18
SELECT Contact.Nom,Contact.Prenom,Contact.DateNaissance
FROM ContactWHERE Contact.Nom '"BELMONDO"' AND Contact.Prenom '"Jean Paul"' AND Contact.DateNaissance = "01/01/1901"
=>
SELECT Contact.Nom,Contact.Prenom,Contact.DateNaissance
FROM ContactWHERE Contact.Nom 'BELMONDO' AND Contact.Prenom 'Jean Paul' AND Contact.DateNaissance = 01/01/1901
Vérifier cependant qu'il ne faut pas mettre des ' autour de la date
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 20221 8 avril 2009 à 14:45
avec ton exemple Il m'ouvre une table vide et si je mets les ' pour la date il me met une erreur
J'ai refais un essai en virant Contact.DateNaissance et le AND Contact.DateNaissance = 01/01/1901
et la ça marche il trouve Jean Paul il s'agit donc du format de la date qui n'est pas bon .
mais le plus important dans mon filtre c'est la date donc je continue .
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 20221 8 avril 2009 à 15:32
il aime pas du tout , j'ai même essayé de mettre les ' et ben pareil pourtant la date dans la cellule est au format 01/01/1901 si je fais un copier coller.
Allez encore une petite idée ...
Merci
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 20221 8 avril 2009 à 15:58
c'est bon j'ai trouvé pour access
il faut écrire
SELECT Contact.Nom,Contact.Prenom,Contact.DateNaissance
FROM ContactWHERE Contact.Nom 'BELMONDO' AND Contact.Prenom 'Jean Paul' AND Contact.DateNaissance =#01/01/1901#