Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Params con Int64 (https://www.clubdelphi.com/foros/showthread.php?t=67117)

tgsistemas 30-03-2010 10:48:29

Params con Int64
 
Hola a tod@s,

no tengo claro si esta consulta corresponde a este foro o al de bbdd (mysql concretamente), así que si me he equivocado le pido disculpas a los moderadores :D

utilizo la siguiente función (no hay componentes visuales) con parámetros que devuelve un valor, el tema es que los datos en la tabla son del tipo bigint y el result también, pero no se cómo pasarle el párametro para ese tipo, utilizo Int64 :

Código Delphi [-]
function DimeCentroDiet(VDiet:Int64):Int64;
var
  MiQry : TZReadOnlyQuery;
  isql : string;
begin
  isql := 'select cntroasig from tb02D where cdgo = :cdgotemp';

  try
    MiQry := TZReadOnlyQuery.Create(nil);
    with MiQry do
    begin
      //Parent := FInsertar;
      MiQry.Connection := Data.ZConnectTGS;
      MiQry.SQL.Clear;
      MiQry.sql.Text := isql;
      MiQry.ParamByName('cdgotemp').asint64 := VDiet; //lo compila sin errores
      MiQry.Open;

      if MiQry.RecordCount >0 then begin
        Result := MiQry.fields[0].value;
      end else begin
        Result := 0;
      end;
    end;
  finally
    MiQry.Close;
    MiQry.Free;
  end;
end;
alguien podría indicarme qué estoy haciendo mal ??

Muchas Gracias a tod@s :D

tgsistemas 30-03-2010 18:22:23

respondo yo mismo y sigo consultando ;)

Código Delphi [-]
function DimeCentroDiet(VDiet:Int64):Int64;
var
  MiQry : TZReadOnlyQuery;
  isql : string;
begin
  isql := 'select cntroasig from tb02D where cdgo = :cdgotemp';

  try
    MiQry := TZReadOnlyQuery.Create(nil);
    with MiQry do
    begin
      //Parent := FInsertar;
      MiQry.Connection := Data.ZConnectTGS;
      MiQry.SQL.Clear;
      MiQry.sql.Text := isql;
      MiQry.ParamByName('cdgotemp').Value := VDiet; 
      MiQry.Open;

      if MiQry.RecordCount >0 then begin
        Result := MiQry.fields[0].value;
      end else begin
        Result := 0;
      end;
    end;
  finally
    MiQry.Close;
    MiQry.Free;
  end;
end;

hasta ahí todo correcto según creo.
Pero ahora hago el proceso inverso, pasarle a otro campo de otra tabla el valor de la rutina anterior :

Código Delphi [-]
zqryParts.fieldbyname('centro').value = DimeCentroDiet(DM1.usudiet);
produce el error "no se puede acceder al campo 'centro' como Variant"... pero no entiendo por qué es variant.

tgsistemas 31-03-2010 18:05:38

creo que al final lo he solucionado con :
Código Delphi [-]
zqryPartscentro.asLargeInt = DimeCentroDiet(DM1.usudiet);

y parece que funciona correctamente, por lo menos guarda los datos en la tabla ;)

Casimiro Notevi 31-03-2010 18:15:07

¿El componente zqryPartscentro es un query de zeoslib?

tgsistemas 31-03-2010 19:18:43

si, un zqry... por?

Casimiro Notevi 31-03-2010 20:14:39

Cita:

Empezado por tgsistemas (Mensaje 358933)
si, un zqry... por?

Porque si fuese FIBplus, tienen "asInt64" que te habría venido perfecto :)

tgsistemas 31-03-2010 20:28:27

gracias Casimiro Notevi,

son los zeos, nunca los había utilizado pero tras leer varios hilos del foro me decidí por ellos para trabajar con MySql.

Por cierto, los FIBplus son para interbase o estoy equivocado y pueden "atacar" también mysql, que pudiera ser....:confused:

Aún así, no me ha quedado muy claro el tema de los campos int64 por lo que iré estudiando más sobre ellos.

Muchas gracias por ayuda Casimiro Notevi

Casimiro Notevi 31-03-2010 20:36:08

Sí, por lo que comentan algunos compañeros, los zeos son están bastante bien y además son libres.

Cita:

Empezado por tgsistemas (Mensaje 358944)
[..]Por cierto, los FIBplus son para interbase o estoy equivocado y pueden "atacar" también mysql, que pudiera ser....:confused:[..]

Sí, están pensado para Firebird e Interbase, nada más.


La franja horaria es GMT +2. Ahora son las 17:37:04.

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