Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Datamodule, SQL, DELPHI y un error tope chungo (https://www.clubdelphi.com/foros/showthread.php?t=29855)

papulo 02-02-2006 18:31:33

Datamodule, SQL, DELPHI y un error tope chungo
 
Tengo este proceso
Código Delphi [-]
procedure TForm1.MachinesCharactValue;
begin
sSqlstatement:='SELECT value_type '+
               'FROM technical_items '+
               'WHERE visible=''Y'' and tech_id='+sTechId;
IBSQL_access(sSQLstatement);
if (DataModule2.IBSQL1.FieldByName('value_type').AsString)='INT' then
      sSqlstatement := 'SELECT MIN(cast(t.svalue as float)) as Minimo'+
                       ', MAX(cast(t.svalue as float)) as Maximo'
else if (DataModule2.IBSQL1.FieldByName('value_type').AsString)='VAR' then
sSqlstatement := 'SELECT distinct t.svalue as Intervalo'
else
ShowMessage('Fallo la construccion del sSQL');

sSqlstatement:=sSqlstatement+' FROM technical_inf t'+
                             ' WHERE t.id_part_type=0'+
                             ' AND t.tech_id='+sTechId;
IBDataSet_access(sSQLstatement);

if (DataModule2.IBSQL1.FieldByName('value_type').AsString)='VAR' then
    dbgSuppliers.Columns[0].FieldName:='Intervalo'//sIntervalo
else
   begin
    dbgSuppliers.Columns[0].FieldName:='Minimo';//sMinimo
    dbgSuppliers.Columns[1].FieldName:='Maximo';//sMaximo
   end;
sExecStatus:='MachinesCharactValue';
visible_screen;
dbgSuppliers.SetFocus;
end;

Cuya función es realizar una consulta concreta en función de unas condiciones. En teoria es muy sencillo lo que pretendo.
Pero cuando lo ejecuto me da un error "conversion error from string "SAE3""
Ni puñetera idea de que va eso, he googleado un poco (y ahora seguiré), pero no acabo de saber que me quiere indicar, salvo que hay un error al pasarle el string de la consulta.

Llevo un rato atascado, necesito que alguién me guie a la luz, si es posible.

Un abrazo confuso.

Papulo.

marcoszorrilla 02-02-2006 19:17:27

Por qué no introduces antes de ejecutar la consulta un:
Código Delphi [-]
ShowMessage(sSqlstatement)

para ver en donde contiene el valor que te da error y así poderlo subsanar.

Un Saluo.

jmariano 02-02-2006 19:25:56

Tal vez no vayan por ahí los tiros pero según veo en tu código estás haciendo un moldeado de tipo en la siguiente sentencia:
Código Delphi [-]
...
if (DataModule2.IBSQL1.FieldByName('value_type').AsString)='INT' then
      sSqlstatement := 'SELECT MIN(cast(t.svalue as float)) as Minimo'+
                       ', MAX(cast(t.svalue as float)) as Maximo'
...

¿Has comprobado que, efectívamente, t.svalue contiene un valor numérico válido?

Saludos!

papulo 03-02-2006 09:08:50

Cita:

Empezado por jmariano
Tal vez no vayan por ahí los tiros pero según veo en tu código estás haciendo un moldeado de tipo en la siguiente sentencia:
Código Delphi [-]
...
if (DataModule2.IBSQL1.FieldByName('value_type').AsString)='INT' then
      sSqlstatement := 'SELECT MIN(cast(t.svalue as float)) as Minimo'+
                       ', MAX(cast(t.svalue as float)) as Maximo'
...
¿Has comprobado que, efectívamente, t.svalue contiene un valor numérico válido?

Saludos!

Gracias por la respuesta, lo averigüe justo despues de poner este post. El error estaba en la identificación de 'INT' y 'VAR', según cual fuera, se lanzaba una consulta u otra. Una solo contenia enteros y la otra tenia caracteres, pero al identificarlas al reves, me daba error.

Una vez mas, gracias por la ayuda.

Un saludo sincero.

Papulo.


La franja horaria es GMT +2. Ahora son las 15:48:33.

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