Hola, tengo el siguiente código, el detalle es en el evento click del botón (al final), ahí comparto mis dudas
Código:
' Gambas class file
Public iNumRegCatalogo As Integer
Public Sub Form_Open()
Dim archivo As CsvFile
Dim iregistro As Integer
Dim cRegistrosCatalogo As New Collection
'abrir archivo CSV
archivo = New CsvFile(Application.Path & "/catalogo.csv")
'meter contenido a un collection
Do Until archivo.Eof
cRegistrosCatalogo[archivo.Line] = archivo.Read()
Inc iNumRegCatalogo
Loop
' cerrar archivo
archivo.Close()
' agregar columnas al tableview
TableView1.AddColumn("Descripcion", 500)
TableView1.AddColumn("Precio", 100)
'agregar un renglón al tabeview para poder introducir datos
Inc TableView1.Rows.Count
' meter el contenido del collection al tableview
For iregistro = 2 To iNumRegCatalogo
TableView1[iregistro - 2, 0].Text = cRegistrosCatalogo[iregistro]["descripción"]
' la columna del precio, tienen que ir formateada con signo de pesos y alineada a la derecha
TableView1[iregistro - 2, 1].Text = Format(cRegistrosCatalogo[iregistro]["precio distribuidor sin IVA"], GB.Currency)
TableView1[iregistro - 2, 1].Alignment = 2
' siguiente registro
Inc TableView1.Rows.Count
Next
End
Public Sub btnSuma_Click()
' calcular la suma de todos los registros del tableview
Dim iregistro As Integer
Dim fsuma As Float
Dim simporte As String
fsuma = 0
For iregistro = 2 To iNumRegCatalogo
' sumamos uno a uno cada registro
fsuma = fsuma + CFloat(TableView1[iregistro, 1].Text)
Next
' mostramos la suma
txtSuma.Text = fsuma
End
El problema es que el CFLOAT, marca error, no coinciden los tipos: requerido float, obtenido string en cambio.
Después de muchas vueltas supuse que el problema era que el contenido del
TableView1[iregistro, 1].Text tenia el signo de
$, y eso provocaba que el CFLOAT fallara, así que lo quite de esta forma:
Código:
simporte = Trim(Mid(TableView1[iregistro, 1].Text, 2, TableView1[iregistro, 1].Text.Len))
fsuma = fsuma + CFloat(simporte)
Pero aun así sigue marcando el mismo error, así que mi conclusión es que el problema es el FORMAT, en lugar de poner comas (,) a los miles pone espacios en blanco (1,234.56 lo pone 1 234.56) y el CFLOAT no es capaz de convertirlo.
Revisando la instrucción format, las paginas donde lo he consultado, muestran que el resultado coloca comas, no espacios es blanco, alguien que me pueda guiar?
El contenido del tableview lo pongo con formato para la debida presentación, aquí solo pongo dos columnas, pero realmente son varias, y pues tengo que distinguir entre aquellas que representan dinero y las que solo cantidades.
Anexo imagen donde el format no coloca las comas "," sino espacios en blanco.