marioverdini 0 Posted May 3, 2019 Report Share Posted May 3, 2019 (edited) 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 May 3, 2019 by marioverdini Link to post Share on other sites
nelsonr 331 Posted May 6, 2019 Report Share Posted May 6, 2019 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? Link to post Share on other sites
marioverdini 0 Posted May 6, 2019 Author Report Share Posted May 6, 2019 (edited) 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 May 6, 2019 by marioverdini Link to post Share on other sites
nelsonr 331 Posted May 9, 2019 Report Share Posted May 9, 2019 Parece que tens dois topicos sobre a mesma situação. O outro é: https://www.portugal-a-programar.pt/forums/topic/77339-vbnet-sql/ Link to post Share on other sites
marioverdini 0 Posted May 9, 2019 Author Report Share Posted May 9, 2019 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 Link to post Share on other sites
nelsonr 331 Posted May 9, 2019 Report Share Posted May 9, 2019 Verifica o que indiquei no outro post. Não deve ser necessário atualizar nos dois posts. Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now