[Lazarus-es] no se activa una tabla recien creada

Maxi maximiliano.duarte en gmail.com
Mie Oct 28 18:28:23 CET 2015


Lo que creo y digo "creo" está mal implementado porque usas la misma
query/tabla para crearlo y usarlo.

hazlo en otra instancia la comparacion si existe y la creacion.
Tambien puedes usar la sentencia "create table as select" para crear a
partir de una consulta y posterior insercion de registros, a lo que te digo
no hagas un for sino un "insert into tabla select .... from otratabla where
..." y
todo esto lo haces desde la conexion

SQLConnector1.ExecuteDirect();
o
desde un un objeto TSQLScript
despues lo abres para usarla.


Pero esto aconsejo lo pruebes antes desde un manejado de bases porque
sqlite no es tan completo como otros motores mas grandes y puede que
algunas sentencias no funcionen

El 27 de octubre de 2015, 16:05, Héctor Fiandor <hfiandor en ceniai.inf.cu>
escribió:

>
>
> Estimados listeros>
>
>
>
> Tengo una aplicación donde a fin de año es necesario revisar una BD y
> obtener otra BD con algunos componentes eliminados.
>
>
>
> La idea es copiar desde la tNegSerAct hacia la tNegSerAct1, las filas que
> tengan FechaTer=’’ (sin algo escrito).
>
>
>
> Esto es lo que hago, pero después de crear la tNegSerAct1, se niega a
> abrirla, aunque la tabla existe y está vacía.
>
>
>
>       begin   //lo normal tNegSerAct no vacia
>
>         Log('tNegSerAct no está vacía.');
>
>         fdm.tNegSerAct1.FileName:=camino_actual+'\tablas.db';
>
>         if not fdm.tNegSerAct1.TableExists then
>
>         begin  //lo normal
>
>
>
>           Log('Tabla NegSerAct1 no existe.');
>
>           Log('Crear tNSA1.');
>
>           fdm.tNegSerAct1.FileName:=camino_actual+'\tablas.db';
>
>           fdm.tNegSerAct1.SQL:='CREATE TABLE NegSerAct1 (codNeg
> VARCHAR(10), codSer VARCHAR(10), codAct VARCHAR(10), codNegSerAct
> VARCHAR(10) Primary Key, NomNeg
>
> VARCHAR(80), NomSer VARCHAR(80), NomAct VARCHAR(80), ParamCalc
> VARCHAR(80), Cantidad FLOAT(15), PrecioCalcCUP FLOAT(15), PrecioCalcCUC
> FLOAT(15), TotalCUP
>
> FLOAT(15), TotalCUC FLOAT(15), FechaIni VARCHAR(10), FechaTer VARCHAR(10),
> nomAreaEjecutiva VARCHAR(30) )';
>
>           fdm.tNegSerAct1.ExecSQL;
>
>           fdm.tNegSerAct1.SaveOnClose:=true;
>
>           fdm.tNegSerAct1.Close;
>
>           Log('Terminé de crear tNegSerAct1.');
>
>           //---------------------
>
>           3:
>
>           if fdm.tNegSerAct1.IsEmpty then
>
>           begin
>
>             Log('Tabla NegSerAct1 vacía.');
>
>             Log('Copiar desde tNSA hacia tNSA1.');
>
>             //copiar desde tNSA hacia tNSA1 los que FechaTer=''
>
>             try
>
>               if fdm.tNegSerAct.Active = false then fdm.tNegSerAct.Active
> := true
>
>               else begin end;
>
>               Log('Activé tNegSerAct');
>
>             except
>
>               ShowMessagePos('No pudo activar tNSA.',10,10);
>
>             end;
>
>             //--------------------
>
> ShowMessagePos('llegue2',10,10);
>
>             try
>
>               if fdm.tNegSerAct1.Active = true then
>
>               begin
>
>                 fdm.tNegSerAct1.Active := false;
>
>
> fdm.tNegSerAct1.FileName:=camino_actual+'\Clasificadores.db';
>
>                 if fdm.tNegSerAct1.Active = false then
> fdm.tNegSerAct1.Active := true;
>
>               end
>
>               else
>
>               begin
>
>
>          fdm.tNegSerAct1.FileName:=camino_actual+'\Clasificadores.db';
>
>                 if fdm.tNegSerAct1.Active = false then
> fdm.tNegSerAct1.Active := true;
>
>               end;
>
>               Log('Activé tNegSerAct1');
>
>             except
>
>               ShowMessagePos('No se activó tNSA1',10,10);
>
>               application.Terminate;
>
>             end;
>
>             //------------------
>
>             try
>
>               for i:=1 to fdm.tNegSerAct.RecordCount do
>
>               begin
>
>                 fdm.tNegSerAct.RecNo:=i;
>
>                 if fdm.tNegSerAct.FieldByName('FechaTer').AsString = ''
> then
>
>                 begin
>
>                   fdm.tNegSerAct1.Insert;    //los que no tienen FechaTer
>
>                   fdm.tNegSerAct1.FieldByName('codNeg').AsString:=
> fdm.tNegSerAct.FieldByName('codNeg').AsString;
>
>                   fdm.tNegSerAct1.FieldByName('codSer').AsString:=
> fdm.tNegSerAct.FieldByName('codSer').AsString;
>
>
>
> he probado con lo poco que sé y, como dice el dicho, “no doy pie con bola”.
>
>
>
> Si me pueden ayudar, mucho lo agradeceré.
>
>
>
> Saludos,
>
> Ing. Héctor Fiandor
>
> hfiandor en ceniai.inf.cu
>
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>


-- 
El que pregunta aprende, y el que contesta aprende a responder.

No a la obsolecencia programada:
http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml

Linux User #495070
http://domonetic.com/blog
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20151028/49fc7a5e/attachment-0002.html>


More information about the Lazarus-es mailing list