Um DbGrid para pesquisa e 2(duas) querys .. É possível ?

29/05/2008

1

[color=red:77b22ff6cd]Título editado por Massuda Por favor, não use apenas letras maiúsculas no título/texto. No caso de reincidência, seus tópicos poderão vir a ser bloqueados. Leia as :arrow: [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum.[/color:77b22ff6cd]

Ola Amigos,
Desculpem, mas se nao persistir, nao aprendo...

Tenho 2 Formularios: Um de Cadastro Fornecedores, e outro de Cadastro de Clientes:

Pois bem, cada formulario tem tabela diferente. O CadFornecedor Abre a Tabela de Fornecedor e o CadCliente, abre a tabela de Cliente.

O problema pra mim está no DBGrid, que só tenho um, no Form de Pesquisa, SENDO QUE A PROPRIEDADE DATASOURCE, SÓ APONTA PARA UMA TABELA

a Pergunta é: ATRAVES DE CÓDIGO, É POSSIVEL MUDAR O DATASET E O DATASOURCE DO DBGRID???

Eu Nao consegui, ele sempre vai me jogar para o que esta apontando na na propriedade do DataSet do DbGrid.

Se for possivel, me digam tambem por gentileza, se tem algum Truque, para dizer no codigo, de que formulario estou vindo, (para montar a SQL com a tabela referente ao formulario)

Eu criei uma Variavel publica para isso, (Ex: 0=Fornec 1=Cliente), mas deve ter outro meio, talvez um TAG etc...

Agradeço a atençao que me for dada.
Jotas.


.


Responder

Posts

30/05/2008

Du_nirvana

Olá, talvez o melhor nesse caso seja alterar apenas o sql da consulta, trabalhando apenas com um objeto de cada, ou seja, quando você mudar de formulario é só carregar no query no novo sql :

query.sql.text := ´select ...´

você só precisa tomar cuidado com a formatação das colunas no dbgrid, ai você precisará de algo como:

procedure formataColunas;
var
vl_titulo : tcolumntitle;

begin

vl_titulo := TColumnTitle.Create(DBG1.Columns[0]);
WITH vl_titulo DO
BEGIN
Caption := ´Descrição´;
END;
DBG1.Columns[0].Width := 285;
....

Bom é isso, foi uma idéia...


Responder

31/05/2008

Mazzi

Ola, Faca o seguinte, crie no form onde esta a grid que vc quer popular...
1- TQuery;
1-DataSoruce

conecte a Query com a DataBase.
conecte o DataSource com a Query.

coloque um Radio ou COmbo com as Opcoes
-Clientes
-Fornecedores


para consultar pelos nomes dos mesmos coloque um Edit.txt

e um botao para localiza-los (ou insira um metodo em OnChange no Edit.text)

var qry:TQuery;

qry:= TQuery.Create(self);
qry.DatabaseName:= TDatabase;
qry.Close;

----------------------
if (FornecedoreSELECIONADO)
qry.sql.clear;
qry.sql.add(´SELECT * FROM FORNECEDOR WHERE FORNOME =:PARAM´);
qry.ParamByName(´param´).asString:= Edit.text;
qry.Open;

else

----------------------
if (clienteSelecionado)
qry.sql.clear;
qry.sql.add(´SELECT * FROM CLIENTE WHERE CLINOME =:PARAM´);
qry.ParamByName(´param´).asString:= Edit.text;
qry.Open;

Pronto!!!


Responder