Question: My SQL is

```
"INSERT INTO table1 (Item, Price) VALUE ('" & ItemString & "', " & PriceValue & ")"

```

It works fine. But, if price is `12,345.67.` SQL error message is

Number of Query Values and Destination Fields are not the same.

It is because the value thousand comma delimiter. How should I modify my `SQL` to let the number value has comma delimiter (and possible $ sign)?

Thanks in advance.

Answer: 
You could use a `Recordset` instead of an `INSERT INTO` query:

```
Dim RS As DAO.Recordset
Set RS = CurrentDb.OpenRecordset("select * from table1 where 1=0")
RS.AddNew
RS("Item") = ItemString
RS("Price") = PriceValue
RS.Update
RS.Close
Set RS = Nothing

```

Notes:

* The `Recordset` automagically takes care of all the nasty gotchas like different decimal separators, quotes in strings, correct date/time values, and so on.  

So you don't need to mess around with strings, convert numbers etc.
* In order for this code to work, your Access database needs a reference to any version of the `Microsoft DAO Object Library`...this should already be the case in most newer Access versions
* The WHERE clause (`where 1=0`) is because the `Recordset` needs to "connect" to the table to know column names etc.  

But we are appending new rows only, so we don't actually need to load any existing rows, hence `where 1=0`.
It is not possible to append commas to the numeric or integer values in sql query.
Rather insert the values that supports the data type of the column and can be converted to the format required in UI.
For retrieval,you can use some thing like :

select testCol,replace(convert(varchar,cast(Price as money),1), '.00','') from testTbl.

Result :

testCol (No column name)
asd 12,346
asd 12,346