Visual Basic - Problema de insercion de datos

Life is soft - evento anual de software empresarial
 
Vista:

Problema de insercion de datos

Publicado por Adrian (5 intervenciones) el 03/10/2006 13:19:24
Estoy realizando una aplicación en vb 6 contra sql server 2000. Es de pedidos de compras con opciones alta, baja y modificación de articulos, proveedores y pedidos.

Tengo problemas a la hora de insertar los pedidos en la bd sql server. Los datos los recogo de los textbox y combobox correspondientes pero a la hora de insertar el precio, el descuento y el importe (campos calculados) me da el siguiente error cuando introduzco decimales en el campo precio:
"El nombre de columna o los valores especificados no corresponden a la definición de la tabla." He probado en la bd con distintos tipos, desde money a decimal pero sigue saliendo el mismo error.

A ver si alguien puede darme alguna idea de como resolver esto.

Gracias
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:Problema de insercion de datos

Publicado por Nico (3 intervenciones) el 03/10/2006 23:54:19
Hola. Tenes un problema con el separador decimal de los valores a insertar. Sql toma la coma como separador de campo. Si el precio tiene coma como separador decimal y punto como separador de miles habra un conflicto en la instruccion SQL.
Ejemplo:
Insert into alquileres (codigo_pelicula,codigo_unidad,precio) values(1,1,3,25).
Esto te dara error porque toma al 25 como valor para otro campo. Tenes que insertar "3.25" para que no haya problemas.
Para modificar esto averigue la posicion de la coma dentro del valor y lo cambie por el punto. Use el left y el right para sustraer los valores antes de la coma y despues de ella y luego concatené. Aca va un ejemplo mas o menos.....
Dim valor as string = textbox1.text
Dim pos_separador as long
pos_separador = Instr(valor,",")
valor = left(valor,pos_separador -1) & "." & rigth(valor,pos_separador - 1)
Insert into pedidos(campo1,campo2,precio,....) values(.....,.....,valor,....)

Si no funciona podes ver el tema de la configuracion regional, pero eso es mas peligroso.

Espero que te sirva!. Saludos!
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:Problema de insercion de datos

Publicado por Adrian (5 intervenciones) el 04/10/2006 10:46:05
Gracias, pero el problema persiste dado que el campo valor (precio) lo tengo definido como currency no como string y aunque utilizo una variable auxiliar de tipo string para cambiar la , por el . despues le asigno a la variable precio el valor de la auxilar utilizando conversion de tipos.

StrPrecio = Tx_precio.Text
pos = InStr(StrPrecio, ",")
StrPrecio = Left(StrPrecio, pos - 1) & "." & Right(StrPrecio, pos - 1)
Tx_precio.Text = StrPrecio
precio = CCur(Tx_precio.Text)

Despues calculo el descuento y el importe:

If Tx_dcto.Text <> "" Then
strdcto = Replace(Tx_dcto.Text, ",", ".")
Tx_dcto.Text = strdcto
dcto = Val(Tx_dcto.Text)
importe = (cpedida * precio) - (cpedida * precio * dcto )
End If

La variable dcto es de tipo single y la variable importe de tipo currency.
En sqlserver dcto es de tipo real e importe de tipo money.
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:Problema de insercion de datos

Publicado por Adrian (5 intervenciones) el 10/10/2006 13:30:43
Bueno, ya esta resuelto, simplemente se tratan como string y luego lo unico es que hay que tener cuidado al insertar en tabla utilizando " & variable & ".
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