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`.
The following query assumes that your `Price` column has type `MONEY`:

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

```

I am casting the `PriceValue` parameter to type `MONEY`, which should work so long as it has the format `$XXX,XXX.XX`