Fórum DBGRID - Dúvida para preencher nome das colunas #417670
29/05/2012
0
na minha DBGRID. Vou colocar um trecho de meu código para que possam entender de que forma estou trazendo os dados para a grid, facilitando assim a resolução do meu problema.
botão de consulta
var
consCidade : Cidade;
begin
inherited;
consCidade := Cidade.CrieObjeto;
consCidade.setDescricao(edt_Descricao.Text);
if edt_Id.Text <> then
consCidade.setId(strtoint(edt_Id.Text));
if not umaCtrlCidade.Buscar(consCidade) then
MessageDlg(Nenhum registro encontrado!, mtInformation, [mbOK], 0);
consCidade.Destrua_Se;
edt_Id.Clear;
edt_Descricao.Clear;
end;
conhecaObj (que preenche a grid)
procedure TFrmConCidade.ConhecaObj(vCidade: Cidade);
begin
umaCidade := vCidade;
umaCtrlCidade := CtrlCidade.CrieObjeto;
umFrmCadCidade := TFrmCadCidade.Create(nil);
Self.gridConsulta.DataSource := umaCtrlCidade.GetDS;
end;
estou utilizando o ZEUS p/ fazer a consulta no banco, desta forma
begin
e := and ;
onde := where;
prim := true;
umaCidade := Cidade(obj);
sql := select * from cidade;
if umaCidade.getId <> 0 then
begin
if prim then //SE FOR O PRIMEIRO, SETA COMO FLAG COMO FALSO PQ É O PRIMEIRO
begin
prim := false;
sql := sql+onde;
end
else //SE NAO, COLOCA CLAUSULA AND PARA JUNTAR CONDIÇOES
sql := sql+e;
sql := sql+ idcidade = +inttostr(umaCidade.getId); //COLOCA CONDIÇAO NO SQL
end;
if umaCidade.getDescricao <> then
begin
if prim then
begin
prim := false;
sql := sql+onde;
end
else
sql := sql+e;
sql := sql+ descricao like +quotedstr(%+umaCidade.getDescricao+%);
end;
with umDM do
begin
QCidade.Close;
QCidade.sql.Text := sql;
QCidade.Open;
if QCidade.RecordCount > 0 then
result := True
else
result := false;
end;
end;
Obrigado
Evandro Foster
Curtir tópico
+ 0Posts
29/05/2012
Evandro Foster
já tentei setar o nome das colunas na hora de criar o formulario, mas da erro na hora da consulta e nao preenche nada dai..
Gostei + 0
30/05/2012
Joel Rodrigues
1) Após abrir a tabela, alterar o DisplayLabel de cada campo da Query. Por exemplo:
query.FieldByName(´CliNOME_CLIENTE´).DisplayLabel = ´Nome do Cliente´; query.FieldByName(´VenDATA_HORA´).displayLabel = ´Data/Hora da Venda´;
2) NA instrução SQL de consulta, dar aliases a todos os campos. Exemplo:
SELECT CliNOME_CLIENTE ´Cliente´, CliENDERECO ´Endereço´, CliCODIGO_VENDEDOR ´Vendedor´ FROM TbCLIENTES
Gostei + 0
30/05/2012
Evandro Foster
1) Após abrir a tabela, alterar o DisplayLabel de cada campo da Query. Por exemplo:
query.FieldByName(´CliNOME_CLIENTE´).DisplayLabel = ´Nome do Cliente´; query.FieldByName(´VenDATA_HORA´).displayLabel = ´Data/Hora da Venda´;
2) NA instrução SQL de consulta, dar aliases a todos os campos. Exemplo:
SELECT CliNOME_CLIENTE ´Cliente´, CliENDERECO ´Endereço´, CliCODIGO_VENDEDOR ´Vendedor´ FROM TbCLIENTES
query.FieldByName(´CliNOME_CLIENTE´).DisplayLabel = ´Nome do Cliente´; query.FieldByName(´VenDATA_HORA´).displayLabel = ´Data/Hora da Venda´;
deu certo desta forma, obrigado :)
No caso, na hora da consulta existe alguma forma de eu jogar o Nome do EStado na grid ao invez do ID????
obrigado
Gostei + 0
31/05/2012
Joel Rodrigues
SELECT Cli.CliNOME, Cli.CliENDERECO, Est.EstDESCRICAO, Cid.CidDESCRICAO FROM TbCLIENTES Cli LEFT JOIN TbESTADOS Est ON Cli.CliID_ESTADO = Est.EstID_ESTADO LEFT JOIN TbCIDADES Cid ON Cli.CliID_CIDADE = Cid.EstID_CIDADE
É só adaptar à sua necessidade.
Gostei + 0
31/05/2012
Evandro Foster
SELECT Cli.CliNOME, Cli.CliENDERECO, Est.EstDESCRICAO, Cid.CidDESCRICAO FROM TbCLIENTES Cli LEFT JOIN TbESTADOS Est ON Cli.CliID_ESTADO = Est.EstID_ESTADO LEFT JOIN TbCIDADES Cid ON Cli.CliID_CIDADE = Cid.EstID_CIDADE
É só adaptar à sua necessidade.
Opa beleza cara deu certo :) Tive que fazer algumas adaptacoes no código e na TZQuery pra funcionar mas ta 100% agora.. Já serviu de exemplo p/ os proximos caso de uso!
Vou deixar o code aqui.. se alguem um dia precisar
function DaoCidade.Buscar(obj: TObject): Boolean;
var
prim: Boolean;
sql, e, onde: string;
umaCidade: Cidade;
begin
e := and ;
onde := where;
prim := true;
umaCidade := Cidade(obj);
sql := select c.idcidade,c.descricao,c.cep,c.ddd,c.estado_idestado,e.descricao,c.datacadastro,c.dataultalteracao from cidade c inner join estado as e on c.estado_idestado = e.idestado;
if umaCidade.getId <> 0 then
begin
if prim then //SE FOR O PRIMEIRO, SETA COMO FLAG COMO FALSO PQ É O PRIMEIRO
begin
prim := false;
sql := sql+onde;
end
else //SE NAO, COLOCA CLAUSULA AND PARA JUNTAR CONDIÇOES
sql := sql+e;
sql := sql+ idcidade = +inttostr(umaCidade.getId); //COLOCA CONDIÇAO NO SQL
end;
if umaCidade.getDescricao <> then
begin
if prim then
begin
prim := false;
sql := sql+onde;
end
else
sql := sql+e;
sql := sql+ c.descricao like +quotedstr(%+umaCidade.getDescricao+%);
end;
with umDM do
begin
QCidade.Close;
QCidade.sql.Text := sql;
QCidade.Open;
// Altera os dados na DBGRID
QCidade.FieldByName(idcidade).DisplayLabel := ID;
QCidade.FieldByName(descricao).DisplayLabel := Descrição;
QCidade.FieldByName(estado_idestado).DisplayLabel := IDEst;
QCidade.FieldByName(descricao_1).DisplayLabel := Estado;
QCidade.FieldByName(cep).DisplayLabel := CEP;
QCidade.FieldByName(ddd).DisplayLabel := DDD;
QCidade.FieldByName(datacadastro).DisplayLabel := Data de Cadastro;
QCidade.FieldByName(dataultalteracao).DisplayLabel := Última Alteração;
QCidade.FieldByName(idcidade).DisplayWidth:= 5;
QCidade.FieldByName(descricao).DisplayWidth := 30;
QCidade.FieldByName(estado_idestado).DisplayWidth := 5;
QCidade.FieldByName(descricao_1).DisplayWidth := 15;
QCidade.FieldByName(cep).DisplayWidth := 9;
QCidade.FieldByName(ddd).DisplayWidth := 5;
QCidade.FieldByName(datacadastro).DisplayWidth := 10;
QCidade.FieldByName(dataultalteracao).DisplayWidth := 10;
//--------------------------------------------------------
if QCidade.RecordCount > 0 then
result := True
else
result := false;
end;
end;
Valeu
abç
Gostei + 0
01/06/2012
Joel Rodrigues
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)