Type incompatible [Résolu]

Messages postés
23
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
28 septembre 2010
- - Dernière réponse : 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.
Afficher la suite 

19 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
53
3
Merci
:/

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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 131 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
53
0
Merci
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
Commenter la réponse de Renfield
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
0
Merci
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)
Commenter la réponse de cs_Jack
Messages postés
23
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
28 septembre 2010
0
Merci
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
Commenter la réponse de trecylafierte
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
53
0
Merci
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
Commenter la réponse de Renfield
Messages postés
23
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
28 septembre 2010
0
Merci
            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
Commenter la réponse de trecylafierte
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
0
Merci
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)
Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
0
Merci
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)
Commenter la réponse de cs_Jack
Messages postés
23
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
28 septembre 2010
0
Merci
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.
Commenter la réponse de trecylafierte
Messages postés
23
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
28 septembre 2010
0
Merci
            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.
Commenter la réponse de trecylafierte
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
53
0
Merci
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
Commenter la réponse de Renfield
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
0
Merci
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.
Commenter la réponse de cs_Jack
Messages postés
23
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
28 septembre 2010
0
Merci
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
Commenter la réponse de trecylafierte
Messages postés
23
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
28 septembre 2010
0
Merci
SVP est ce que le pb c'est parceque j'utilise un MSFLEXGRID.Car quand je pourrai utiliser la fonction val()
Commenter la réponse de trecylafierte
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
53
0
Merci
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
Commenter la réponse de Renfield
Messages postés
23
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
28 septembre 2010
0
Merci
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.
Commenter la réponse de trecylafierte
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
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
Commenter la réponse de NSUADI
Messages postés
23
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
28 septembre 2010
0
Merci
Merci
Commenter la réponse de trecylafierte
Messages postés
23
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
28 septembre 2010
0
Merci
Bonjour
Juste pour vous dire merci.Grâce à vos remarques j'ai résolu mon problème.Merci beaucoup.
Commenter la réponse de trecylafierte