Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/01/2011, 14h29   #1
Expert Confirmé Sénior
 
Avatar de Pol63
 
Homme Sébastien
Développeur informatique
Inscription : avril 2007
Messages : 9 197
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : avril 2007
Messages : 9 197
Points : 13 423
Points : 13 423
Par défaut type de données incompatible dans l'expression du critère

bonjour

d'habitude je suis sur sql server, qui est tellement gentil qu'il vous explique l'erreur plutot que de vous narguer avec un message qui équivaut à "essaye encore"

bref j'ai une requete qui ne passe pas sur access, depuis un programme en .net
Code :
1
2
3
4
5
6
7
8
 
UPDATE [reception] 
SET [ident]=@ident,[dateent]=@dateent,[heurent]=@heurent,[datesor]=@datesor,[heursor]=@heursor,[coop]=@coop,[livreur]=@livreur,[centre]=@centre,[produit]=@produit,[transport]=@transport,[modetrans]=@modetrans,[contrat]=@contrat,
         [libcamp]=@libcamp,[echantillon]=@echantillon,[pdsent]=@pdsent,[pdssor]=@pdssor,[pdsbrut]=@pdsbrut,[pdscor]=@pdscor,[cara1]=@cara1,[taux1]=@taux1,[cara2]=@cara2,[taux2]=@taux2,[cara3]=@cara3,[taux3]=@taux3,[cara4]=@cara4,[taux4]=@taux4,[commentaire]=@commentaire,
[code_cellule]= DLookup("[Code_Cellule]", "cellules", "[Designation_Cellule] = 'C79'")
 
          WHERE [nopesee] = @nopesee
;
je remplie tous les paramètres par code

1er problème "le champ est trop petit pour accueillir les données, mais je te laisse deviner lequel !" sympa ce access !
pour moi tout doit rentrer, surtout qu'un coier coller dans access qui me demande la valeur des paramètres passe ...

bref pour chercher lequel j'ai mis "" dans tous les string, et là autre problème cité en titre

j'en déduis que ca vient du WHERE ou éventuellement du dlookup
pour le where ca me semble peu probable, c'est un double dans access et dans mon programme
et pour le dllookup à priori il passe sous access aussi ...


comment avoir des vrais informations sur les erreurs sur ce @#$µ% d'access ?
voyez vous quelques chose qui cloche ?

merci
__________________
si vous ne comprenez pas ce que je dis, demandez à google
Pol63 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 00h52   #2
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Salut !!!

Bon alors, plusieurs choses...
  • D'abord, est-ce que ta requête est écrite en SQL dans ton code DotNet ? Si oui... euh ... bon courage
  • Si la requête est écrite dans l'application Access, tu n'es pas en présence de paramètres, puisque je ne vois pas la clause PARAMETERS dans ton SQL. D'autre part, il semble que pour accéder à une requête paramétrée depuis le DotNet, tu doives passer par un DataAdapter, et non par une Command (je te passe les détails...), mais c'est un autre problème
  • Concernant le pessage d'erreur, il indique que tu essaies de mettre quelque chose dans aute chose, mais ces deux choses n'ont pas le même type. Est-ce que tu Cast toutes tes valeurs au moment où tu passes les paramètres, afin qu'ils correspondent aux types des champs ?
à toi la balle !
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 08h01   #3
Expert Confirmé Sénior
 
Avatar de Pol63
 
Homme Sébastien
Développeur informatique
Inscription : avril 2007
Messages : 9 197
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : avril 2007
Messages : 9 197
Points : 13 423
Points : 13 423
j'utilise un DbCommand en effet, sur lequel j'ajoute des OleDbParameters en précisant le type (OleDb.OleDbType.VarWChar par exemple) et je fourni la valeur

je n'ai jamais utilisé de DataAdapter, pensant que c'était juste fait pour utilisation d'un non connaisseur du langage sql désireux de remplir un datatable et d'en répercuter les modifications
et si j'ai bien suivi le DataAdapter ne fait que créer des requetes insert/update/delete donc c'est qu'on a bien le droit d'exécuter des requetes sur access ... (ton "bon courage" me fait peur)
d'ailleurs le DataAdapter fournit un DbCommand ...

je vais revérifier que les types concordent une fois de plus ...
__________________
si vous ne comprenez pas ce que je dis, demandez à google
Pol63 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 10h01   #4
Expert Confirmé Sénior
 
Avatar de Pol63
 
Homme Sébastien
Développeur informatique
Inscription : avril 2007
Messages : 9 197
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : avril 2007
Messages : 9 197
Points : 13 423
Points : 13 423
j'ai retiré le dlookup ca passe pas mieux
donc c'est bien le where qui pose problème, meme en mettant
Code :
cdbl([reception].[nopesee]) = cdbl(@nopesee)
toujours "type incompatible"

en retirant le where l'erreur redevient "champ trop petit"
pourtant j'ai vérifier les tailles et les types ...
__________________
si vous ne comprenez pas ce que je dis, demandez à google
Pol63 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 20h26   #5
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
salut,

as-tu des valeurs NULL ou non numeriques dans tes enregistrements ?
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 21h54   #6
Expert Confirmé Sénior
 
Avatar de Pol63
 
Homme Sébastien
Développeur informatique
Inscription : avril 2007
Messages : 9 197
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : avril 2007
Messages : 9 197
Points : 13 423
Points : 13 423
tous les champs sont nullables, et il y a certains champs que je ne spécifie pas dans mon insert si c'est ca la question

j'ai des double, des varWchar et un longVarWchar
__________________
si vous ne comprenez pas ce que je dis, demandez à google
Pol63 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 10h50   #7
Expert Confirmé Sénior
 
Avatar de Pol63
 
Homme Sébastien
Développeur informatique
Inscription : avril 2007
Messages : 9 197
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : avril 2007
Messages : 9 197
Points : 13 423
Points : 13 423
un collègue a fini par trouver

attention aux âmes sensibles ca peut faire peur !


access utilise les DbParameters indépendamment de leur nom, le 1er trouvé dans la requête aura comme valeur celle du 1er parameter de la collection Parameters et ainsi de suite ...
__________________
si vous ne comprenez pas ce que je dis, demandez à google
Pol63 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/01/2011, 21h32   #8
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

En fait ça ne vient pas d'Access, mais du framework, et plus précisément du type de fournisseur de données .NET.

Cf Utilisation des procédures stockées avec une commande

Citation:
Les fournisseurs de données .NET Framework pour OLE DB et .NET Framework pour ODBC ne prennent pas en charge les paramètres nommés pour le passage des paramètres à une instruction SQL ou une procédure stockée. Dans ce cas, vous devez utiliser l'espace réservé de point d'interrogation (?), comme dans l'exemple suivant.

Code :
SELECT * FROM Customers WHERE CustomerID = ?
En conséquence, l'ordre dans lequel les objets Parameter sont ajoutés à la collection Parameters doit directement correspondre à la position de l'espace réservé ? pour le paramètre.
Ton problème aurait été le même avec toute source de données autre que SQL Server et Oracle

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 21h45   #9
Expert Confirmé Sénior
 
Avatar de Pol63
 
Homme Sébastien
Développeur informatique
Inscription : avril 2007
Messages : 9 197
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : avril 2007
Messages : 9 197
Points : 13 423
Points : 13 423
oui je me doute bien que c'est la surcouche du framework ...
enfin si c'est tout oledb qui fait ca, je préfère de loin le namespace d'sql server
__________________
si vous ne comprenez pas ce que je dis, demandez à google
Pol63 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h08.


 
 
 
 
Partenaires

Hébergement Web