<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>