SQL Server - tipo de dato VB.net

 
Vista:

tipo de dato VB.net

Publicado por Sergio (7 intervenciones) el 24/05/2007 06:48:21
Hola Amigos

resulta que estoy haciendo un insert en una tabla de SQL Server 2000

mi insert es mas menos asi

Dim sql As String
sql = ""
sql = sql + "insert into valores "
sql = sql + " ( valor,"
sql = sql + " valor1, "
sql = sql + " valor2, "
sql = sql + " valor3, "
sql = sql + " values ( "
sql = sql + " '" & TextBox1.Text & "',"
sql = sql + " '" & TextBox2.Text & "',"
sql = sql + " '" & TextBox3.Text & "',"
sql = sql + " '" & TextBox4.Text & ")"

y la tabla en la base la tengo asi:

valor Decimal Precision 19 Escala 4
valor1 Decimal Precision 19 Escala 4
valor2 Decimal Precision 19 Escala 4
valor3 Decimal Precision 19 Escala 4

Pero me dice que no se puede convertir un varchar en numeric
donde esta mi error ??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:tipo de dato VB.net

Publicado por bearu (12 intervenciones) el 24/05/2007 11:38:14
El problema es que estás intentando hacer un insert de strings en campos definidos como decimales, porque al generar el string de insert estás poniendo comillas en cada valor...no sé si me explico.

Tu cadena debería de ser algo como

Dim sql As String
sql = ""
sql = sql + "insert into valores "
sql = sql + " ( valor,"
sql = sql + " valor1, "
sql = sql + " valor2, "
sql = sql + " valor3, "
sql = sql + " values ( "
sql = sql + " " & TextBox1.Text & ","
sql = sql + " " & TextBox2.Text & ","
sql = sql + " " & TextBox3.Text & ","
sql = sql + " " & TextBox4.Text & ")"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:tipo de dato VB.net

Publicado por sergio (7 intervenciones) el 24/05/2007 22:56:35
Dim sql As String
sql = ""
sql = sql + "insert into pesos "
sql = sql + " ( fecha,"
sql = sql + " mes, "
sql = sql + " predio, "
sql = sql + " cliente, "
sql = sql + " especie, "
sql = sql + " vol_m3, "
sql = sql + " val_fac, "
sql = sql + " ing_op, "
sql = sql + " for_valor, "
sql = sql + " for_m3, "
sql = sql + " tra_valor, "
sql = sql + " tra_m3, "
sql = sql + " cos_valor, "
sql = sql + " cos_m3, "
sql = sql + " ast_valor, "
sql = sql + " ast_m3, "
sql = sql + " cam_valor, "
sql = sql + " cam_m3, "
sql = sql + " con_valor, "
sql = sql + " con_m3, "
sql = sql + " otr_valor, "
sql = sql + " otr_m3, "
sql = sql + " sub_total, "
sql = sql + " bon_mes, "
sql = sql + " menor_costo, "
sql = sql + " margen_bon, "
sql = sql + " por_mar_bon, "
sql = sql + " por_mar_sbon, "
sql = sql + " mar_pie_m3, "
sql = sql + " vol_est, "
sql = sql + " mar_pie_ha, "
sql = sql + " observacion) "
sql = sql + " values ( "
sql = sql + " '" & DateTimePicker1.Text & "',"
sql = sql + " '" & Label2.Text & "',"
sql = sql + " '" & ComboBox1.Text & "',"
sql = sql + " '" & ComboBox2.Text & "',"
sql = sql + " '" & ComboBox3.Text & "',"
sql = sql + " " & TextBox1.Text & ","
sql = sql + " " & TextBox2.Text & ","
sql = sql + " " & TextBox3.Text & ","
sql = sql + " " & TextBox4.Text & ","
sql = sql + " " & TextBox15.Text & ","
sql = sql + " " & TextBox5.Text & ","
sql = sql + " " & TextBox14.Text & ","
sql = sql + " " & TextBox6.Text & ","
sql = sql + " " & TextBox13.Text & ","
sql = sql + " " & TextBox7.Text & ","
sql = sql + " " & TextBox12.Text & ","
sql = sql + " " & TextBox8.Text & ","
sql = sql + " " & TextBox11.Text & ","
sql = sql + " " & TextBox9.Text & ","
sql = sql + " " & TextBox10.Text & ","
sql = sql + " " & TextBox17.Text & ","
sql = sql + " " & TextBox16.Text & ","
sql = sql + " " & TextBox18.Text & ","
sql = sql + " " & TextBox19.Text & ","
sql = sql + " " & TextBox20.Text & ","
sql = sql + " " & TextBox21.Text & ","
sql = sql + " " & TextBox22.Text & ","
sql = sql + " " & TextBox23.Text & ","
sql = sql + " " & TextBox24.Text & ","
sql = sql + " " & TextBox25.Text & ","
sql = sql + " " & TextBox26.Text & ","
sql = sql + " '" & TextBox27.Text & "')"

Dim cm As OleDbCommand = New OleDbCommand(sql, DB)
Dim rs As OleDbDataReader = cm.ExecuteReader
rs.Close()

cuando hago lo que me dices me tira el siguiente error:

Hay menos columnas en la instrucción INSERT que valores en la cláusula VALUES. El número de valores de VALUES debe coincidir con el de columnas de INSERT.

que podra ser???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:tipo de dato VB.net

Publicado por bearu (12 intervenciones) el 25/05/2007 09:56:55
Eso es porque el separador de decimales lo tienes con comas (ej: 55,3). Al generar el string de inserción, lo toma como dos valores para dos campos: para uno le asigna el 55 y para el siguiente le asigna el 3.
Lo que tienes que hacer es quitar el separador de miles en los números (si es que usas el punto), y cambiar la coma por un punto (el sql server interpreta el punto como separador de decimales).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar