Access

flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 22 nov. 2005 à 17:27
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 23 nov. 2005 à 08:34
Bonjour, je veux faire une modif sur ma base access via une page php, j'ai l'erreur suivante :
Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Type de données incompatible dans l'expression du critère., SQL state 22005 in SQLExecDirect in D:\qualite\Annuaire\modification3.php on line 55

Le bout de code qui donne cette erreur est le suivant :
//récupération de l'identifiant de la personne:
$id = $_POST["id"] ;

//création de la requête SQL:
$sql = "UPDATE $Annuaire
SET Nom = '$nom',
Societe = '$societe',
Service = '$service',
Fixe = '$fixe',
Fixe_abrege = '$fixe_abrege',
Fax = '$fax',
Portable = '$portable',
Abrege_fixe_portable = '$Abrege_fixe_portable',
Abrege_portable_portable = '$Abrege_portable_portable',
Mail = '$Mail'


WHERE Numéro = $id " ;

//exécution de la requête SQL:
$requete = odbc_do($cnx, $sql) ;

D'ou cela peut il venir???????
Merci d'avance.

17 réponses

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
22 nov. 2005 à 17:35
"Numéro"
Pas d'accent dans les noms de champs !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 nov. 2005 à 17:38
Hello,

apparemment, y a un truc dans ta requête où tu update un champ avec une variable dont le type ne correspond pas.
Mais je ne connais pas Access. Et rien ne me choque dans ta requête, à priori.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 nov. 2005 à 17:39
Moi, ça m'étonnerait pas qu'Access accepte les accents sur les noms de table...mais bon, ptête ;-)
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
22 nov. 2005 à 17:41
Si cet accent il est correct, c'est le champ défini par access ou il y a le numéro id qui identifie chaque ligne.
Le soucis n'est pas de ça...... mais je ne sais pas d'ou.....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 nov. 2005 à 17:48
Change quand même le nom de ta table en virant l'accent, et réessayes, tu en auras le coeur net.
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
22 nov. 2005 à 18:02
"Type de données incompatible dans l'expression du critère.,"

Ou alors, c'est qu'il attend un entier et toi tu lui files un type chaine.
Ou alors l'inverse...
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
22 nov. 2005 à 18:03
et comment modifier ca...?
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
22 nov. 2005 à 18:10
Si je passe ma requete en direct dans access, ca me donne l'erreur suivante :
access n'a pas mis a jour un champ a cause d'un echec conversion de type....

Si je force la requete, elle passe....
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 nov. 2005 à 18:15
Ben donne la structure de tes tables, c'est bien un problème de typage.
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
22 nov. 2005 à 18:18
C'est à dire??
SET Nom = '$nom',
Societe = '$societe', : texte
Service = '$service', : texte
Fixe = '$fixe', : chiffre
Fixe_abrege = '$fixe_abrege', :chiffre
Fax = '$fax', :chiffre
Portable = '$portable', :chiffre
Abrege_fixe_portable = '$Abrege_fixe_portable', :chiffre
Abrege_portable_portable = '$Abrege_portable_portable',:chiffre
Mail = '$Mail' : texte


WHERE Numéro = $id " ; :chiffre


C'est ca qu'il te faut?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 nov. 2005 à 18:23
Non, la structure de ta table. Là où il y a marqué que Société est un VARCHAR (50) par exemple.
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
22 nov. 2005 à 18:24
je décris ça nulle part....
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
22 nov. 2005 à 18:30
"Cette erreur a lieu lorsque la valeur d'un critère dans la clause WHERE d'une requête Sql est mal écrite.
Les valeurs spécifiées pour des champs de type texte doivent être entre apostrophes"

Donc c'est bien ca, y'a un problème avec ton ID !
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
22 nov. 2005 à 18:31
C'est à dire, qu'est ce que je dois modifier concrètement???
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
22 nov. 2005 à 20:12
Bah tu regardes le type de ta variable $id
tu regardes le type de ton champ 'Numéro' de ta DB et tu fais en sorte à ce que ce soit identique !
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
23 nov. 2005 à 08:16
Tu crois que ca vient de ça? Parce que lorsque je tape ma requete directement dans access, ca bloque aussi alors que dans access, je ne définis pas le type....
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
23 nov. 2005 à 08:34
Bon ca y est ca marche, en fait j'avais des champs ou un . se rejoute.
Exemple : pour les 2 champs avec les numéros abrégés, il y a un . qui se rajoute alors que c'est un champ numérique.....
D'ailleurs, d'ou cela peut il venir?????? Comment faire pour virer ce point ???
0
Rejoignez-nous