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
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
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
Re,
J'ai réussi en SQL chez moi, ça donne :
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) " _
& "VALUES (" & CInt(NoLoc) & ", " & CDate(DateLoc) & ", " _
& Replace(MontantLoc, ",", ".") & ");"
DoCmd.RunSQL strSQL
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jessy Sempere [MVP]" a écrit dans le message
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/
------------------------------------
Re,
J'ai réussi en SQL chez moi, ça donne :
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) " _
& "VALUES (" & CInt(NoLoc) & ", " & CDate(DateLoc) & ", " _
& Replace(MontantLoc, ",", ".") & ");"
DoCmd.RunSQL strSQL
@+
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/
------------------------------------
"Jessy Sempere [MVP]" <jessy.sempere@prg.sncf.fr> a écrit dans le message
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/
------------------------------------
Re,
J'ai réussi en SQL chez moi, ça donne :
strSQL = "INSERT INTO TblRecapLoc ( Loc, DateDeLoc, MontantNet ) " _
& "VALUES (" & CInt(NoLoc) & ", " & CDate(DateLoc) & ", " _
& Replace(MontantLoc, ",", ".") & ");"
DoCmd.RunSQL strSQL
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jessy Sempere [MVP]" a écrit dans le message
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/
------------------------------------
Salut Pierre
J'ai essayé aussi mais access transcrit le montant calculé dans le SQL
donc le montant avec les décimales...
Tu peux tester si tu veux, tu verras... ;-))
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Pierre CFI [mvp]" a écrit dans le message news:
#EZm#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
decesdonné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, ",", ".")
pourremplacer 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
unchamp 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
queje 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
Salut Pierre
J'ai essayé aussi mais access transcrit le montant calculé dans le SQL
donc le montant avec les décimales...
Tu peux tester si tu veux, tu verras... ;-))
@+
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/
------------------------------------
"Pierre CFI [mvp]" <XXX_pierresalaun@aol.com> a écrit dans le message news:
#EZm#YdAEHA.2112@TK2MSFTNGP11.phx.gbl...
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
Salut Pierre
J'ai essayé aussi mais access transcrit le montant calculé dans le SQL
donc le montant avec les décimales...
Tu peux tester si tu veux, tu verras... ;-))
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Pierre CFI [mvp]" a écrit dans le message news:
#EZm#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
decesdonné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, ",", ".")
pourremplacer 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
unchamp 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
queje 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
en plus, je sais pas pourquoi j'ai dis çà, car je suis sur que replace
marche (ce que tu viens de dire), car je l'ai utilisé la
semaine derniére
mais notre ami a mis Str avec, et là, no good
--
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: c271nb$kkb$
Salut Pierre
J'ai essayé aussi mais access transcrit le montant calculé dans le SQL
donc le montant avec les décimales...
Tu peux tester si tu veux, tu verras... ;-))
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Pierre CFI [mvp]" a écrit dans le message
news:
#EZm#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
decesdonné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, ",",
".")
pourremplacer 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
unchamp 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
queje 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
en plus, je sais pas pourquoi j'ai dis çà, car je suis sur que replace
marche (ce que tu viens de dire), car je l'ai utilisé la
semaine derniére
mais notre ami a mis Str avec, et là, no good
--
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: c271nb$kkb$1@muguet.sncf.fr...
Salut Pierre
J'ai essayé aussi mais access transcrit le montant calculé dans le SQL
donc le montant avec les décimales...
Tu peux tester si tu veux, tu verras... ;-))
@+
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/
------------------------------------
"Pierre CFI [mvp]" <XXX_pierresalaun@aol.com> a écrit dans le message
news:
#EZm#YdAEHA.2112@TK2MSFTNGP11.phx.gbl...
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
en plus, je sais pas pourquoi j'ai dis çà, car je suis sur que replace
marche (ce que tu viens de dire), car je l'ai utilisé la
semaine derniére
mais notre ami a mis Str avec, et là, no good
--
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: c271nb$kkb$
Salut Pierre
J'ai essayé aussi mais access transcrit le montant calculé dans le SQL
donc le montant avec les décimales...
Tu peux tester si tu veux, tu verras... ;-))
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Pierre CFI [mvp]" a écrit dans le message
news:
#EZm#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
decesdonné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, ",",
".")
pourremplacer 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
unchamp 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
queje 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