Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-07-2021
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 20
amadis Va por buen camino
firedac phys fb dynamic sql error expression evaluation not supported invalid data ty

firedac phys fb dynamic sql error expression evaluation not supported invalid data type for multiplication in dialect 3

Código Delphi [-]
QAct.SQL.Append('UPDATE articulos A');
QAct.SQL.Append('SET');

//La linea de aqui abajo da el error del titulo del post      
QAct.SQL.Append('A.gan = '+edit1.Text+ ',iif( costoiva , A.l1 = (A.costo/A.alic * :P1) * A.alic, A.l1 = (A.costo * :P1) * A.alic )');
Qact.ParamByName('P1').AsFloat := f1+strtofloat(edit1.text)/100;


// pero en cambio si en lugar de usar parametro paso el dato en string funciona como aqui debajo
QAct.SQL.Append('A.gan = '+edit1.Text+ ', A.l1 = iif( A.costoiva , ((A.costo/A.alic) * '+floattostr(ff1)+') * A.alic, (A.costo * '+floattostr(ff1)+') * A.alic )');
ff1 := f1+strtofloat(edit1.text)/100;

¿Como podria usar parametro para esta operacion ya que es mas seguro que la conversion a string?.
Lo que hago es quitar el IVA de un precio si este lo incluye y luego aplicar porcentajes para calcular precio de venta.
Responder Con Cita
  #2  
Antiguo 09-07-2021
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado Amadis, creo que el problema podría ser el iif...

Primero: Las sentencias de asignacion a A.l1 son distintas

Código SQL [-]
--En esta estas realizando una asignación dentro del IIF... ERROR
, iif( costoiva , A.l1 = (A.costo/A.alic * :P1) * A.alic, A.l1 = (A.costo * :P1) * A.alic )

--Aqui estas asignando a A.l1 el valor resultante del IIF...Correcta
, A.l1 = iif( A.costoiva , ((A.costo/A.alic) * :P1) * A.alic, (A.costo * :P1) * A.alic )

Te sugiero utilizar esta sentencia
Código Delphi [-]
...
QAct.SQL.Append('A.l1  = iif(A.costoiva, (A.costo/A.alic * :P1) * A.alic, (A.costo * :P1) * A.alic)');

Saludos cordiales
Responder Con Cita
  #3  
Antiguo 12-07-2021
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 20
amadis Va por buen camino
La sentencia que me sugieres, que es la correcta da el mismo error.

Hay algo al usar el parametro que provoca el error porque si uso una variable en lugar del parámetro funciona.

Pero usar la variable implica que deba controlar el punto decimal para evitar errores
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
FireDAC.Phys.MSAcc no se encuentra jordimar Varios 3 09-12-2016 18:44:55
ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = -104 Token MALBOTO22 PHP 8 06-05-2015 19:22:39
Error de Invalid Data Packet Paulao Varios 5 09-09-2011 21:57:22
ERROR: Data Type mismatch in criteria expression El Mike Conexión con bases de datos 7 01-12-2008 22:22:46
invalid expression in the select .... IVAND Firebird e Interbase 3 27-02-2005 01:52:12


La franja horaria es GMT +2. Ahora son las 07:16:12.


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