PDA

Ver la Versión Completa : Usar Varias Ibquery En Dbgrid


Dergon
09-08-2017, 20:57:52
Hola amigos,estoy con un inconveniente a la hora de usar una ibquery,hize una consulta via sql con ibquery de una tabla en la cual enlaze mi dbgrid,y tambien otra ibquery por si mi checkbox estubiera desactivada,y la otra si estubiera el checkbox activada,el codigo en sql va bien,lo que pasa es que mi dbgrid esta enlazada al primer ibquery y al ejecutar la otra ibquery no va por causa que mi dbgrid.datasour queda por el ibquery1.

Aqui el codigo

procedure TFrmConVenta.BitBtn1Click(Sender: TObject);
begin
if CheckBox1.Checked = false then
begin
dm_dados.sqlConVenta.Close;
dm_dados.sqlConVenta.ParamByName('mov').AsInteger:=StrToInt(editcodini.Text);
dm_dados.sqlConVenta.ParamByName('numvend').AsInteger:=StrToInt(editcodvend.Text);
dm_dados.sqlConVenta.ParamByName('numcli').AsInteger:=StrToInt(edtnumcli.Text);
dm_dados.sqlConVenta.ParamByName('datavend').AsDate:=StrToDate(MaskEdit1.Text);
dm_dados.sqlConVenta.Open;
end
else
If CheckBox1.Checked = true then
begin
sql_sem_filtro.Close;
sql_sem_filtro.ParamByName('datavend').AsDate:=StrToDate(MaskEdit1.Text);
sql_sem_filtro.Open;

oscarac
09-08-2017, 21:04:46
estoy entendiendo que en un DBGRID quieres mostrar el resultado de 3 datasource diferentes?

Dergon
09-08-2017, 21:16:28
tengo un dbgrid con el datasource del ibquery1,utilizando un checkbox para ejecutar una ibquery en mode checked=true y la otra ibquery2 en modo checked=false,solo muestra las infromaciones del primer ibquery1 por la cual esta mi dbgrid.

TOPX
09-08-2017, 21:41:48
Hola, osea con algo así:
if not CheckBox1.Checked then
begin
{etc, etc...} dm_dados.sqlConVenta.Open;

DataSource1.DataSet := dm_dados.sqlConVenta;
end
else
begin
{etc, etc...} sql_sem_filtro.Open;

DataSource1.DataSet := sql_sem_filtro;
end;
-

oscarac
09-08-2017, 21:45:39
tengo un dbgrid con el datasource del ibquery1,utilizando un checkbox para ejecutar una ibquery en mode checked=true y la otra ibquery2 en modo checked=false,solo muestra las infromaciones del primer ibquery1 por la cual esta mi dbgrid.

puedes ser un poco mas especifico?
porque estoy entiendo que en un dbgrid quieres mostrar la informacion de 2 datasource, en ese caso solo asignarias el datasource al dbgrid

if CheckBox1.Checked then
Dbgrid1.DataSet := DataSource1
else
Dbgrid2.DataSet := DataSource2;
end;

ecfisa
09-08-2017, 21:52:48
Hola Dergon.

Por favor cuando incluyas código en tus mensajes usa las etiquetas de este modo:
http://sia1.subirimagenes.net/img/2014/09/12/140912092124532033.jpg

Y también recuerda que el foro "Trucos" es para realizar aportes novedosos, no para consultas. Cuando dudes en que foro poner tu mensaje usa el foro "Varios" (agregué las etiquetas y moví tu hilo a dicho foro).

Saludos y gracias por tu colaboración :)

Dergon
09-08-2017, 22:08:52
[RESOLVIDO]
Gracias a todos por la mano,consegui hacerlo de esta manera.


procedure TFrmConVenta.BitBtn1Click(Sender: TObject);
begin
if CheckBox1.Checked = false then
begin
DBGrid1.DataSource.DataSet := dm_dados.sqlConVenta;
dm_dados.sqlConVenta.Close;
dm_dados.sqlConVenta.ParamByName('mov').AsInteger:=StrToInt(editcodini.Text);
dm_dados.sqlConVenta.ParamByName('numvend').AsInteger:=StrToInt(editcodvend.Text);
dm_dados.sqlConVenta.ParamByName('numcli').AsInteger:=StrToInt(edtnumcli.Text);
dm_dados.sqlConVenta.ParamByName('datavend').AsDate:=StrToDate(MaskEdit1.Text);
dm_dados.sqlConVenta.Open;
end
else
begin
If CheckBox1.Checked = true then
DBGrid1.DataSource.DataSet:= sql_sem_filtro;
MaskEdit1.Text := DateToStr(date);
begin
sql_sem_filtro.Close;
sql_sem_filtro.ParamByName('datavend').AsDate:=StrToDate(MaskEdit1.Text);
sql_sem_filtro.Open;

end;
end;
end;
end.