<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2180" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Estimados colegas:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>mejorando una aplicacion con una unit uDM 
(datamodulo) me encontre con un problema y le di una solucion, pero quisiera 
conocer si lo que hize esta bien o puede mejorarse.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>en la uDM puse los componentes 
tcProyPorActividades, dscProyectosPorActividades y un TSQLQuery nombrado 
cProyectosPorActividades.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>en otra unit, donde se crean todas las tablas del 
programa, puse el siguiente codigo:</FONT></DIV>
<DIV><FONT face=Arial size=2>     
fDM.tcProyPorCentros.FileName:=directory1+'\TablasCosto_'+anomes+'.db';<BR>     
if not fDM.tcProyPorCentros.TableExists('cProyPorCentros') 
then<BR>     
begin<BR>          
fDM.tcProyPorCentros.FieldDefs.Add('ccosto', 
ftString);<BR>          
fDM.tcProyPorCentros.FieldDefs.Add('nombre', 
ftString);<BR>          
fDM.tcProyPorCentros.FieldDefs.Add('cantidad', 
ftInteger);<BR>          
fDM.tcProyPorCentros.FieldDefs.Add('Inventariable', ftBoolean); 
//<BR>          
fDM.tcProyPorCentros.FieldDefs.Add('Terminado', ftBoolean); 
//<BR>    end;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>y en otra unit, donde quiero realizar la consulta, 
hize esto:</FONT></DIV>
<DIV><FONT face=Arial size=2>procedure 
TfProyPorActividad.miHacerConsultaClick(Sender: TObject);<BR>var 
sqltext1,sqltext2,sqltext3,sqltext4,sqltext5,SQLText:string;<BR>begin</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>     
fDM.tcProyPorActividad.FileName:=directory1+'\TablasCosto_'+anomes+'.db';<BR>     
fDM.tcProyPorActividad.SQL:='cProyPorActividad.Delete'; //debe vaciarse la 
tabla</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>     
fDM.tcProyPorActividad.Active:=false;<BR>     
sqltext1:='SELECT 
Costos_1.ccosto,Costos_1.nombre,Costos_1.cantidad,Costos_1.Inventariable,Costos_1.ProcIniMN,Costos_1.ProcIniCUC,Costos_1.DirectosMN,Costos_1.DirectosCUC,Costos_1.IndirectosMN,Costos_1.IndirectosCUC,Costos_1.Terminado, 
';<BR>     
sqltext2:='Costos_1.ProdTerminadosMN,Costos_1.ProdTerminadosCUC,Costos_1.ProcFinMN,Costos_1.ProcFinCUC,Costos_1.CostoUnitarioMN,Costos_1.CostoUnitarioCUC 
';<BR>     sqltext3:='FROM Costos_1 ';</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>     case index of //index 
viene de ListBox1Click<BR>     0: 
begin     //consultoria y 
asesoramiento<BR>             
sqltext4:='WHERE Costos_1.NoActividad="01" 
';<BR>        
end;<BR>     1: begin  
//formacion<BR>             
sqltext4:='WHERE (Costos_1.NoActividad="02") ' 
;<BR>        end;<BR>     
2: begin   //difusion del 
conocimiento<BR>             
sqltext4:='WHERE (Costos_1.NoActividad="03") 
';<BR>        
end;<BR>     3: begin   
//editorial<BR>             
sqltext4:='WHERE (Costos_1.NoActividad="04") 
';<BR>        
end;<BR>     4: begin   //generacion del 
conocimiento<BR>             
sqltext4:='WHERE (Costos_1.NoActividad="05") 
';<BR>        
end;<BR>     5: begin   //servicios 
informaticos<BR>             
sqltext4:='WHERE (Costos_1.NoActividad="06") 
';<BR>        
end;<BR>     6: begin   //revista nueva 
empresa<BR>             
sqltext4:='WHERE (Costos_1.NoActividad="07") 
';<BR>        
end;<BR>     7: begin   
//otros<BR>             
sqltext4:='WHERE (Costos_1.NoActividad="09") 
';<BR>        
end;<BR>     end; //del case</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>     sqltext5:='ORDER BY 
Costos_1.ccosto ASC';<BR>     
SQLText:=sqltext1+sqltext2+sqltext3+sqltext4+sqltext5;<BR>     
fDM.tcProyPorActividad.SQL:=SQLText;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>     
fDM.tcProyPorActividad.Active:=true;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>     mousePos.x:=165; 
//<BR>     mousePos.y:=-10;<BR>     
Mouse.CursorPos := ClientToScreen(mousePos) ;<BR>end;<BR></FONT></DIV>
<DIV><FONT face=Arial size=2>y parece que trabaja. Lo que me llevo a esto fue 
que al salir la pantalla para realizar la consulta, aparecen varias 
"Actividades", selecciono una y al oprimir Hacer consulta y Ver Informe, me 
salen los Proyectos que estan ligados a dicha Actividad. Ahora puedo cerrar el 
Report y seleccionar otra Actividad y me sale correctamente los Proyectos de la 
nueva Actividad seleccionada.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Lo poco que he aprendido ha sido, como decimos por 
aca, de "corte y clava" y me gustaria saber como hacerlo bien.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>saludos,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Ing. Héctor F. Fiandor Rosario<BR><A 
href="mailto:hfiandor@infomed.sld.cu">hfiandor@infomed.sld.cu</A></DIV></FONT>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV></BODY></HTML>