J'ai un beug dans la commande ci-dessous, cela vient de
FGlibelle qui est egal a "pain patisserie fraiche" je
pense qu'il faut ajouter une replace FGlibelle mais je ne
vois pas comment l'ecrire
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut Jean-Claude! :O)
En SQL les type "String" doivent être entouré d'apostrophes.
ex : ---- insert into matable(champ1, champ2) values ('test', 2) --- où, par exemple, champ1 est de type varchar et champ2 int.
maintenant, je ne connais pas le type de tous les champs de ta reqête, mais si on suppose que seul FGlibelle est de type String alors tu aurais : '*** Call ADOcnx.Execute("insert into " & TableIDC & _ "(IDTypIDC, IDIDC, libelle, IDC) values (" & _ LIDTypeIDC & ", " & LeTypeIDC & ", '" & _ FGlibelle & "', " & FGValeur & ")") '***
note bien la différence.. ceci : ", " & FGlibelle & ", " devient ceci : ", '" & FGlibelle & "', "
En SQL les type "String" doivent être entouré d'apostrophes.
ex :
----
insert into matable(champ1, champ2) values ('test', 2)
---
où, par exemple, champ1 est de type varchar et champ2 int.
maintenant, je ne connais pas le type de tous les champs de ta reqête, mais
si on suppose que seul FGlibelle est de type String alors tu aurais :
'***
Call ADOcnx.Execute("insert into " & TableIDC & _
"(IDTypIDC, IDIDC, libelle, IDC) values (" & _
LIDTypeIDC & ", " & LeTypeIDC & ", '" & _
FGlibelle & "', " & FGValeur & ")")
'***
note bien la différence.. ceci :
", " & FGlibelle & ", "
devient ceci :
", '" & FGlibelle & "', "
En SQL les type "String" doivent être entouré d'apostrophes.
ex : ---- insert into matable(champ1, champ2) values ('test', 2) --- où, par exemple, champ1 est de type varchar et champ2 int.
maintenant, je ne connais pas le type de tous les champs de ta reqête, mais si on suppose que seul FGlibelle est de type String alors tu aurais : '*** Call ADOcnx.Execute("insert into " & TableIDC & _ "(IDTypIDC, IDIDC, libelle, IDC) values (" & _ LIDTypeIDC & ", " & LeTypeIDC & ", '" & _ FGlibelle & "', " & FGValeur & ")") '***
note bien la différence.. ceci : ", " & FGlibelle & ", " devient ceci : ", '" & FGlibelle & "', "
Merci pour ta réponse, cela fonctionne après corrections et je note dans mon pense-bete ces précieuses recommandations.
J'ai un autre problème sur cette appli. J'ai un MSFlexGrid dans lequel j'ai saisi des infos, à partir d'un bouton "enregistre" je fais une boucle sur celui-ci pour enregistrer les infos dans une table Access.
Au premier tour de la boucle pas de problème, au second j'ai ce message d'erreur : le nombre de valeurs de la requetre doit coincider avec le nombre de champs de destination.
Pourtant les infos a enregistrer coincident bien avec les champs de la table, d'ailleurs le premier tour enregistre bien, voila mon code
'boucle fgIDC (41 lignes) Dim FGlibelle As String Dim FGValeur As String Dim lavaleur As Integer voirligneFG = -1
Do While voirligneFG <= 41 'capture des infos de FgIDC voirligneFG = voirligneFG + 1 'laligneFG = FgIDC.Row FGlibelle = fgIDC.TextMatrix(voirligneFG, 0) FGValeur = fgIDC.TextMatrix(voirligneFG, 1) lavaleur = CInt(FGValeur)
'recherche de IDIDC Call MyFonctions.ExecSQL("Select IDIDC from TypeIDC where libelle='" & FGlibelle & "'", ADOrst, ADOcnx) LeTypeIDC = ADOrst("IDIDC") 'entre le nouvel enregistrement LIDTypeIDC = RubIDCSelect
Merci pour ta réponse, cela fonctionne après corrections
et je note dans mon pense-bete ces précieuses
recommandations.
J'ai un autre problème sur cette appli. J'ai un MSFlexGrid
dans lequel j'ai saisi des infos, à partir d'un
bouton "enregistre" je fais une boucle sur celui-ci pour
enregistrer les infos dans une table Access.
Au premier tour de la boucle pas de problème, au second
j'ai ce message d'erreur : le nombre de valeurs de la
requetre doit coincider avec le nombre de champs de
destination.
Pourtant les infos a enregistrer coincident bien avec les
champs de la table, d'ailleurs le premier tour enregistre
bien, voila mon code
'boucle fgIDC (41 lignes)
Dim FGlibelle As String
Dim FGValeur As String
Dim lavaleur As Integer
voirligneFG = -1
Do While voirligneFG <= 41
'capture des infos de FgIDC
voirligneFG = voirligneFG + 1
'laligneFG = FgIDC.Row
FGlibelle = fgIDC.TextMatrix(voirligneFG, 0)
FGValeur = fgIDC.TextMatrix(voirligneFG, 1)
lavaleur = CInt(FGValeur)
'recherche de IDIDC
Call MyFonctions.ExecSQL("Select IDIDC from TypeIDC
where libelle='" & FGlibelle & "'", ADOrst, ADOcnx)
LeTypeIDC = ADOrst("IDIDC")
'entre le nouvel enregistrement
LIDTypeIDC = RubIDCSelect
Merci pour ta réponse, cela fonctionne après corrections et je note dans mon pense-bete ces précieuses recommandations.
J'ai un autre problème sur cette appli. J'ai un MSFlexGrid dans lequel j'ai saisi des infos, à partir d'un bouton "enregistre" je fais une boucle sur celui-ci pour enregistrer les infos dans une table Access.
Au premier tour de la boucle pas de problème, au second j'ai ce message d'erreur : le nombre de valeurs de la requetre doit coincider avec le nombre de champs de destination.
Pourtant les infos a enregistrer coincident bien avec les champs de la table, d'ailleurs le premier tour enregistre bien, voila mon code
'boucle fgIDC (41 lignes) Dim FGlibelle As String Dim FGValeur As String Dim lavaleur As Integer voirligneFG = -1
Do While voirligneFG <= 41 'capture des infos de FgIDC voirligneFG = voirligneFG + 1 'laligneFG = FgIDC.Row FGlibelle = fgIDC.TextMatrix(voirligneFG, 0) FGValeur = fgIDC.TextMatrix(voirligneFG, 1) lavaleur = CInt(FGValeur)
'recherche de IDIDC Call MyFonctions.ExecSQL("Select IDIDC from TypeIDC where libelle='" & FGlibelle & "'", ADOrst, ADOcnx) LeTypeIDC = ADOrst("IDIDC") 'entre le nouvel enregistrement LIDTypeIDC = RubIDCSelect
> Dim lavaleur As Integer lavaleur = CDec(FGValeur)
la variable lavaleur a également 1 décimale, mais cela l'enregistre en valeur arrondie
lavaleur est de type Integer (entier) et ne peut donc pas contenir de décimal.. utilise plutôt un type single. Aussi, fait gaffe lors de la conversion de la donnée Single en String.. VB converti une valeur décimale selon tes configurations systèmes.
je veux dire : '*** ?4.5 4,5 '***
ainsi la valeur passé à la requête contient une virgule et non un point. Or ton serveur SQL lui (tout comme VB) considère le point comme étant séparateur décimal. Tu devrais donc remplacer la virgule par un point.
Tu obtiens possiblement déjà une erreur mais ton "On Error Resume Next" te prive de cette information...
> Dim lavaleur As Integer
lavaleur = CDec(FGValeur)
la variable lavaleur a également 1 décimale, mais cela
l'enregistre en valeur arrondie
lavaleur est de type Integer (entier) et ne peut donc pas contenir de
décimal.. utilise plutôt un type single. Aussi, fait gaffe lors de la
conversion de la donnée Single en String.. VB converti une valeur décimale
selon tes configurations systèmes.
je veux dire :
'***
?4.5
4,5
'***
ainsi la valeur passé à la requête contient une virgule et non un point. Or
ton serveur SQL lui (tout comme VB) considère le point comme étant
séparateur décimal. Tu devrais donc remplacer la virgule par un point.
Tu obtiens possiblement déjà une erreur mais ton "On Error Resume Next" te
prive de cette information...
> Dim lavaleur As Integer lavaleur = CDec(FGValeur)
la variable lavaleur a également 1 décimale, mais cela l'enregistre en valeur arrondie
lavaleur est de type Integer (entier) et ne peut donc pas contenir de décimal.. utilise plutôt un type single. Aussi, fait gaffe lors de la conversion de la donnée Single en String.. VB converti une valeur décimale selon tes configurations systèmes.
je veux dire : '*** ?4.5 4,5 '***
ainsi la valeur passé à la requête contient une virgule et non un point. Or ton serveur SQL lui (tout comme VB) considère le point comme étant séparateur décimal. Tu devrais donc remplacer la virgule par un point.
Tu obtiens possiblement déjà une erreur mais ton "On Error Resume Next" te prive de cette information...
Effectivement il est préférable de saisir (dans le MSFlrxGrid) lavaleur avec un point car elle servira ulterieurement dans des calculs (multiplication)
Si je declare (pour 102.4) Dim lavaleur As Single lavaleur = CSng(FGValeur)
lavaleur2,4 et cela beug
Cordialement JCM
-----Message d'origine-----
Dim lavaleur As Integer lavaleur = CDec(FGValeur)
la variable lavaleur a également 1 décimale, mais cela l'enregistre en valeur arrondie
lavaleur est de type Integer (entier) et ne peut donc pas
contenir de
décimal.. utilise plutôt un type single. Aussi, fait
gaffe lors de la
conversion de la donnée Single en String.. VB converti
une valeur décimale
selon tes configurations systèmes.
je veux dire : '*** ?4.5 4,5 '***
ainsi la valeur passé à la requête contient une virgule
et non un point. Or
ton serveur SQL lui (tout comme VB) considère le point
comme étant
séparateur décimal. Tu devrais donc remplacer la virgule
par un point.
Tu obtiens possiblement déjà une erreur mais ton "On
Effectivement il est préférable de saisir (dans le
MSFlrxGrid) lavaleur avec un point car elle servira
ulterieurement dans des calculs (multiplication)
Si je declare (pour 102.4)
Dim lavaleur As Single
lavaleur = CSng(FGValeur)
lavaleur=102,4
et cela beug
Cordialement
JCM
-----Message d'origine-----
Dim lavaleur As Integer
lavaleur = CDec(FGValeur)
la variable lavaleur a également 1 décimale, mais cela
l'enregistre en valeur arrondie
lavaleur est de type Integer (entier) et ne peut donc pas
contenir de
décimal.. utilise plutôt un type single. Aussi, fait
gaffe lors de la
conversion de la donnée Single en String.. VB converti
une valeur décimale
selon tes configurations systèmes.
je veux dire :
'***
?4.5
4,5
'***
ainsi la valeur passé à la requête contient une virgule
et non un point. Or
ton serveur SQL lui (tout comme VB) considère le point
comme étant
séparateur décimal. Tu devrais donc remplacer la virgule
par un point.
Tu obtiens possiblement déjà une erreur mais ton "On
Effectivement il est préférable de saisir (dans le MSFlrxGrid) lavaleur avec un point car elle servira ulterieurement dans des calculs (multiplication)
Si je declare (pour 102.4) Dim lavaleur As Single lavaleur = CSng(FGValeur)
lavaleur2,4 et cela beug
Cordialement JCM
-----Message d'origine-----
Dim lavaleur As Integer lavaleur = CDec(FGValeur)
la variable lavaleur a également 1 décimale, mais cela l'enregistre en valeur arrondie
lavaleur est de type Integer (entier) et ne peut donc pas
contenir de
décimal.. utilise plutôt un type single. Aussi, fait
gaffe lors de la
conversion de la donnée Single en String.. VB converti
une valeur décimale
selon tes configurations systèmes.
je veux dire : '*** ?4.5 4,5 '***
ainsi la valeur passé à la requête contient une virgule
et non un point. Or
ton serveur SQL lui (tout comme VB) considère le point
comme étant
séparateur décimal. Tu devrais donc remplacer la virgule
par un point.
Tu obtiens possiblement déjà une erreur mais ton "On
102,4 est la représentation formatté de la valeur (selon les configs système) il faudra donc remplacer (Replace()) la virgule par un point lorsque l'on concatène la valeur à la chaine
102,4 est la représentation formatté de la valeur (selon les configs
système) il faudra donc remplacer (Replace()) la virgule par un point
lorsque l'on concatène la valeur à la chaine
102,4 est la représentation formatté de la valeur (selon les configs système) il faudra donc remplacer (Replace()) la virgule par un point lorsque l'on concatène la valeur à la chaine
OK j'ai modifié mon code, le debug.print sQuery m'affiche 102.7 par contre le Insert into beug avec le message type de données incompatible dans l'expression du critère
dois-je transformer le champs IDC de ma table en texte car il est en numérique ?
si c'est le cas, quand j'aurais à extraire cette valeur dans une autre procédure elle sera en string soit "102.7"
et si je veux la multiplier à une variable numérique il me faudra la convertir en single soit
150*Csng(102.7) est-ce bien cela ?
Cordialement Jean Claude
-----Message d'origine-----
Cela ne fonctionne pas car Replace(FGValeur, ",", ".") donne une valeur string et il faut une valeur numérique
Faux. :O)
Il te faut une String représentant une valeur numérique.
Car c'est une
string que tu dois passer en paramètre.
et si tu essai comme ceci ? : '*** Call ADOcnx.Execute("insert into " & TableIDC & _ "(IDTypIDC, IDIDC, libelle, IDC) values (" & _ LIDTypeIDC & ", " & LeTypeIDC & ", '" & _ FGlibelle & "', " & Replace(CSng(FGValeur), ",", ".")
OK j'ai modifié mon code, le debug.print sQuery m'affiche
102.7
par contre le Insert into beug avec le message type de
données incompatible dans l'expression du critère
dois-je transformer le champs IDC de ma table en texte car
il est en numérique ?
si c'est le cas, quand j'aurais à extraire cette valeur
dans une autre procédure elle sera en string soit "102.7"
et si je veux la multiplier à une variable numérique il me
faudra la convertir en single soit
150*Csng(102.7) est-ce bien cela ?
Cordialement
Jean Claude
-----Message d'origine-----
Cela ne fonctionne pas car
Replace(FGValeur, ",", ".") donne une valeur string
et il faut une valeur numérique
Faux. :O)
Il te faut une String représentant une valeur numérique.
Car c'est une
string que tu dois passer en paramètre.
et si tu essai comme ceci ? :
'***
Call ADOcnx.Execute("insert into " & TableIDC & _
"(IDTypIDC, IDIDC, libelle, IDC) values (" & _
LIDTypeIDC & ", " & LeTypeIDC & ", '" & _
FGlibelle & "', " & Replace(CSng(FGValeur), ",", ".")
OK j'ai modifié mon code, le debug.print sQuery m'affiche 102.7 par contre le Insert into beug avec le message type de données incompatible dans l'expression du critère
dois-je transformer le champs IDC de ma table en texte car il est en numérique ?
si c'est le cas, quand j'aurais à extraire cette valeur dans une autre procédure elle sera en string soit "102.7"
et si je veux la multiplier à une variable numérique il me faudra la convertir en single soit
150*Csng(102.7) est-ce bien cela ?
Cordialement Jean Claude
-----Message d'origine-----
Cela ne fonctionne pas car Replace(FGValeur, ",", ".") donne une valeur string et il faut une valeur numérique
Faux. :O)
Il te faut une String représentant une valeur numérique.
Car c'est une
string que tu dois passer en paramètre.
et si tu essai comme ceci ? : '*** Call ADOcnx.Execute("insert into " & TableIDC & _ "(IDTypIDC, IDIDC, libelle, IDC) values (" & _ LIDTypeIDC & ", " & LeTypeIDC & ", '" & _ FGlibelle & "', " & Replace(CSng(FGValeur), ",", ".")