Type incompatible

Résolu
trecylafierte Messages postés 23 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 28 septembre 2010 - 21 sept. 2010 à 09:59
trecylafierte Messages postés 23 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 28 septembre 2010 - 22 sept. 2010 à 13:35
Bonjour
J'essaye d'envoyer des données a partir d'un MSFLEXGRID vers ACCESS seuleument il m'envoit le message '13'type incompatible.Quand je change les valeurs à envoyer il ne m'envoit plus ce message d'erreur.je n'y comprend plus rien.J'ai essayé de mettre type numerique (format Reel double) dans ACCESS mais rien du tout cela ne fonctionne pas.
SVP si vous avez un idée aidez moi.Cela plante a values du champ fond.
Call Connection_SGBD
Call EnregistTuple("INSERT INTO table(nom_produit,fond)Values(,'" & Me.structureproduit.TextMatrix(0, 4) & "','" & Me.structureproduit.TextMatrix(6, 4) + Me.structureproduit.TextMatrix(2, 4) + Me.structureproduit.TextMatrix(2, 4) * (Val(Me.tva.Text) / 100) + Me.structureproduit.TextMatrix(3, 4) + Me.structureproduit.TextMatrix(3, 4) * (Val(Me.tva.Text) / 100) & "')")

Merci d'avance.

19 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 sept. 2010 à 16:41
:/

ca fonctionne ainsi ?

moche...
et non portable

, pour séparer champs et values
. pour les décimaux : 3.1415926535

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 sept. 2010 à 12:38
les quotes '
ne servent qu'a borner des données Textuelles

ne rien mettre pour du numérique

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 sept. 2010 à 13:19
Salut

Première chose pour ton confort et surtout le confort de ceux qui vont répondre : Mettre en forme le code proprement.
Ce sera plus facile à lire ET plus facile à dépanner :
Call EnregistTuple( _
    "INSERT INTO table(nom_produit,fond) " & _
    "Values(,'" & Me.structureproduit.TextMatrix(0, 4) & "','" & _
                  Me.structureproduit.TextMatrix(6, 4) + _
                  Me.structureproduit.TextMatrix(2, 4) + _
                  Me.structureproduit.TextMatrix(2, 4) * _
                  (Val(Me.tva.Text) / 100) + _
                  Me.structureproduit.TextMatrix(3, 4) + _
                  Me.structureproduit.TextMatrix(3, 4) * _
                  (Val(Me.tva.Text) / 100) & "')")

Je vois tout de suite :
- une virgule aussitôt après la ( après Values
- des additions de valeurs et des multiplications, sans parenthèse : risque d'erreur sur l'interprétation du compilo
- Comme te l'a dit Renfield, pas de ' d'encadrement pour les chiffres

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
trecylafierte Messages postés 23 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 28 septembre 2010
21 sept. 2010 à 14:12
Bonjour
j'ai enlevé les apostrophes(') maintenant il m'envoit le message:le nombre de valeurs de la requete doit coincider avec le nombre de champ destination pourtant tous les champ sont tous là dans values.
SVP dois aussi enlever le & et les " dans les champs numeriques.
merci
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 sept. 2010 à 14:18
ajoute EXPLICITEMENT le nom des champs dans ta requete, ca simplifiera la chose...

INSERT INTO table (CHAMP1, CHAMP2) VALUES (12, 13)


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
trecylafierte Messages postés 23 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 28 septembre 2010
21 sept. 2010 à 14:26
            If mois.Text <> "" Or annee.Text <> "" Or structureproduit.TextMatrix(1, 2) <> "" Or structureproduit.TextMatrix(1, 3) <> "" Or structureproduit.TextMatrix(1, 4) <> "" Then
                        Call Connection_SGBD
                        Call EnregistTuple("INSERT INTO structureDouala(nom_produit,mois,anne,prixproduit,cabotage,redevanceport,passage,fond,perequation,fraisgeneraux,fraisfinanciers,coulage,benefice,amortissemententretien,livraison,taxespeciale,margerevendeur) " & _
                        " Values('" & Me.structureproduit.TextMatrix(0, 2) & "','" & Me.mois.Text & "','" & Me.annee.Text & "','" & Me.structureproduit.TextMatrix(1, 2) & "', Me.structureproduit.TextMatrix(2, 2) , Me.structureproduit.TextMatrix(3, 2) , Me.structureproduit.TextMatrix(4, 2) , Me.structureproduit.TextMatrix(5, 2)  " & _
                        " , Me.structureproduit.TextMatrix(6, 2) , Me.structureproduit.TextMatrix(7, 2) , Me.structureproduit.TextMatrix(8, 2) , Me.structureproduit.TextMatrix(9, 2) , Me.structureproduit.TextMatrix(10, 2) , Me.structureproduit.TextMatrix(11, 2) , Me.structureproduit.TextMatrix(12, 2) , Me.structureproduit.TextMatrix(13, 2) , Me.structureproduit.TextMatrix(14, 2) )")
            End If

Voici mon code complet il me dit Me.structureproduit.textmatrix non défini
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 sept. 2010 à 14:37
Si si, il les a mis; ils ne sont pas visibles facilement par le manque d'espace après le nom de la table, mais ils sont là.

Tu as combien de virgules dans ta ligne de commande ?
Il doit y en avoir un nombre paires, uniquement - tout comme les couples de parenthèses, les ' ou les ", tout ça marche obligatoirement par paire.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 sept. 2010 à 14:39
Remarque, non, il y a aussi les virgules délimitation des tableaux (dans les parenthèses).

Ce qui fait plaisir, c'est que tu n'as pas du tout tenu compte de mes recommandations pour la présentation de ton code.
Du coup, je n'ai pas du tout envie de passer 2 minutes à le remettre en forme pour pouvoir le lire. Tant pis pour toi.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
trecylafierte Messages postés 23 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 28 septembre 2010
21 sept. 2010 à 14:42
j'ai cru que vous parliez de le mettre comme je l'ai fait.je n'ai pas donc bien saisi ce que vous avez di.
0
trecylafierte Messages postés 23 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 28 septembre 2010
21 sept. 2010 à 14:46
            If mois.Text <> "" Or annee.Text <> "" Or structureproduit.TextMatrix(1, 2) <> "" Or structureproduit.TextMatrix(1, 3) <> "" Or structureproduit.TextMatrix(1, 4) <> "" Then
                        Call Connection_SGBD
                        Call EnregistTuple("INSERT INTO structureDouala(nom_produit,mois,anne,prixproduit,cabotage,redevanceport,passage,fond,perequation,fraisgeneraux,fraisfinanciers,coulage,benefice,amortissemententretien,livraison,taxespeciale,margerevendeur) " & _
                        " Values('" & Me.structureproduit.TextMatrix(0, 2) & "' " & _
                        " ,'" & Me.mois.Text & "' " & _
                        " ,'" & Me.annee.Text & "' " & _
                        " ,'" & Me.structureproduit.TextMatrix(1, 2) & "' " & _
                        " , Me.structureproduit.TextMatrix(2, 2) " & _
                        " , Me.structureproduit.TextMatrix(3, 2) " & _
                        " , Me.structureproduit.TextMatrix(4, 2) " & _
                        " , Me.structureproduit.TextMatrix(5, 2) " & _
                        " , Me.structureproduit.TextMatrix(6, 2) " & _
                        " , Me.structureproduit.TextMatrix(7, 2) " & _
                        " , Me.structureproduit.TextMatrix(8, 2) " & _
                        " , Me.structureproduit.TextMatrix(9, 2) " & _
                        " , Me.structureproduit.TextMatrix(10, 2) " & _
                        " , Me.structureproduit.TextMatrix(11, 2) " & _
                        " , Me.structureproduit.TextMatrix(12, 2) " & _
                        " , Me.structureproduit.TextMatrix(13, 2) " & _
                        " , Me.structureproduit.TextMatrix(14, 2) )")
            End If

Le voici je crois que c'est en forme.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 sept. 2010 à 14:46
pas vus les champs, soryy^^

gaffe: valeurs décimales => utiliser le point "." comme séparateur
sinon, ca va pas aller avec le separateur de champs... (utiliser Str$)

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 sept. 2010 à 14:48
Bon, j'ai pas pu m'empécher de faire le copier-coller puis de séparer les paramètres que tu colles toujours aux virgules, rendant encore plus difficile la lecture. Passons.

Sans aller très loin, je remarque :
- des champs avec une orthographe douteuse --> Revérifie le nom de tes champs, à la majuscule prêt.
- des champs qui, normalement, sont de type numérique comme 'mois' ou 'année', et tu mets toujours des ' aux valeurs.
Soit tu ne lis pas nos réponses, soit faut arrêter la cigarette.
- Fin de la 2ème ligne du Call EnregistTuple :
La ligne se termine par
..., Me.structureproduit.TextMatrix(5, 2) " & _
D'où sort ce guillemet ?
Si la syntaxe a été acceptée par l'éditeur, c'est qu'il doit y en avoir un autre de mal placé.

Bref.
Je te conseille une dernière fois de ne pas faire des lignes à rallonge.
Tu y verras beaucoup plus clair, je t'assure.
0
trecylafierte Messages postés 23 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 28 septembre 2010
21 sept. 2010 à 15:16
J'ai lu bien vos réponses et je les mets en pratique.C'est qu'il arrive que je saisisse mal.Excusez moi pour le désagrément causé.Les guillemets (" & _) me permettent d'aller à la ligne.Aussi j'ai continué à mettre les cotes(') sur le champ mois car je l'ai déclaré comme de type texte dans ACCESS.
Merci
0
trecylafierte Messages postés 23 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 28 septembre 2010
21 sept. 2010 à 15:18
SVP est ce que le pb c'est parceque j'utilise un MSFLEXGRID.Car quand je pourrai utiliser la fonction val()
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 sept. 2010 à 15:21
Le tout est que ta requete soit bien formée, au final, peut importe les MsFlexgrid, etc.

Str$(Val( ... ))




Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
trecylafierte Messages postés 23 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 28 septembre 2010
21 sept. 2010 à 16:04
Excusez moi j'ai une question au sujet du séparateur.J'aimerai savoir si le separateur point c'est au niveau de l'énumeration des champs ou alors au niveau de values.
Insert into nomdetable(champ1.champ2)values(valeur1.valeur2)
C'est bien comme cela.
Merci beaucoup pour l'aide que vous m'avez apporté.Vous m'avez eclairé sur beaucoup de flous que j'avais.Merci beaucoup.
0
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
21 sept. 2010 à 16:42
je pense que ta requête se porterait mieux si elle se présentait comme ceci:

            
Dim req As String
req="INSERT INTO structureDouala(nom_produit,mois,anne,prixproduit,cabotage,redevanceport,passage,fond,perequation,fraisgeneraux,fraisfinanciers,coulage,benefice,amortissemententretien,livraison,taxespeciale,margerevendeur) " & _
                        " Values('" & Me.structureproduit.TextMatrix(0, 2) & "','" & _
                        Me.mois.Text & "','" & _
                        Me.annee.Text & "','" & _
                        Me.structureproduit.TextMatrix(1, 2) & "'," & _
                        Me.structureproduit.TextMatrix(2, 2) & "," & _
                        Me.structureproduit.TextMatrix(3, 2) & "," & _
                        Me.structureproduit.TextMatrix(4, 2) & "," & _
                        Me.structureproduit.TextMatrix(5, 2) & "," & _
                        Me.structureproduit.TextMatrix(6, 2) & "," & _
                        Me.structureproduit.TextMatrix(7, 2) & "," & _
                        Me.structureproduit.TextMatrix(8, 2) & "," & _
                        Me.structureproduit.TextMatrix(9, 2) & "," & _
                        Me.structureproduit.TextMatrix(10, 2) & "," & _
                        Me.structureproduit.TextMatrix(11, 2) & "," & _
                        Me.structureproduit.TextMatrix(12, 2) & "," & _
                        Me.structureproduit.TextMatrix(13, 2) & "," & _
                        Me.structureproduit.TextMatrix(14, 2) & ")"
            


Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
0
trecylafierte Messages postés 23 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 28 septembre 2010
21 sept. 2010 à 16:50
Merci
0
trecylafierte Messages postés 23 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 28 septembre 2010
22 sept. 2010 à 13:35
Bonjour
Juste pour vous dire merci.Grâce à vos remarques j'ai résolu mon problème.Merci beaucoup.
0
Rejoignez-nous