[Lazarus-es] Uso de par?metros opcionales o polimorfismo.
Ismael L. Donis Garc?a
ismael en citricos.co.cu
Jue Dic 24 20:50:40 CET 2009
Los agrego de la siguiente forma:
strsql := 'select mpmovinv.fecha from mpmovinv where
(((mpmovinv.fecha)>:dFecha) and ((mpmovinv.entidad)=:sEntidad)) union all
select mpmovdia.fecha from mpmovdia where (((mpmovdia.fecha)>:dFecha) and
((mpmovdia.entidad)=:sEntidad)) order by 1 desc';
List1 := TStringList.Create;
List2 := TStringList.Create;
List1.Add('sEntidad');
List2.Add(dtm.strentidad);
List1.Add('dFecha');
List2.Add(formatdatetime('yyyy/mm/dd',EndOfTheMonth(dtmfecha)));
ejecrsbuscar(strsql, true, false, List1, List2);
List1.Free;
List2.Free;
En el procedimiento como verás pongo un ShowMessage y me muestra la fecha
como 2009-11-30 de la forma correcta.
Como bien dices la configuración local de la PC es dd/mm/yyyy y no
yyyy/mm/dd pero siempre he puesto esa configuración para asegurarme que
realice la consulta con la fecha de forma correcta sin interesarme por el
formato de la fecha corta que tenga el sistema.
Como podría solucionar ese dilema de forma dinámica, ósea que me coja la
configuración que tenga el sistema sin yo modificarla.
procedure Tfrmdatgmp.ejecrsbuscar(sqlstr: string; blnopen: boolean;
blnwrite: boolean; LParam: TStrings; LValor: TStrings);
var
i: Integer;
begin
ejecrsbuscar();
if blnopen then
begin
rsbuscar.ReadOnly := blnwrite;
rsbuscar.SQL.Text := sqlstr;
for i := 0 to LParam.Count - 1 do begin
if leftstr(LParam[i], 1) = 's' then
rsbuscar.Params.ParamByName(LParam[i]).AsString:=LValor[i]
else
begin
showmessage(LValor[i]);
rsbuscar.Params.ParamByName(LParam[i]).AsDate:=StrToDate(LValor[i]);
end;
end;
trabuscar.StartTransaction;
rsbuscar.Open;
end;
end;
procedure Tfrmdatgmp.ejecrsbuscar();
begin
try try
if trabuscar.Active then trabuscar.Commit;
except on e:exception do
trabuscar.Rollback;
end;
finally
trabuscar.EndTransaction;
end;
rsbuscar.Close;
rsbuscar.SQL.Clear;
end;
=========
¦¦ ISMAEL ¦¦
=========
----- Mensaje original -----
De: "JoshyFun" <joshyfun en gmail.com>
Para: "Spanish version of Lazarus List"
<lazarus-es en lists.lazarus.freepascal.org>
Enviado: jueves, 24 de diciembre de 2009 12:19
Asunto: Re: [Lazarus-es] Uso de par?metros opcionales o polimorfismo.
Hello Ismael,
Thursday, December 24, 2009, 4:29:22 PM, you wrote:
ILDG> Trato de pasar la fecha como 2009-11-30 y me pone un 20
ILDG> delante, no se porqué: lo agrego a la lista de la siguiente
ILDG> forma:
ILDG> Lista.Add(formatdatetime('yyyy/mm/dd',EndOfTheMonth(dtmfecha)));
Haz justo antes de esa linea algo como:
TempString:=formatdatetime('yyyy/mm/dd',EndOfTheMonth(dtmfecha));
Application.MessageBox(pchar(TempString),'',0);
Si ahí sale la fecha mal es que falla el "formatdatetime".
Por cierto no pones como le pasas el parámetro al query ya que
sospecho que lo harás con "StringToDate" y ahí tendrías un problema,
StringToDate usa el "locale" actual que no es (supongo) yyyy/mm/dd
--
Best regards,
JoshyFun
_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
More information about the Lazarus-es
mailing list