Ayuda error por tipo de dato en MYSQL desde basic 2005

Buen amigo experto tengo un proyectito en visual basic 2005 y se conecta a una base datos de MYSQL el problema es que cuando doy clic en el botón guardar me sale error por tipo de dato creo, pero ya he probado cambiando varios tipos de dato desde la tabla y también desde código en basic 2005 y me sigue saliendo error: "Incorrect decimal value: 'cap' for column 'capacidad' at row 1" cuando doy en guardar este es el tipo de dato que tiene el campo capacidad FLOAT(2), donde en este se guarda la capacidad de un Bus que puede ser 2 enteros por ejemplo "42,40, etc.", y si le cambio de datos al campo capacidad a smallint, etc y en basic le pongo integer sale otro error: "Out of range value adjusted for column 'capacidad' at row 1" este es el código del botón guardar:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdguar.Click
Dim cod, dest, de, pla As String 
Dim cap As Decimal = TextBox3.Text // cap una variable donde cojo el campo "capacidad "
cod = TextBox1.Text
dest = cmbdes.SelectedItem
de = TextBox2.Text
pla = TextBox4.Text
Dim sql As String = "insert into `buses`(`idcodi`,`destino`,`descripcion`,`capacidad`,`placa`) values ('cod','dest','de','cap','pla')"
MiFuncion(sql)
End Sub
1

1 respuesta

Respuesta
1
Ok a ver los campos float normalmente se usan para almacenar decimales ejemplo 5.5 y no enteros entonces haz los siguiente
en la base de datos cambia el tipo de dato por int y de las la longitud.
Segundo.. cuando mandes el comando el campo que es entero no le pongas comillas.. ahora recuerda en concatenar bien el string..
Ejemplo
Dim sql As String = "insert into `buses`(`camponumero`,`destino`,`descripcion`,`capacidad`,`placa`) values (cod, & 'dest' &,.....)"
Revisa bien como debes concatenar los string en vb.net.. y recuerda que los campos tipo numero no van entrecomillas.
Recuerda valorar la respuesta
Muchas gracias experto por contestar mi problema con este tipo de dato pero es que aquí no tengo que concatenar, el problema es que anteriormente también cambie el tipo de dato en MYSQL a INT(2) y también lo puse sin comilla la variable 'cap' que contiene el textbox3 y en el código también:
Dim cod, dest, de, pla As String
Dim cap As Integer = TextBox3.Text
cod = TextBox1.Text
dest = cmbdes.SelectedItem
de = TextBox2.Text
pla = TextBox4.Text
Dim sql As String = "insert into `buses`(`idcodi`,`destino`,`descripcion`,`capacidad`,`placa`) values ('cod','dest','de',cap,'pla')"
MiFuncion(sql)
Si es int(2) en el código que tipo seria porque ala hora que doy en guardar sigue saliendo este error: Unknown column 'cap' in 'field list'
Vuelo y te digo.. cuando envías las variables en la cadena.. estas deben ser concatendas.. y no escrita como lo estas hacendó. Por eso te dice que cap no es una columna..
Debes enviar la cadena concatenada con la variable...
"insert into `buses`(`idcodi`,`destino`,`descripcion`,`capacidad`,`placa`) values ('&cod&','&dest&','&de&',&cap,&'&pla&')"
Recuerda valorar la respuesta
Experto concateno pero me subraya con una linea verde toda esta linea diciendo "Se esperaba fin de la instrucción":
dim sql as String "insert into `buses`(`idcodi`,`destino`,`descripcion`,`capacidad`,`placa`) values ('&cod&','&dest&','&de&',&cap,&'&pla&')"

¿No tengo idea se esta cerrando bien las comillas? Agradezco tu respuesta y tiempo aver si me ayudas con este error gran experto...
Si claro.. hay un error en la concatenación.. algo tienes mal. Ponle aencion y semguro encuentras en error... el error esta aquí, mira bien
('&cod&','&dest&','&de&',&cap,&'&pla&')"
Amigo experto ahora intento otra vez guardar y me slae este error: creo que es por sintaxis de la version de MYSQL 5, si me ayudas experto a solucionar este problemas gracias,,,,,
You have an error in your SQL syntax; check the manual that corresponds to your MYSQL server version for the right syntax to use near '&cap&,&'&pla&')' at line 1 
Ver... el & es parte del string fijo y no de la variable.. luego,&'&pla... esta mal.. debería ser..
&cap&,'&pla&')"
amigo experto lo siento pero anteriormente tambien puse asi: &cap&,'&pla&')" y continua el error: You have an error in your SQL syntax; check the manual that corresponds to your MYSQL server version for the right syntax to use near '&cap&,&'&pla&')' at line 1 
la verdad qe nose averigue e n otros expertos no tienen idea me dicen qe revise bien ya lo hice y ya no se qe mas pueda der
Haz una cosa.. antes de hacer el insert.. pon un breakpoint y revisa como esta construido el comando.. es decir luego del dim.. osea sobre el llamado de la función pones el breakpoint.
Dim cap As Integer = TextBox3.Text
cod = TextBox1.Text
dest = cmbdes.SelectedItem
de = TextBox2.Text
pla = TextBox4.Text
Dim sql As String = "insert into `buses`(`idcodi`,`destino`,`descripcion`,`capacidad`,`placa`) values ('cod','dest','de',cap,'pla')"
MiFuncion(sql)
Y pones aquí el string a ver como es que esta quedando..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas