<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif">Si funciona es una solución tan buena como cualquier otra :)</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">
Yo soy partidario de armar los query en un const string y usar parámetros para poner los valores a filtrar, pero es una maña mía... aparte no todos los componentes manejan los parámetros de la misma manera (sqlitelaz 0.4 no los maneja para nada, SQLdb los maneja igual para todos los motores, incluso SQLite, Zeos nunca he utilizado)</div>
<div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/7/12 Héctor F. Fiandor Rosario <span dir="ltr"><<a href="mailto:hfiandor@infomed.sld.cu" target="_blank">hfiandor@infomed.sld.cu</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>





<div bgcolor="#ffffff">
<div><font face="Arial">Estimados colegas:</font></div>
<div><font face="Arial"></font> </div>
<div><font face="Arial">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"></font> </div>
<div><font face="Arial">en la uDM puse los componentes 
tcProyPorActividades, dscProyectosPorActividades y un TSQLQuery nombrado 
cProyectosPorActividades.</font></div>
<div><font face="Arial"></font> </div>
<div><font face="Arial">en otra unit, donde se crean todas las tablas del 
programa, puse el siguiente codigo:</font></div>
<div><font face="Arial">     
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"></font> </div>
<div><font face="Arial">y en otra unit, donde quiero realizar la consulta, 
hize esto:</font></div>
<div><font face="Arial">procedure 
TfProyPorActividad.miHacerConsultaClick(Sender: TObject);<br>var 
sqltext1,sqltext2,sqltext3,sqltext4,sqltext5,SQLText:string;<br>begin</font></div>
<div><font face="Arial"></font> </div>
<div><font face="Arial">     
fDM.tcProyPorActividad.FileName:=directory1+'\TablasCosto_'+anomes+'.db';<br>     
fDM.tcProyPorActividad.SQL:='cProyPorActividad.Delete'; //debe vaciarse la 
tabla</font></div>
<div><font face="Arial"></font> </div>
<div><font face="Arial">     
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"></font> </div>
<div><font face="Arial">     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"></font> </div>
<div><font face="Arial">     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"></font> </div>
<div><font face="Arial">     
fDM.tcProyPorActividad.Active:=true;</font></div>
<div><font face="Arial"></font> </div>
<div><font face="Arial">     mousePos.x:=165; 
//<br>     mousePos.y:=-10;<br>     
Mouse.CursorPos := ClientToScreen(mousePos) ;<br>end;<br></font></div>
<div><font face="Arial">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"></font> </div>
<div><font face="Arial">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"></font> </div>
<div><font face="Arial">saludos,</font></div>
<div><font face="Arial"></font> </div>
<div><font face="Arial">Ing. Héctor F. Fiandor Rosario<br><a href="mailto:hfiandor@infomed.sld.cu" target="_blank">hfiandor@infomed.sld.cu</a></font></div>
<div><font face="Arial"></font> </div>
<div><font face="Arial"></font> </div></div>
<br>_______________________________________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><span style="font-family:tahoma,sans-serif">Try not to become a man of success but rather to become a man of value. <i>Albert Einstein</i></span></div>

</div>