Visual Basic - Problemas al transformar Datos en SQL

Life is soft - evento anual de software empresarial
 
Vista:

Problemas al transformar Datos en SQL

Publicado por Ricardo M. (12 intervenciones) el 17/12/2004 15:08:33
Amigos tengo el siguiente problema deseo guardar datos decimales desde visual a sql a traves de un textbox pero al guardarlos se produce un error cierto "ERROR AL CONVERTIR DE VARCHAR A REAL" la verdad k e tratado convirtiendo en visual CDEC(expresion) etc y con CAST y CONVERT en SQL ....... y no lo e logrado..
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:Problemas al transformar Datos en SQL

Publicado por Ayudante (349 intervenciones) el 17/12/2004 16:08:54
No crees que sería mejor que nos pongas de qué forma tienes tu instrucción SQL
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:Problemas al transformar Datos en SQL

Publicado por Ricardo M. (12 intervenciones) el 17/12/2004 16:18:14

Se trata de un Procedimiento almacenado de INSERT ...

CREATE PROCEDURE dbo.up_act_compras ( @num_guia_compra numeric(10),
@rut_proveedor numeric(10)=null,
@nom_provee varchar (50)=null,
@cod_prod numeric(10)=null,
@Nom_Prod varchar(50)=null,
@num_ord_compra numeric(10)=null,
@cant_compra numeric(18)=null,
@Precio_Compra money,
@total_compra money,
@Precio_Venta numeric(18)=null,
@fecha smalldatetime =null) AS
begin
insert into crm_compras
values (@num_guia_compra ,
@rut_proveedor,
@nom_provee,
@cod_prod,
@nom_prod,
@num_ord_compra,
@cant_compra,
@Precio_Compra, --> Necesito k guarde decimales.
@total_compra, --> Necesito k guarde decimales.
@Precio_Venta,
@fecha )
end
GO

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:Problemas al transformar Datos en SQL

Publicado por Ricardo M. (12 intervenciones) el 17/12/2004 16:28:19
Desde Visual ----->

Valor2 = CCur(Me.txtValorUnitario.Text)
Valor4 = CCur(Me.lblTotalComprado.Caption)
sSql = "up_act_compras @num_guia_compra= " & Val(Me.lblOrdenNumero.Caption) & " ," & _
"@rut_proveedor= '" & Val(Rut_Provee) & "' ," & _
"@Nom_provee= '" & Nom_Provee & "' ," & _
"@cod_prod= '" & Val(Codigo_Prod) & "'," & _
"@Nom_prod= '" & Nombre_Prod & "'," & _
"@num_Ord_compra= '" & Val(Me.txtNumeroOrden.Text) & "'," & _
"@Cant_compra= '" & Val(Me.txtCantidadCompra.Text) & "'," & _
"@Precio_compra='" & (Valor2) & "'," & _
"@total_compra='" & (Valor4) & "'," & _
"@Precio_Venta= '" & Val(Me.txtPrecioVenta.Text) & "'," & _
"@fecha= '" & Date & "'"

MsgBox sSql
myConexion.ConnectionString = g_Conexion 'Origen del motor de datos
myConexion.Open
myConexion.Execute sSql
myConexion.Close
Set myConexion = Nothing
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:Problemas al transformar Datos en SQL

Publicado por Ayudante (349 intervenciones) el 17/12/2004 21:29:53
Trata de revisar en la base de datos que los parámetros que se insertan en los campos sean del mismo tipo "money", preferible revisa todos.

Luego, no hace falta transformar los números para ser insertados en la BD, de forma que el proceso principal es en el servidor.

Otra cosa, el valor del tipo Money ya acepta decimales y por el tipo de mensaje, no me consta, pero, el o los campos que tiene la tabla es real, el mensaje desplegado es estructamente de BD.
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:Problemas al transformar Datos en SQL

Publicado por Ricardo M (12 intervenciones) el 19/12/2004 20:16:59
Amigo e rebisado el tipo de dato de cada uno de los parametros y son de tipo money aun haci me pide convertirlos de varchar a money ..
Si utilizo un CONVERT en SQL me dice k NO SE PERMITE LA CONVERSION IMPLICITA DEL TIPO DE DATOS VARCHAR A MONEY..
El Procedimiento almacenado keda de esta forma..

CREATE PROCEDURE dbo.up_act_compras ( @num_guia_compra numeric(10),
@rut_proveedor numeric(10)=null,
@nom_provee varchar (50)=null,
@cod_prod numeric(10)=null,
@Nom_Prod varchar(50)=null,
@num_ord_compra numeric(10)=null,
@cant_compra numeric(18)=null,
@Precio_Compra money=null,
@total_compra money=null,
@Precio_Venta numeric(18)=null,
@fecha smalldatetime =null) AS
begin
insert into crm_compras
values (@num_guia_compra ,
@rut_proveedor,
@nom_provee,
@cod_prod,
@nom_prod,
@num_ord_compra,
@cant_compra,
(CONVERT(money,(@Precio_Compra))),
(CONVERT(money,(@total_compra))),
@Precio_Venta,
@fecha )
end
GO
Si puedes revisarlo te lo agradeceria ....
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:Problemas al transformar Datos en SQL

Publicado por Ayudante (349 intervenciones) el 20/12/2004 05:27:04
¿Cómo no lo había visto antes?

El peor error que muchos haces es enviar un valor numérico entre comillas simples.... quita todos las conversiones, tanto del SP como de la llamada desde el programa, ya que no sirven de nada y ocupan tiempo de procesador, y también quita esas comillas simples de los valores numéricos.
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:ME HIERBEEE EL CRANEO "HELP ME"

Publicado por Ricardo M (12 intervenciones) el 21/12/2004 22:09:02
Amigo Ayudante e probado sacando las comillas simples a los datos numericos keda algo asi

up_act_compras
@num_guia_compra= 92 ,
@rut_proveedor=80230600,
@Nom_provee='CONGREGACION HIJAS DE SAN PABLO',
@cod_prod= 4,@Nom_prod='AFICHES CALI 1%',
@num_Ord_compra= 123,
@Cant_compra= 2,
@Precio_compra=140,22,
@total_compra=280,44,
@Precio_Venta=160,
@fecha='12-12-04'

pero esto me arroja el siguiente error:

119, nivel 15, estado 1, línea 8
El parámetro número 9 y los sucesivos deben pasarse como '@nombre = valor'. Una vez usada la forma '@nombre = valor', todos los parámetros siguientes deben pasarse con esa forma.

Si hago esto y pongo comilla simple para los datos money, varchar k seria los siguiente:

up_act_compras
@num_guia_compra= 92 ,
@rut_proveedor=80230600,
@Nom_provee='CONGREGACION HIJAS DE SAN PABLO',
@cod_prod= 4,@Nom_prod='AFICHES CALI 1%',
@num_Ord_compra= 123,
@Cant_compra= 2,
@Precio_compra='140,22',
@total_compra='280,44',
@Precio_Venta=160,
@fecha='12-12-04'

Servidor: mensaje 257, nivel 16, estado 2, procedimiento up_act_compras, línea 0
No se permite la conversión implícita del tipo de datos varchar a money. Utilice la función CONVERT para ejecutar esta consulta.

Este error me sale con o sin CONVERT en el procedimiento almacenado ...
Por favor si alguien tiene alguna idea se lo agradeceria bastante...
Gracias!
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

Primero la calma, luego la solución

Publicado por Ayudante (349 intervenciones) el 22/12/2004 06:26:04
Mira, si pudiera te contaría todas las veces que me encolericé por no encontrar una solución, pero no puedo, ya he perdido la cuenta.

Lo que sí he aprendido es a calmarme, pues enojado no puedo pensar lúcidamente.

Cuando vas a ejecutar un SP sería bueno no enviar la tira de un solo, porque veo que el problema es que los valores numéricos tienen coma y no punto decimal, para eso eso mejor sería usar un método para crear parámetros y ejecutar el SP.

Dim x As ADODB.Command
Dim z As ADODB.Parameter

Set z = x.CreateParameter("ss", adVarChar, adParamInput, 30, "ss")

Sería bueno que uses el método CreateParameter, talvez pueda servir mejor, es un tanto engorroso, pero más fácil para los valores numéricos.
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:Primero la calma, luego la solución

Publicado por Ricardo M (12 intervenciones) el 26/12/2004 19:08:20
Amigo ayudante si tan solo el problema es k los numeros pasan con el caracter (coma) en ves (punto) no abra alguna manera mas sencilla de transformarlos estube mirando la funcion createparameter y nose como aplicarla a mi visual, si tubieras algun codigo sencillo k pueda utilizar como ejemplo te lo agradeceria.
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

Esta es la última

Publicado por Ayudante (349 intervenciones) el 26/12/2004 21:31:27
Este código se logra si miras la ayuda:

Dim conn As ADODB.Connection
Dim comm As ADODB.Command
Dim rst As ADODB.Recordset
Dim param As ADODB.Parameter

Set conn = New ADODB.Connection
conn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=usuario;Password=clave;Initial Catalog=Northwind"
Set comm = New ADODB.Command

'Se ejecutará el SP de CustOrdersDetail de la BD Northwind
comm.ActiveConnection = conn
comm.CommandType = adCmdStoredProc
comm.CommandText = "CustOrdersDetail"
Set param = comm.CreateParameter("@OrderID", adInteger, adParamInput, , "10250")
comm.Parameters.Append param
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open comm

Este código trae a partir de un SP el contenido para un Recordset, en el caso de los SPs que no retornan datos, solo con que ejecutes el comm.Execute de este ejemplo, pero sin recordset.
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