Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-09-2008
Memo6015 Memo6015 is offline
Miembro
 
Registrado: ago 2008
Posts: 35
Poder: 0
Memo6015 Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 03-09-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por Memo6015 Ver Mensaje
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
Si usas parametros del query (en este caso store procedure ) no es mas simple? Tiene que funcionar.

Saludos.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #3  
Antiguo 03-09-2008
Memo6015 Memo6015 is offline
Miembro
 
Registrado: ago 2008
Posts: 35
Poder: 0
Memo6015 Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 03-09-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Intenta de esta forma:

Código Delphi [-]
Q_IngresaPlato.SQL.Text := 'SP_MODIFICA_PRODUCTO :Param1 :Param2';
Q_IngresaPlato.ParamByName('Param1').AsInteger := CodigoIngreso_Int;
Q_IngresaPlato.ParamByName('Param2').AsFloat := ValorIngreso_Real;
Q_IngresaPlato.ExecSQL;

Si no te funciona (no lo he probado ), 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...
Responder Con Cita
  #5  
Antiguo 03-09-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por maeyanes Ver Mensaje
Hola...

Intenta de esta forma:
Código Delphi [-]
Q_IngresaPlato.SQL.Text := 'SP_MODIFICA_PRODUCTO :Param1 :Param2';
Q_IngresaPlato.ParamByName('Param1').AsInteger := CodigoIngreso_Int; 
Q_IngresaPlato.ParamByName('Param2').AsFloat := ValorIngreso_Real; 
Q_IngresaPlato.ExecSQL;

Saludos...
Es lo que decia, sin el código.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #6  
Antiguo 04-09-2008
Memo6015 Memo6015 is offline
Miembro
 
Registrado: ago 2008
Posts: 35
Poder: 0
Memo6015 Va por buen camino
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


bueno gracias por la ayuda

lo agradezco mucho, todos los puntos de vista me sirven
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿como enviar una consulta de un dato a un qreport en c++ builder? soma25 Impresión 0 19-12-2007 06:32:15
¿como enviar una consulta de un dato a un qreport en c++ builder? soma25 C++ Builder 0 14-12-2007 20:47:49
dato real no exacto jsanchez Firebird e Interbase 2 05-09-2007 23:01:20
necesito enviar un dato de un edit a una campo predeterminado en word pipe Varios 1 27-07-2007 06:32:05
Enviar correo con dato adjunto jncrls Internet 1 06-05-2003 15:26:33


La franja horaria es GMT +2. Ahora son las 23:26:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi