Une valeur de champ de formulaire comme 45,234
doit être insérée dans le DB sous la forme 45234
. Lorsque j'essaie de faire insérer pour 45,234
, tout ce qu'il obtient dans le DB est 0
. Note: - Je suis en mesure d'insérer 45.234
comme 45.234 dans la base de données SQL. Le champ de formulaire est nommé costOfShares
, qui doit être inséré dans la table ShareVales
(SQL Server 2005). J'utilise CF8.ColdFusion: comment insérer des nombres (ayant une virgule (,)/iserted actuellement 0) des champs de formulaire dans la base de données
SQL
table:-ShareVales; field:-costOfShares; DataType:-float
ColdFusion (page de formulaire)
<li>
<cfinput size="8" maxlength="20" name="costOfShares"
id="costOfShares" value="#share.GetcostOfShares()#">
</li>
Share.cfc: -
<cfcomponent>
<cfscript> Variables.CostOfShare </cfscript>
<cffunction name="GetCostOfShare" returntype="numeric" access="public" output="false">
<cfscript> variables.CostOfShare; </cfscript>
</cffunction>
<cffunction name="SetCostOfShare" retuntype="void" access="public" output="false">
<cfargument name="costOfShare" type="string" required="true">
<cfscript> variables. costOfShare = arguments. costOfShare; </cfscript>
</cffunction>
</cfcomponent>
ColdFusion (page requête)
<cffunction>
<cfargumnet>
<cfquery …>
INSERT INTO ShareVales(shareUnitId, costOfShares)
VALUES (
<cfqueryparam cfsqltype="cf_sql_integer"
value="#arguments.share.GetshareUnitId()#">,
<cfqueryparam cfsqltype="cf_sql_float"
value="#arguments.share.GetcostOfShares()#">);
</cfquery>
</cffunction>
Lorsque j'utilise ce qui suit directement dans l'éditeur de requête:
INSERT into share(setCostOfShare)
values(Cast(replace('5,322,444',',','') as float))
réussit. L'erreur est lors de l'utilisation de cfquery/cfqueryparam dans le modèle ColdFusion. Donc, comment insérer le 45234
lorsque le champ de formulaire costOfShares
contient une valeur avec des virgules?
INSERT en partage (setCostOfShare) values (Cast (remplacez '(5,322,444', ',', '') par float)) ... est une réussite dans l'éditeur de requêtes DB-SQL .... mais l'erreur est lors de l'utilisation de cfquery/ dans le template coldfusion. –
vas
En Allemagne, par exemple, la virgule signifie le début des décimales, donc vous ne pouvez pas le supprimer. D'autant plus que le champ DB est 'float', ce qui implique que les décimales * sont * significatives. Analyser l'entrée comme un nombre dans ColdFusion * avant * l'INSERT est le seul moyen de le faire. – Tomalak