![]() |
enviar dato real a sql
hola amigos de club delphi, miren tengo el siguiente problema
tengo un procedimiento almacenado en sql llamado SP_MODIFICA_PRODUCTO este recibe dos parametros un codigo de tipo entero y un valor de tipo real, por ejemplo cuando quiero modificar algo en sql lo puedo ejecutar asi SP_MODIFICA_PRODUCTO 1, 15.5 sql trabaja los decimales con punto, en cambio en delphi las operaciones me las devuelve con coma si por ejemplo en delphi tengo una variable que esta asi valReal := 2/10; valReal va a tener valor 0,2 si le llamo al procedimiento y le paso SP_MODIFICA_PRODUCTO 1, valReal eso quedaria como SP_MODIFICA_PRODUCTO 1, 0,2 y como uds saben que en sql la coma separa parametros me da un error cuando quiero escribir desde mi aplicacion delphi en la base de datos como lo hago para enviar un valor real desde delphi a sql? la consulta la hago asi Query:='SP_MODIFICA_PRODUCTO ' + IntToStr(CodigoIngreso_Int) + ',' + FloatToStr(ValorIngreso_real); Q_IngresaPlato.SQL.Clear; Q_IngresaPlato.SQL.Add(query); Q_IngresaPlato.ExecSQL; pero esto me da error espero entiendan mi problema, gracias por la ayuda |
Cita:
Saludos. |
es que el dato lo debo capturar en el programa y del programa enviatr los datos a la tabla en sql
necesito saber como mandar numeros reales, con string e integers no hay problema |
Hola...
Intenta de esta forma:
Si no te funciona (no lo he probado :p), puedes intentar usando un componente para tratar con procedimientos almacenados, claro, esto depende de que componentes estés usando para conectarte a tu base de datos... Saludos... |
Cita:
|
no me funciono :(
mi procedimiento almacenado es este CREATE PROCEDURE SP_MODIFICA_PRODUCTO @Cod smallint, @Cant float AS update productos set Cantidad = @Cant where Codigo =@Cod como ven recibe un dato float, con el entero no tengo problemas y lo malo que desde el programa debo trabajar obligatoriamente con datos float por que el integer hace un trunc y 15,5 lo deja en 15, enviar el dato como un string tampoco puedo por que la variable an sql esta definida como float asi que me dara error si envio un string a un float la parte que escribe es un ciclo for i:=0 to Indice_Int-1 do begin ValorIngreso_real:=RestaProductosCod[i]/1000; CodigoIngreso_Int:=StrToInt(codigo_Ing[i]); { Query:='SP_MODIFICA_PRODUCTO ' + IntToStr(CodigoIngreso_Int) + ',' + FloatToStr(ValorIngreso_real); Q_IngresaPlato.SQL.Clear; Q_IngresaPlato.SQL.Add(query); Q_IngresaPlato.ExecSQL; } end; ValorIngreso_real es el valor de tipo real definido en delphi como ven recibe una division que le da datos del tipo 14,5 47,8 etc pero el procedimiento queda asi SP_MODIFICA_PRODUCTO 1, 15,4 como ven se crean tres parametros debido a la coma de delphi me gustaria cambiar esa coma por punto :mad::mad: bueno gracias por la ayuda lo agradezco mucho, todos los puntos de vista me sirven |
Cambiar configuracion regional
Hola amigo Memo
Tu problema del signo de separacion de decimales lo tuve hace tiempo y lo resolvi cambiando la configuracion regional del win. alli donde se ingresa el signo para la separacion de miles le puse la "coma" y para la separacion de decimales le puse el "punto". Asi todo el Delphi trabaja con el formato aceptado por el SQL. Espero que te sirva. Un saludo. |
si eso era!!! mi configuracion regional estaba en comas
lo puse en puntos y ya funciona muchas pero muchas gracias |
Cita:
Yo te recomiendo que busques por el lado de los params o bien que fuerces dentro de tu código el separador decimal. Lo lógico sería hacerlo sobre windows pero como te digo puedes afectar a otras aplicaciones, y hay que ser solidarios en un entorno compartido.;) Saludos |
si en eso tienes mucha razon por el momento puede ser una solucion temporal
lo otro que pense que tambien puede ser una muy buena solucion es convertir la variable en sql de real a varchar asi podre enviar de delphi a sql un string y como puedo extraer desde sql la variable como varchar y en delphi transformarla en float puedo operar sobre ella y devolverla como varchar de nuevo y en sql para operar con esa variable puedo usar un CAST, estudiare algunas soluciones gracias por los consejos |
Hola
Como dice donald shimoda, te aconsejo que uses DecimalSeparator para establecer momentáneamente el tipo de separador decimal que quieras usar
|
La franja horaria es GMT +2. Ahora son las 06:42:26. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi