Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: lucius en Agosto 07, 2012, 08:32:04 pm
-
Como puedo darle forma a mi campo temporal "precio" cuando me enlazo con un datagrid no hay problema pero con MSHflexgrid por ejemplo 125.49 me devuelve en el grid 125.489999999999.
Tambien el caso de que quiera que mi campo "precio" sea tipo double cual deberia ser la longitud nose porque "colocaron" 10.2?
rsTemp.Fields.Append "precio", adDouble, 10.2, adFldIsNullable
Bueno dejo todo el codigo solo agregan los controles
Dim rsTemp As New Recordset
Sub Seteo_Grid_Herarquico(Grid As MSHFlexGrid)
Dim i As Long
With Grid
Set .DataSource = Nothing
.Rows = 2
'.Clear
For i = 0 To .Cols - 1
.TextMatrix(1, i) = "" '
Next
End With
If rsTemp.RecordCount > 0 Then
Set Grid.DataSource = rsTemp
End If
Grid.FormatString = "ID |NOMBRE |precio"
End Sub
Private Sub btnAgregar_Click()
rsTemp.AddNew
rsTemp.Fields(0) = Trim(txtIDn)
rsTemp.Fields(1) = Trim(txtNombre)
rsTemp.Fields(2) = Trim(txtPrecio)
rsTemp.Update
Call Seteo_Grid_Herarquico(MSHFlexgrid1)
End Sub
Sub TablaTemporal2()
rsTemp.CursorType = adOpenStatic
rsTemp.Fields.Append "IDn", adVarChar, 6, adFldIsNullable
rsTemp.Fields.Append "Nombre", adVarChar, 35, adFldIsNullable
rsTemp.Fields.Append "precio", adDouble, 10.2, adFldIsNullable
rsTemp.Open
Call Seteo_Grid_Herarquico(MSHFlexgrid1)
End Sub
Private Sub Form_Load()
Call TablaTemporal2
End Sub
-
si, creo que es asi nomas el control y te la tenes que rebuscar manualmente, por ejemplo haciedo un Format ya funciona bien.
MSHFlexGrid1.TextMatrix(1, 3) = Format(125.49, "0.00")
saludos.
-
Pero tendria que crear una variable como contador por que los item se agregan y eliminan o en todo caso aplicar un for cada vez que se agregue o eliminte algo o me equivoco.
Habra otra forma de hacer esto quizas creando el rs temporal de otra manera.
-
en lugar de adDouble, no podrias utilizar adCurrency? Ni se si existe, pero para valores monetarios, es mejor Currency
-
El currency esta bien pero devuelve por ejemplo 180.4 en lugar de 180.40 fuera de eso esta bien, alguna otra alternativa
-
Claro, ahí si deberias utilizar FormatCurrency y listo :P
-
'Usando la coma(,) como separador decimal
Monto="2000,023"
MSHFlexGrid1.TextMatrix(1, 3) = FormatCurrency(Monto, 2)
-
Cuando en mi textbox tengo coma osea 125,48 me muestra 12545.00 dejo el ejemplo cmpleto, la verdad estoy algo mareado con este asunto.
Dejo el ejemplo para que lo revisen.
https://rapidshare.com/files/2859248902/foro.rar (https://rapidshare.com/files/2859248902/foro.rar)
-
Al final soluciones con la funcion Cdbl
rsTemp.Fields(2) = CDbl(txtPrecio) y reemplazar el decimal sea punto o coma y darle formato como me dijieron en respuestas anteriores.
With MSHFlexgrid1
For i = 1 To .Rows - 1
'.Col = 5
.Row = i
If ObtenerDecimal(LOCALE_SDECIMAL) = "," Then
.TextMatrix(i, 2) = Format(Replace(.TextMatrix(i, 2), ".", ","), "Fixed")
Else
.TextMatrix(i, 2) = Format(Replace(.TextMatrix(i, 2), ",", "."), "Fixed")
End If
Next i
End With
Por ultimo me recomendaron el listview y me animare para utilizarlo, saludos y gracias.