none
¿Como traer formato moneda de un campo precio en tabla de Acces, trabajando con Visual Basic 2010? RRS feed

  • Pregunta

  • Buen Dia expertos, espero puedan ayudarme. Soy nuevo en esto de la programacion y estoy desarrollando un punto de venta con Visual Basic 2010 y una base de datos en acces 2007. Cuando agrego un registro con el INSERT INTO desde el texbox del formulario (tex_precio.text), en el campo PRECIO  de la base de datos si se me guarda con 2 decimales (30.00). Pero cuando hago un SELECT al traer la informacion de ese campo al texbox, me viene como entero (30). No se si haya que darle un formato al texbox o declarar alguna variable, les pido de manera cordial su ayuda.

    Muchas gracias.

    Leonardo Palomares.

    martes, 6 de marzo de 2012 4:34

Todas las respuestas

  • Hola Leonardo.

    ¿El campo en el que guardas la cantidad monetaria es de tipo Double o Decimal tal y como se describe en este artículo?


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"

    martes, 6 de marzo de 2012 8:58
  • Hola Santiago, el campo de la base de datos es de tipo double. Ya lo habia intentado con decimal y moneda, y no he podido traer los datos correctamente al texbox.

    Aprecio tu ayuda.

    Gracias.


    Leonardo Palomares V. Estudiante

    martes, 6 de marzo de 2012 12:16
  • Hola de nuevo.

    Buscando información al respecto, he visto en este artículo que sí se le da formato al textbox

    Además, he encontrado estos otros artículos que podrían resultar interesantes acerca de los formatos

    http://office.microsoft.com/en-us/access-help/specify-how-data-displays-by-using-predefined-formats-HA001233061.aspx

    http://office.microsoft.com/en-us/access-help/format-property-number-and-currency-data-types-HA001232740.aspx


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"

    martes, 6 de marzo de 2012 15:35
  • Entonces procedo a dar formato a mi texbox, ya veo que hay que crear un procedimiento... sin embargo, este procedimiento se le asigna al texbox?

    Creo que estoy aun con dudas...


    Leonardo Palomares V. Estudiante

    martes, 6 de marzo de 2012 18:29
  • Por lo que entiendo del artículo, en el evento de apertura del formulario "Form_Open" es donde se establece que el textbox tiene ese formato.

    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"

    martes, 6 de marzo de 2012 23:54
  • Form Open? o Form Load? Busco el evento open en el area de eventos pero no lo encuentro en ningun lado....

    Disculpa si parezco molesto en esto Santiago, pero soy nuevo...

    Estoy leyendo y trato de resolver, normalmente en las noches es cuando me dedico a programar...

    Es cierto que con SQL no se tiene este tipo de problemas?


    Leonardo Palomares V. Estudiante

    miércoles, 7 de marzo de 2012 3:08
  • Hola de nuevo.

    Form_Open es el nombre que da al evento, usa el Load en su caso.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"

    miércoles, 7 de marzo de 2012 8:54
  • Hola Santiago, el codigo que me mandas me marca ciertos errores, no se si este haciendo algo mal. Encontre el FormatCurrency y lo use en el Form_Load. Hasta ahi todo bien, cargo la configuracion regional del equipo, pero al hacer el SELECT me sigue enviando numero entero (sin decimales y sin signo de pesos).

    Te mando el codigo:

    Public Class Frm_Pruebas

        Private Sub Frm_Pruebas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Precio As Double
            Tex_Precio.Text = FormatCurrency(Precio, -1, TriState.UseDefault, TriState.UseDefault, TriState.UseDefault)

     

        End Sub

        Function Buscar_Registro(ByVal xId As String) As Boolean
            Dim ID As Integer
            ID = Convert.ToInt32(xId)

            Dim Precio As Double
            Tex_Precio.Text = FormatCurrency(Precio, -1, TriState.UseDefault, TriState.UseDefault, TriState.UseDefault)

            'Crear conexion
            Dim oConexion As New OleDbConnection
            oConexion.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = d:\\BDDPruebas\\BDDProbar.accdb; Persist Security Info = False "

            'Cadena SQL
            Dim CadenaSQL As String
            CadenaSQL = "SELECT * FROM Probar WHERE id = " & ID

            'Adaptador
            Dim Adaptador As New OleDbDataAdapter(CadenaSQL, oConexion)

            'Dataset
            Dim Daset As New DataSet

            'Llenar el dataset
            oConexion.Open()
            Adaptador.Fill(Daset)
            oConexion.Close()

            'Contar registro
            If (Daset.Tables(0).Rows.Count = 0) Then
                Return False
            Else
                Tex_Precio.Text = Daset.Tables(0).Rows(0)("precio").ToString()
                Daset.Dispose()
                Return True
            End If
        End Function


        Private Sub Cmb_Buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmb_Buscar.Click
            If Buscar_Registro(Tex_ID.Text) = True Then
                MessageBox.Show("Se encontro Registro")
            Else
                Tex_Precio.Focus()

            End If
        End Sub

      


    Leonardo Palomares V. Estudiante

    jueves, 8 de marzo de 2012 4:54