Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les données
à
insérer ont été stockées dans des variables de ma procédure. Or, une de
ces
données est de type Double (puisqu'elle va être insérée dans un champ
Double
de ma table), mais dans ma requête SQL, la virgule de décimale de ma
donnée
est considérée comme un séparateur, et l'exécution de ma requête VBA
produit
l'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".") pour
remplacer la virgule par un point, mais rien n'y fait (avec cette
fonction,
ma variable se retrouve entre guillemets, comme c'est devenu une chaîne,
et
du coup je suppose que la valeur renvoyée dans ma requête est, par
exemple,
"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans un
champ Double !), et j'obtiens une autre erreur d'exécution de requête :
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " & CDate(DateLoc) &
"
AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL
Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les données
à
insérer ont été stockées dans des variables de ma procédure. Or, une de
ces
données est de type Double (puisqu'elle va être insérée dans un champ
Double
de ma table), mais dans ma requête SQL, la virgule de décimale de ma
donnée
est considérée comme un séparateur, et l'exécution de ma requête VBA
produit
l'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".") pour
remplacer la virgule par un point, mais rien n'y fait (avec cette
fonction,
ma variable se retrouve entre guillemets, comme c'est devenu une chaîne,
et
du coup je suppose que la valeur renvoyée dans ma requête est, par
exemple,
"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans un
champ Double !), et j'obtiens une autre erreur d'exécution de requête :
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " & CDate(DateLoc) &
"
AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL
Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les données
à
insérer ont été stockées dans des variables de ma procédure. Or, une de
ces
données est de type Double (puisqu'elle va être insérée dans un champ
Double
de ma table), mais dans ma requête SQL, la virgule de décimale de ma
donnée
est considérée comme un séparateur, et l'exécution de ma requête VBA
produit
l'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".") pour
remplacer la virgule par un point, mais rien n'y fait (avec cette
fonction,
ma variable se retrouve entre guillemets, comme c'est devenu une chaîne,
et
du coup je suppose que la valeur renvoyée dans ma requête est, par
exemple,
"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans un
champ Double !), et j'obtiens une autre erreur d'exécution de requête :
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " & CDate(DateLoc) &
"
AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL
Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les données à
insérer ont été stockées dans des variables de ma procédure. Or, une de ces
données est de type Double (puisqu'elle va être insérée dans un champ Double
de ma table), mais dans ma requête SQL, la virgule de décimale de ma donnée
est considérée comme un séparateur, et l'exécution de ma requête VBA produit
l'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".") pour
remplacer la virgule par un point, mais rien n'y fait (avec cette fonction,
ma variable se retrouve entre guillemets, comme c'est devenu une chaîne, et
du coup je suppose que la valeur renvoyée dans ma requête est, par exemple,
"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans un
champ Double !), et j'obtiens une autre erreur d'exécution de requête :
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " & CDate(DateLoc) & "
AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL
Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les données à
insérer ont été stockées dans des variables de ma procédure. Or, une de ces
données est de type Double (puisqu'elle va être insérée dans un champ Double
de ma table), mais dans ma requête SQL, la virgule de décimale de ma donnée
est considérée comme un séparateur, et l'exécution de ma requête VBA produit
l'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".") pour
remplacer la virgule par un point, mais rien n'y fait (avec cette fonction,
ma variable se retrouve entre guillemets, comme c'est devenu une chaîne, et
du coup je suppose que la valeur renvoyée dans ma requête est, par exemple,
"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans un
champ Double !), et j'obtiens une autre erreur d'exécution de requête :
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " & CDate(DateLoc) & "
AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL
Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les données à
insérer ont été stockées dans des variables de ma procédure. Or, une de ces
données est de type Double (puisqu'elle va être insérée dans un champ Double
de ma table), mais dans ma requête SQL, la virgule de décimale de ma donnée
est considérée comme un séparateur, et l'exécution de ma requête VBA produit
l'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".") pour
remplacer la virgule par un point, mais rien n'y fait (avec cette fonction,
ma variable se retrouve entre guillemets, comme c'est devenu une chaîne, et
du coup je suppose que la valeur renvoyée dans ma requête est, par exemple,
"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans un
champ Double !), et j'obtiens une autre erreur d'exécution de requête :
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " & CDate(DateLoc) & "
AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL
Tu dois remplacer la vigule par un point
Tu dois remplacer la vigule par un point
Tu dois remplacer la vigule par un point
Salut essaie ca
strSQL = "INSERT INTO TblRecapLoc (Loc, DateDeLoc, MontantNet) VALUES (" &
NoLoc & ", #" & DateLo &
"#, " & MontantLoc & ")"
Salut essaie ca
strSQL = "INSERT INTO TblRecapLoc (Loc, DateDeLoc, MontantNet) VALUES (" &
NoLoc & ", #" & DateLo &
"#, " & MontantLoc & ")"
Salut essaie ca
strSQL = "INSERT INTO TblRecapLoc (Loc, DateDeLoc, MontantNet) VALUES (" &
NoLoc & ", #" & DateLo &
"#, " & MontantLoc & ")"
"msnews.microsoft.com" a écrit dans le message news:Tu dois remplacer la vigule par un point
Oui ... ça je sais ... d'ailleurs, si tu as lu mon post initial, mon but
est
de trouver comment faire ce remplacement de virgule par un point. Car j'ai
beau essayer avec Replace(), ça ne marche pas (Erreur d'exécution :
"incompatibilité de type", parce que, puisque j'ai transformé ma valeur
Double en valeur String avec Replace(), je ne peux pas insérer une valeur
String dans mon champ de table de type Double)
Si tou ou les autres avez d'autres pistes ... merci bcp !
"msnews.microsoft.com" <laurent@ezlogic.mc> a écrit dans le message news:
uafQFzcAEHA.220@TK2MSFTNGP09.phx.gbl...
Tu dois remplacer la vigule par un point
Oui ... ça je sais ... d'ailleurs, si tu as lu mon post initial, mon but
est
de trouver comment faire ce remplacement de virgule par un point. Car j'ai
beau essayer avec Replace(), ça ne marche pas (Erreur d'exécution :
"incompatibilité de type", parce que, puisque j'ai transformé ma valeur
Double en valeur String avec Replace(), je ne peux pas insérer une valeur
String dans mon champ de table de type Double)
Si tou ou les autres avez d'autres pistes ... merci bcp !
"msnews.microsoft.com" a écrit dans le message news:Tu dois remplacer la vigule par un point
Oui ... ça je sais ... d'ailleurs, si tu as lu mon post initial, mon but
est
de trouver comment faire ce remplacement de virgule par un point. Car j'ai
beau essayer avec Replace(), ça ne marche pas (Erreur d'exécution :
"incompatibilité de type", parce que, puisque j'ai transformé ma valeur
Double en valeur String avec Replace(), je ne peux pas insérer une valeur
String dans mon champ de table de type Double)
Si tou ou les autres avez d'autres pistes ... merci bcp !
Bonjour,
As tu essayé de modifier tes paramètres régionaux ?
Bonjour,
As tu essayé de modifier tes paramètres régionaux ?
Bonjour,
As tu essayé de modifier tes paramètres régionaux ?
Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les données
à
insérer ont été stockées dans des variables de ma procédure. Or, une de
ces
données est de type Double (puisqu'elle va être insérée dans un champ
Double
de ma table), mais dans ma requête SQL, la virgule de décimale de ma
donnée
est considérée comme un séparateur, et l'exécution de ma requête VBA
produit
l'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".") pour
remplacer la virgule par un point, mais rien n'y fait (avec cette
fonction,
ma variable se retrouve entre guillemets, comme c'est devenu une chaîne,
et
du coup je suppose que la valeur renvoyée dans ma requête est, par
exemple,
"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans un
champ Double !), et j'obtiens une autre erreur d'exécution de requête :
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " & CDate(DateLoc) &
"
AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL
Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les données
à
insérer ont été stockées dans des variables de ma procédure. Or, une de
ces
données est de type Double (puisqu'elle va être insérée dans un champ
Double
de ma table), mais dans ma requête SQL, la virgule de décimale de ma
donnée
est considérée comme un séparateur, et l'exécution de ma requête VBA
produit
l'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".") pour
remplacer la virgule par un point, mais rien n'y fait (avec cette
fonction,
ma variable se retrouve entre guillemets, comme c'est devenu une chaîne,
et
du coup je suppose que la valeur renvoyée dans ma requête est, par
exemple,
"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans un
champ Double !), et j'obtiens une autre erreur d'exécution de requête :
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " & CDate(DateLoc) &
"
AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL
Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les données
à
insérer ont été stockées dans des variables de ma procédure. Or, une de
ces
données est de type Double (puisqu'elle va être insérée dans un champ
Double
de ma table), mais dans ma requête SQL, la virgule de décimale de ma
donnée
est considérée comme un séparateur, et l'exécution de ma requête VBA
produit
l'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".") pour
remplacer la virgule par un point, mais rien n'y fait (avec cette
fonction,
ma variable se retrouve entre guillemets, comme c'est devenu une chaîne,
et
du coup je suppose que la valeur renvoyée dans ma requête est, par
exemple,
"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans un
champ Double !), et j'obtiens une autre erreur d'exécution de requête :
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " & CDate(DateLoc) &
"
AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL
"Gaël Schmitt [MS]" a écrit dans le message
news:Bonjour,
As tu essayé de modifier tes paramètres régionaux ?
Mes paramètres régionaux sont corrects (décimale = virgule, séparateur de
liste = point-virgule) et n'ont pas besoin d'être modifiés.
Le problème vient de l'écriture d'une requête SQL : c'est le point qui
sépare les décimales dans ce type de phrase SQL. Or ma variable calculée
comporte une virgule comme séparateur de décimale. Mon objectif est donc
de
remplacer la virgule en point, mais comme je l'ai dit j'ai essayé
Replace()
et ça me donne une erreur d'incompatibilité de type entre ma donnée
variable
(devenue String à cause de la fonction Replace) et mon champ de
destination
qui est de type Double.
"Gaël Schmitt [MS]" <gaels@online.microsoft.com> a écrit dans le message
news: uynLF8cAEHA.3712@tk2msftngp13.phx.gbl...
Bonjour,
As tu essayé de modifier tes paramètres régionaux ?
Mes paramètres régionaux sont corrects (décimale = virgule, séparateur de
liste = point-virgule) et n'ont pas besoin d'être modifiés.
Le problème vient de l'écriture d'une requête SQL : c'est le point qui
sépare les décimales dans ce type de phrase SQL. Or ma variable calculée
comporte une virgule comme séparateur de décimale. Mon objectif est donc
de
remplacer la virgule en point, mais comme je l'ai dit j'ai essayé
Replace()
et ça me donne une erreur d'incompatibilité de type entre ma donnée
variable
(devenue String à cause de la fonction Replace) et mon champ de
destination
qui est de type Double.
"Gaël Schmitt [MS]" a écrit dans le message
news:Bonjour,
As tu essayé de modifier tes paramètres régionaux ?
Mes paramètres régionaux sont corrects (décimale = virgule, séparateur de
liste = point-virgule) et n'ont pas besoin d'être modifiés.
Le problème vient de l'écriture d'une requête SQL : c'est le point qui
sépare les décimales dans ce type de phrase SQL. Or ma variable calculée
comporte une virgule comme séparateur de décimale. Mon objectif est donc
de
remplacer la virgule en point, mais comme je l'ai dit j'ai essayé
Replace()
et ça me donne une erreur d'incompatibilité de type entre ma donnée
variable
(devenue String à cause de la fonction Replace) et mon champ de
destination
qui est de type Double.
Bonjour
Effectivement c'est con cette histoire de séparateur décimal qui est
considéré comme un séparateur de champ en SQL...
Honnêtement en SQL je ne vois pas trop la solution par contre
il te suffit d'utiliser un recordset plutôt qu'un SQL et là tu n'auras
plus de problème...
Exemple :
******************************************************
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("TblRecapLoc", dbOpenDynaset)
With rst
.AddNew
.Fields("Loc") = CInt(Me.IdLoc)
.Fields("DateDeLoc") = CDate(NoJour & "/" & NoMois & "/" &
NoAnnee)
.Fields("MontantNet") = Me.Montant * Me.Duree / Me.DureeTotale
.Update
End With
rst.Close: Set rst = Nothing
******************************************************
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Bonjour
Effectivement c'est con cette histoire de séparateur décimal qui est
considéré comme un séparateur de champ en SQL...
Honnêtement en SQL je ne vois pas trop la solution par contre
il te suffit d'utiliser un recordset plutôt qu'un SQL et là tu n'auras
plus de problème...
Exemple :
******************************************************
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("TblRecapLoc", dbOpenDynaset)
With rst
.AddNew
.Fields("Loc") = CInt(Me.IdLoc)
.Fields("DateDeLoc") = CDate(NoJour & "/" & NoMois & "/" &
NoAnnee)
.Fields("MontantNet") = Me.Montant * Me.Duree / Me.DureeTotale
.Update
End With
rst.Close: Set rst = Nothing
******************************************************
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Bonjour
Effectivement c'est con cette histoire de séparateur décimal qui est
considéré comme un séparateur de champ en SQL...
Honnêtement en SQL je ne vois pas trop la solution par contre
il te suffit d'utiliser un recordset plutôt qu'un SQL et là tu n'auras
plus de problème...
Exemple :
******************************************************
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("TblRecapLoc", dbOpenDynaset)
With rst
.AddNew
.Fields("Loc") = CInt(Me.IdLoc)
.Fields("DateDeLoc") = CDate(NoJour & "/" & NoMois & "/" &
NoAnnee)
.Fields("MontantNet") = Me.Montant * Me.Duree / Me.DureeTotale
.Update
End With
rst.Close: Set rst = Nothing
******************************************************
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
bonjour
on peut multiplier la variable, puis la diviser dans la chaine sql
Montant = Montant * 100
insert ...... & (Montant /100 ) & ...
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Jessy Sempere [MVP]" a écrit dans le message
de news: c26vlb$ji4$
Bonjour
Effectivement c'est con cette histoire de séparateur décimal qui est
considéré comme un séparateur de champ en SQL...
Honnêtement en SQL je ne vois pas trop la solution par contre
il te suffit d'utiliser un recordset plutôt qu'un SQL et là tu n'auras
plus de problème...
Exemple :
******************************************************
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("TblRecapLoc", dbOpenDynaset)
With rst
.AddNew
.Fields("Loc") = CInt(Me.IdLoc)
.Fields("DateDeLoc") = CDate(NoJour & "/" & NoMois & "/" &
NoAnnee)
.Fields("MontantNet") = Me.Montant * Me.Duree / Me.DureeTotale
.Update
End With
rst.Close: Set rst = Nothing
******************************************************
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"The Marmotte" <F... The Spammers> a écrit dans le message news:
4046ebdf$0$29933$Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les
données
àinsérer ont été stockées dans des variables de ma procédure. Or, une
de
cesdonnées est de type Double (puisqu'elle va être insérée dans un champ
Doublede ma table), mais dans ma requête SQL, la virgule de décimale de ma
donnéeest considérée comme un séparateur, et l'exécution de ma requête VBA
produitl'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".")
pour
remplacer la virgule par un point, mais rien n'y fait (avec cette
fonction,ma variable se retrouve entre guillemets, comme c'est devenu une
chaîne,
etdu coup je suppose que la valeur renvoyée dans ma requête est, par
exemple,"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans
un
champ Double !), et j'obtiens une autre erreur d'exécution de requête
:
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures
que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " &
CDate(DateLoc) &
"AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL
bonjour
on peut multiplier la variable, puis la diviser dans la chaine sql
Montant = Montant * 100
insert ...... & (Montant /100 ) & ...
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Jessy Sempere [MVP]" <jessy.sempere@prg.sncf.fr> a écrit dans le message
de news: c26vlb$ji4$1@muguet.sncf.fr...
Bonjour
Effectivement c'est con cette histoire de séparateur décimal qui est
considéré comme un séparateur de champ en SQL...
Honnêtement en SQL je ne vois pas trop la solution par contre
il te suffit d'utiliser un recordset plutôt qu'un SQL et là tu n'auras
plus de problème...
Exemple :
******************************************************
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("TblRecapLoc", dbOpenDynaset)
With rst
.AddNew
.Fields("Loc") = CInt(Me.IdLoc)
.Fields("DateDeLoc") = CDate(NoJour & "/" & NoMois & "/" &
NoAnnee)
.Fields("MontantNet") = Me.Montant * Me.Duree / Me.DureeTotale
.Update
End With
rst.Close: Set rst = Nothing
******************************************************
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"The Marmotte" <F... The Spammers> a écrit dans le message news:
4046ebdf$0$29933$626a14ce@news.free.fr...
Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les
données
à
insérer ont été stockées dans des variables de ma procédure. Or, une
de
ces
données est de type Double (puisqu'elle va être insérée dans un champ
Double
de ma table), mais dans ma requête SQL, la virgule de décimale de ma
donnée
est considérée comme un séparateur, et l'exécution de ma requête VBA
produit
l'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".")
pour
remplacer la virgule par un point, mais rien n'y fait (avec cette
fonction,
ma variable se retrouve entre guillemets, comme c'est devenu une
chaîne,
et
du coup je suppose que la valeur renvoyée dans ma requête est, par
exemple,
"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans
un
champ Double !), et j'obtiens une autre erreur d'exécution de requête
:
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures
que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " &
CDate(DateLoc) &
"
AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL
bonjour
on peut multiplier la variable, puis la diviser dans la chaine sql
Montant = Montant * 100
insert ...... & (Montant /100 ) & ...
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Jessy Sempere [MVP]" a écrit dans le message
de news: c26vlb$ji4$
Bonjour
Effectivement c'est con cette histoire de séparateur décimal qui est
considéré comme un séparateur de champ en SQL...
Honnêtement en SQL je ne vois pas trop la solution par contre
il te suffit d'utiliser un recordset plutôt qu'un SQL et là tu n'auras
plus de problème...
Exemple :
******************************************************
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("TblRecapLoc", dbOpenDynaset)
With rst
.AddNew
.Fields("Loc") = CInt(Me.IdLoc)
.Fields("DateDeLoc") = CDate(NoJour & "/" & NoMois & "/" &
NoAnnee)
.Fields("MontantNet") = Me.Montant * Me.Duree / Me.DureeTotale
.Update
End With
rst.Close: Set rst = Nothing
******************************************************
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"The Marmotte" <F... The Spammers> a écrit dans le message news:
4046ebdf$0$29933$Bonjour à tous,
Voilà, j'exécute une requête SQL Ajout via VBA, pour laquelle les
données
àinsérer ont été stockées dans des variables de ma procédure. Or, une
de
cesdonnées est de type Double (puisqu'elle va être insérée dans un champ
Doublede ma table), mais dans ma requête SQL, la virgule de décimale de ma
donnéeest considérée comme un séparateur, et l'exécution de ma requête VBA
produitl'erreur : "le nombre de données insérées doit être égale au nombre de
champs de destination"
J'ai essayé plein de trucs, du genre transformer ma variable en
Replace(Str(MaVariable), ",", ".") ou Replace(MaVariable, ",", ".")
pour
remplacer la virgule par un point, mais rien n'y fait (avec cette
fonction,ma variable se retrouve entre guillemets, comme c'est devenu une
chaîne,
etdu coup je suppose que la valeur renvoyée dans ma requête est, par
exemple,"150.25" au lieu de 150.25. Du coup j'essaie de stocker un String dans
un
champ Double !), et j'obtiens une autre erreur d'exécution de requête
:
"Incompatibilité de type".
Voici donc mon bout de code, merci pour votre aide, ça fait des heures
que
je fais du surplace, j'en ai marre !!!
Dim NoLoc as Integer, DateLoc as Date, MontantLoc as Double, strSQL as
String
NoLoc = Me.IdLoc
DateLoc = NoJour & "/" & NoMois & "/" & NoAnnee
MontantLoc = Me.Montant * Me.Duree / Me.DureeTotale
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) "
strSQL = strSQL & "SELECT " & CInt(NoLoc) & " AS F1, " &
CDate(DateLoc) &
"AS F2, "
strSQL = strSQL & Replace(Str(MontantLoc), ",", ".") & " AS F3;"
DoCmd.RunSQL strSQL