Foros del Web » Programación para mayores de 30 ;) » .NET »

Variables 'single' y campos 'float' de mysql [VB]

Estas en el tema de Variables 'single' y campos 'float' de mysql [VB] en el foro de .NET en Foros del Web. Hola a todos, no estoy muy familiarizado con las variables 'single' pero las estoy usando ya que estoy almacenando dinero en esas variables y me ...
  #1 (permalink)  
Antiguo 12/08/2012, 00:14
 
Fecha de Ingreso: mayo-2012
Ubicación: Argentina, Buenos Aires
Mensajes: 28
Antigüedad: 11 años, 11 meses
Puntos: 1
Variables 'single' y campos 'float' de mysql [VB]

Hola a todos, no estoy muy familiarizado con las variables 'single' pero las estoy usando ya que estoy almacenando dinero en esas variables y me encontré con el problema de que al intentar guardarlas en un campo 'float' en mysql me borra los decimales... ¿Qué podría hacer?

Y otra cosa extraña que me sucede con las variables 'single'... En mi aplicación a meda que voy agregando productos se va sumando el dinero que cuesta cada uno de ellos en una variable 'single'.

Bueno aca les muestro una imágen... cada producto que se agrega se va sumando y se muestra en el total general. Si ustedes suman todo la cuenta da 86.9 pero el programa muestra 86.89999.


Gracias, saludos.
  #2 (permalink)  
Antiguo 15/08/2012, 12:09
 
Fecha de Ingreso: mayo-2012
Ubicación: Argentina, Buenos Aires
Mensajes: 28
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Variables 'single' y campos 'float' de mysql [VB]

bump......
  #3 (permalink)  
Antiguo 15/08/2012, 13:13
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Variables 'single' y campos 'float' de mysql [VB]

Hola nelsonpk! podrias colocar tu codigo de cómo almacenas tu data a la BD?. Con respecto al segundo punto podrias resolverlo con un Math.Round(minumero,2), donde 2 vendría a ser el numero de decimales a redondear. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 17/08/2012, 06:46
 
Fecha de Ingreso: mayo-2012
Ubicación: Argentina, Buenos Aires
Mensajes: 28
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Variables 'single' y campos 'float' de mysql [VB]

Para guardar los datos uso el conector .NET que dan en la página oficial de mysql, creo la conexión y con esta función que cree guardo los datos:

Código PHP:
Public Function insert_into(ByVal table As StringByVal args As StringByVal values As String)

        
conexion.Open()

        
Dim sqlcommand As String "INSERT INTO " table " ( " args " ) VALUES ( " values " )"
        
Dim command As MySqlCommand = New MySqlCommand(sqlcommandconexion)

        Try

            
command.ExecuteNonQuery()

        Catch 
mi As MySqlException

            MsgBox
("Error en la instrucción MySQL: " mi.MessagevbCritical)
            
End

        End 
Try

        
conexion.Close()

        Return 
True

    End 
Function 
Esta es la tabla...
Código:
CREATE TABLE `ventas` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `userid` int(11) unsigned NOT NULL,
  `cod` varchar(64) NOT NULL,
  `precio` float NOT NULL,
  `hora` int(11) unsigned NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Y así guardo especificamente en esa tabla...

Código PHP:
Private Function ventas_actual_a_general()

        
Form1.conexion.Open()

        
Dim sqlcommand As String "SELECT * FROM venta_actual"
        
Dim command As MySqlCommand = New MySqlCommand(sqlcommandForm1.conexion)
        
Dim reader As MySqlDataReader command.ExecuteReader()

        
Dim result As Boolean

        
Try

            If 
reader.HasRows False Then

                MsgBox
("Error: Se ha cerrado una venta que no tiene productos."vbCritical)

                
reader.Close()
                
Form1.conexion.Close()

                
result False

            
Else

                
Dim i As Integer
                i 
0

                
While (reader.Read())

                    
array_cod(i) = reader!cod
                    array_precio
(i) = Convert.ToSingle(reader!precio)

                    
1

                End 
While

                
reader.Close()

                
Form1.conexion.Close()

                For 
As Integer 0 To array_cod.Length 1

                    
If array_cod(x) <> "" And array_cod(x) <> " " Then

                        Form1
.insert_into("ventas""userid, cod, precio, hora""'" userid "', '" _
                                          array_cod
(x) & "', '" array_precio(x) & _
                                          
"', '" Form1.TimeToUnix(Now) & "'")

                    
End If

                
Next

                Call borrar_venta_actual
()

                For 
0 To 255

                    array_cod
(x) = Nothing
                    array_precio
(x) = Nothing

                Next

                result 
True

            End 
If

        Catch 
mi As MySqlException

            MsgBox
("Error en la instrucción MySQL: " mi.MessagevbCritical)
            
End

        End 
Try

        Return 
result

    End 
Function 
PD: Provaré lo del redondeo.
Edit: Lo del redondeo funcionó, gracias !

Última edición por nelsonpk; 17/08/2012 a las 07:01
  #5 (permalink)  
Antiguo 23/08/2012, 16:44
 
Fecha de Ingreso: mayo-2012
Ubicación: Argentina, Buenos Aires
Mensajes: 28
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Variables 'single' y campos 'float' de mysql [VB]

bump 2.0 ....
  #6 (permalink)  
Antiguo 26/08/2012, 18:33
 
Fecha de Ingreso: mayo-2012
Ubicación: Argentina, Buenos Aires
Mensajes: 28
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Variables 'single' y campos 'float' de mysql [VB]

Bueno vengo a comentar que pude resolver el problema, dejo la solucón por si le sirve a alguien mas...

En mysql cambie el campo float por decimal(10,2) y en el vb.net use variables decimal... el único problema que tube haciendo esto es que cuando cargo los datos desde la base de datos los decimales los separa con , y para guardarlos es necesario usar el símbolo . entonces usé la función replace y fin del problema :D

Saludos espero que les sirva.

Etiquetas: campos, float, mysql, single, sql, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:21.