daveleblanc
asked on
CONVERTING VALUE FROM DATAGRID TO CURRENCY 50pts
ok so i have a crosstab query with a bunch of string numbre values that need to be converted to currency im my datagrid.
so i figured id loop through the dataset and change each value. then rebind to the grid when finished.
which works until i have to return the value back to the dataset. where it promptly craps out.
Public Function addDollarSign()
Dim intCount As Integer
Dim x As Integer
Dim numColumns As Integer
Dim strCellValue As String
Dim intRow As Integer
Dim intColumn As Integer
Dim index As Integer
Dim dateArray(10) As String
dateArray(0) = "1/1/2000"
dateArray(1) = "11/1/2006"
dateArray(2) = "12/1/2006"
dateArray(3) = "1/1/2007"
dateArray(4) = "2/1/2007"
dateArray(5) = "3/1/2007"
dateArray(6) = "4/1/2007"
dateArray(7) = "5/1/2007"
dateArray(8) = "6/1/2007"
dateArray(9) = "7/1/2007"
index = 0
intRow = 1
intColumn = 3
x = 1
intCount = ds2.Tables("result").Rows. Count()
'switch column after all rows finished
Try
Do Until intColumn = dateArray.Length
Do Until x = intCount
'get value
strCellValue = ds2.Tables("result").Rows( x).Item(da teArray(in dex))
'add $ to value if not = 0
If strCellValue <> "0" Then
strCellValue = FormatCurrency(strCellValu e, 2)
'return value
ds2.Tables("result").Rows( x).Item(da teArray(in dex)) = strCellValue '<--errors out
End If
Loop
intRow = intRow + 1
index = index + 1
Loop
intColumn = intColumn + 1
Catch ex As Exception
MsgBox(ex.Message)
Debug.WriteLine(ex.Message )
Exit Function
End Try
End Function
here is the error that is produced
System.FormatException: Input string was not in a correct format.
at System.Number.ParseDouble( String s, NumberStyles style, NumberFormatInfo info)
at System.Double.Parse(String s, NumberStyles style, IFormatProvider provider)
at System.Convert.ToDouble(St ring value, IFormatProvider provider)
at System.String.System.IConv ertible.To Double(IFo rmatProvid er provider)
at System.Convert.ToDouble(Ob ject value)
at System.Data.Common.DoubleS torage.Set (Int32 record, Object value)
at System.Data.DataColumn.set _Item(Int3 2 record, Object value)Couldn't store <$29,324.00> in 1/1/2000 Column. Expected type is Double.
so basically it wants a double but if i used double i obviously lose the currency format. and a custom grid style/format is out of the question.
so what do i need to do to get thses values back into the dataset please help.
so i figured id loop through the dataset and change each value. then rebind to the grid when finished.
which works until i have to return the value back to the dataset. where it promptly craps out.
Public Function addDollarSign()
Dim intCount As Integer
Dim x As Integer
Dim numColumns As Integer
Dim strCellValue As String
Dim intRow As Integer
Dim intColumn As Integer
Dim index As Integer
Dim dateArray(10) As String
dateArray(0) = "1/1/2000"
dateArray(1) = "11/1/2006"
dateArray(2) = "12/1/2006"
dateArray(3) = "1/1/2007"
dateArray(4) = "2/1/2007"
dateArray(5) = "3/1/2007"
dateArray(6) = "4/1/2007"
dateArray(7) = "5/1/2007"
dateArray(8) = "6/1/2007"
dateArray(9) = "7/1/2007"
index = 0
intRow = 1
intColumn = 3
x = 1
intCount = ds2.Tables("result").Rows.
'switch column after all rows finished
Try
Do Until intColumn = dateArray.Length
Do Until x = intCount
'get value
strCellValue = ds2.Tables("result").Rows(
'add $ to value if not = 0
If strCellValue <> "0" Then
strCellValue = FormatCurrency(strCellValu
'return value
ds2.Tables("result").Rows(
End If
Loop
intRow = intRow + 1
index = index + 1
Loop
intColumn = intColumn + 1
Catch ex As Exception
MsgBox(ex.Message)
Debug.WriteLine(ex.Message
Exit Function
End Try
End Function
here is the error that is produced
System.FormatException: Input string was not in a correct format.
at System.Number.ParseDouble(
at System.Double.Parse(String
at System.Convert.ToDouble(St
at System.String.System.IConv
at System.Convert.ToDouble(Ob
at System.Data.Common.DoubleS
at System.Data.DataColumn.set
so basically it wants a double but if i used double i obviously lose the currency format. and a custom grid style/format is out of the question.
so what do i need to do to get thses values back into the dataset please help.
ASKER
the reason i went with the array is bc its a cross table query with the "date value" is actually the column name. the code works properly and isnt the problem
im having a problem at this line
ds2.Tables("result").Rows( x).Item(da teArray(in dex)) = strCellValue
where strCellValue would contain "$29,565,123"
and its trying to insert it as a double when it needs to be string
i basically need to force the dataset to accept it as a string and not double and i dont know how to accomplish that.
im having a problem at this line
ds2.Tables("result").Rows(
where strCellValue would contain "$29,565,123"
and its trying to insert it as a double when it needs to be string
i basically need to force the dataset to accept it as a string and not double and i dont know how to accomplish that.
Your error saying it is expecting a double value , not string. Since your value contains both comma and $ sign, it wont allow you. So you are going to lose format also.
If you are just trying to show as format , then why dont take from database as formatted.
like
select '$' + convert(varchar(10),cast(1 00 as money))
then you can just need to set datasource as it is.
I dont know why you are going with this approach.
Thad
If you are just trying to show as format , then why dont take from database as formatted.
like
select '$' + convert(varchar(10),cast(1
then you can just need to set datasource as it is.
I dont know why you are going with this approach.
Thad
ASKER
ok for the win, can someone put that convert statement into this>?
i cant get it to work.
TRANSFORM Sum(dollars_import.DollarA mt) AS SumOfDollarAmt
SELECT dollars_import.projectName AS Project, dollars_import.InvType AS [Inventory Type], Sum(dollars_import.DollarA mt) AS Total
FROM dollars_import, tblProgram
GROUP BY dollars_import.projectName , dollars_import.InvType
ORDER BY dollars_import.Date
PIVOT dollars_import.Date;
dollarAmt is the field that needs conversion
i cant get it to work.
TRANSFORM Sum(dollars_import.DollarA
SELECT dollars_import.projectName
FROM dollars_import, tblProgram
GROUP BY dollars_import.projectName
ORDER BY dollars_import.Date
PIVOT dollars_import.Date;
dollarAmt is the field that needs conversion
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
just used a custom table style and it worked
please close this as no one provided required answer
thanks to all the replied
please close this as no one provided required answer
thanks to all the replied
strCellValue = ds2.Tables("result").Rows(
dateArray always will return date value from your array
it should either field index number or field name.
strCellValue = ds2.Tables("result").Rows(
OR
strCellValue = ds2.Tables("result").Rows(
Thad