Jump to content
marioverdini

data type mismatch in criteria expression vb net ms access

Recommended Posts

marioverdini

Bom dia atodos do forum estou com problema e quem puder me ajudar agradeço 
tenho um codigo fonte em vb.net com banco de dados access que esta a me dar uma dor de cabeça sendo assim vou expor o problema 
tenho um formulario cadastro de produtos que  so esta aceitando numeros inteiro ao colocar o preço numero fracionado (Ex: 12.16) e devidaente ao tentar gravar ou atualizar me aparece esse erro:lembrando que o sistema so aceita ponto e nao virgura 
" data type mismatch in criteria expression "

1) No codigo a variavel preço esta declarada como double
cmd.Parameters.Add(New OleDbParameter("@d5", System.Data.OleDb.OleDbType.Double, 10, "price"))

2) no banco de dados access esta assim 
NOME DO CAMPO | TIPO DE DADOS 
          Preço                    numerico
-----------propiedades do campo--------------
tamanho do campo:    duplo
casas decimais:          Auto
necessario:                  nao
indexado:                     nao
Alinhamento de Texto: geral

ATENÇAO: eu agora nao sei se o problema e no codigo ou no banco de dados


   
 

Edited by marioverdini

Share this post


Link to post
Share on other sites
nelsonr

Boa tarde marioverdini,

estás a criar um parametro novo e a adicionar à lista de parametros, mas não falta ai o valor do parametro?

 

Share this post


Link to post
Share on other sites
marioverdini

ele nao me deixa colocar a virgula ja alterei para me deixar colocar virgula e e nada 

segue abaixo o textbox

Private Sub txtPrice_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPrice.KeyPress
        Dim keyChar = e.KeyChar

        If Char.IsControl(keyChar) Then
            'Allow all control characters.
        ElseIf Char.IsDigit(keyChar) OrElse keyChar = "."c Then
            Dim text = Me.txtPrice.Text
            Dim selectionStart = Me.txtPrice.SelectionStart
            Dim selectionLength = Me.txtPrice.SelectionLength

            text = text.Substring(0, selectionStart) & keyChar & text.Substring(selectionStart + selectionLength)

            If Integer.TryParse(text, New Integer) AndAlso text.Length > 16 Then
                'Reject an integer that is longer than 16 digits.
                e.Handled = True
            ElseIf Double.TryParse(text, New Double) AndAlso text.IndexOf("."c) < text.Length - 5 Then
                'Reject a real number with two many decimal places.
                e.Handled = False
            End If
        Else
            'Reject all other characters.
            e.Handled = True
        End If
    End Sub

Edited by marioverdini

Share this post


Link to post
Share on other sites
nelsonr

Parece que tens dois topicos sobre a mesma situação.

O outro é: https://www.portugal-a-programar.pt/forums/topic/77339-vbnet-sql/

Share this post


Link to post
Share on other sites
marioverdini

Verdade mas um e com banco de dados access e o outro e banco de dados SQL e o mesmo sistema com bancos diferentes 
voçe acredita que ate hj nao consegui resolver o problema

Share this post


Link to post
Share on other sites
nelsonr

Verifica o que indiquei no outro post.

Não deve ser necessário atualizar nos dois posts.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.