Label com Informação do Banco de Dados.

Delphi

27/12/2013

Amigos, como faço para o que o caption de um label assuma um nome do banco de dados?
Exemplo: tenho um campo de CNPJ. Quando o cliente digitar um cnpj o label logo abaixo deve trazer a razao social para a propriedade caption desse label.

Lammer Ltda

Lammer Ltda

Curtidas 0

Respostas

Lammer Ltda

Lammer Ltda

27/12/2013

Estou usando o seguinte código:

procedure TfrmGeraOS.dbCNPJExit(Sender: TObject);
var
  VarCNPJ,VarNM: string;
begin
  ShowMessage(dbCNPJ.Text);
  VarCNPJ:= '02831426000112';
  varNm:= 'select nome from cadcli where cnpj = ' + QuotedStr(VarCNPJ) + ';';
  dmCadOS.qryCadCli.SQL.Text:= varNm;
  dmCadOS.qryCadCli.Open;
  label2.Caption:= dmCadOS.qryLancOS.FieldByName('nome').AsString;
end;


mas ele retorna o erro: qryCadCli: Field 'id' not found.

o fato é que ´id´ é minha chave primaria porem em nenhum momento busco por ela...
GOSTEI 0
Eduardo Mendonça

Eduardo Mendonça

27/12/2013

Oi Bom dia!

Não sei o que é esse "QuotedStr(VarCNPJ)" mais você já tentou retirar o QuotedStr(VarCNPJ) e colocar só o "VarCNPJ" já que ela é uma String
tenta assim
procedure TfrmGeraOS.dbCNPJExit(Sender: TObject);
var
  VarCNPJ,VarNM: string;
begin
  ShowMessage(dbCNPJ.Text);
  VarCNPJ:= '02831426000112';
  varNm:= 'select nome from cadcli where cnpj =  ' + VarCNPJ;
  dmCadOS.qryCadCli.SQL.Text:= varNm;
  dmCadOS.qryCadCli.Open;
  label2.Caption:= dmCadOS.qryLancOS.FieldByName('nome').AsString;
end;
GOSTEI 0
Lammer Ltda

Lammer Ltda

27/12/2013

Oi Bom dia!

Não sei o que é esse "QuotedStr(VarCNPJ)" mais você já tentou retirar o QuotedStr(VarCNPJ) e colocar só o "VarCNPJ" já que ela é uma String
tenta assim
procedure TfrmGeraOS.dbCNPJExit(Sender: TObject);
var
  VarCNPJ,VarNM: string;
begin
  ShowMessage(dbCNPJ.Text);
  VarCNPJ:= '02831426000112';
  varNm:= 'select nome from cadcli where cnpj =  ' + VarCNPJ;
  dmCadOS.qryCadCli.SQL.Text:= varNm;
  dmCadOS.qryCadCli.Open;
  label2.Caption:= dmCadOS.qryLancOS.FieldByName('nome').AsString;
end;


QuoteStr é para colocar as aspas entre a variavel.
a sequencia sql esta correta. O problema acontece quando abro a query.
Ainda fazendo isso continua o erro.
Obrigado assim mesmo e fico no aguardo de alguma informação que me ajude.
GOSTEI 0
Marcos Saffran

Marcos Saffran

27/12/2013

Estou usando o seguinte código:

procedure TfrmGeraOS.dbCNPJExit(Sender: TObject);
var
  VarCNPJ,VarNM: string;
begin
  ShowMessage(dbCNPJ.Text);
  VarCNPJ:= '02831426000112';
  varNm:= 'select nome from cadcli where cnpj = ' + QuotedStr(VarCNPJ) + ';';
  dmCadOS.qryCadCli.SQL.Text:= varNm;
  dmCadOS.qryCadCli.Open;
  label2.Caption:= dmCadOS.qryLancOS.FieldByName('nome').AsString;
end;


mas ele retorna o erro: qryCadCli: Field 'id' not found.

o fato é que ´id´ é minha chave primaria porem em nenhum momento busco por ela...



Edite os campos da qryCadCli, exclua todos e inclua novamente.

Outra coisa, o procedimento abre o dmCadOS.qryCadCli e busca do dmCadOS.qryLancOS
GOSTEI 0
Lammer Ltda

Lammer Ltda

27/12/2013

Estou usando o seguinte código:

procedure TfrmGeraOS.dbCNPJExit(Sender: TObject);
var
  VarCNPJ,VarNM: string;
begin
  ShowMessage(dbCNPJ.Text);
  VarCNPJ:= '02831426000112';
  varNm:= 'select nome from cadcli where cnpj = ' + QuotedStr(VarCNPJ) + ';';
  dmCadOS.qryCadCli.SQL.Text:= varNm;
  dmCadOS.qryCadCli.Open;
  label2.Caption:= dmCadOS.qryLancOS.FieldByName('nome').AsString;
end;


mas ele retorna o erro: qryCadCli: Field 'id' not found.

o fato é que ´id´ é minha chave primaria porem em nenhum momento busco por ela...



Edite os campos da qryCadCli, exclua todos e inclua novamente.

Outra coisa, o procedimento abre o dmCadOS.qryCadCli e busca do dmCadOS.qryLancOS



Obrigado a todos pela ajuda mas resolvi da seguinte forma:

    begin
      VarCNPJ:= dbCNPJ.Text;
      varNm:= 'select * from cadcli where cnpj = ' + QuotedStr(VarCNPJ) + ';';
      dmCadOS.qryCadCli.SQL.Text:= varNm;
      dmCadOS.qryCadCli.Open;
      lblRS.Caption:= dmCadOS.qryCadCli.FieldByName('nome').AsString;
    end;


O erro acontece quando tento selecionar um campo especifico da tabela. quando uso o '*' o erro nao aparece. Meu problema foi resolvido porem gostaria de uma explicacao do motivo desse erro.

Obrigado a todos.
GOSTEI 0
Paulo Nunes

Paulo Nunes

27/12/2013

Este erro aconteceu porque provavelmente você adicionou vários campos a qryCadCli
e no seu select você buscava somente o campo nome, com isto ele retorna a mensagem
com o primeiro campo não encontrado no caso o id chave primaria da sua tabela
para pegar somente o campo nome utilize a instrução sql anterior

'select nome from cadcli where cnpj = ' + QuotedStr(VarCNPJ) + ';';

e no componente qryCadCli deixe somente o campo nome
GOSTEI 0
Jaime Santos

Jaime Santos

27/12/2013

Boa tarde,

Então se você verificar o primeiro código que postou:

procedure TfrmGeraOS.dbCNPJExit(Sender: TObject);
var
  VarCNPJ,VarNM: string;
begin
  ShowMessage(dbCNPJ.Text);
  VarCNPJ:= '02831426000112';
  varNm:= 'select nome from cadcli where cnpj = ' + QuotedStr(VarCNPJ) + ';';
  dmCadOS.qryCadCli.SQL.Text:= varNm;
  dmCadOS.qryCadCli.Open;
  label2.Caption:= dmCadOS.qryLancOS.FieldByName('nome').AsString;
end;


a linha
label2.Caption:= dmCadOS.qryLancOS.FieldByName('nome').AsString;
não deveria ser
label2.Caption:= dmCadOS.qryCadCli.FieldByName('nome').AsString;


Após postar como resolvido ela está correta, agora tente trocar o * pelo campo nome novamente, não sei também se criou em tempo de execução ou como objeto no seu dmCadOS, caso lá esteja o objeto (componente) dê dois cliques nela e verifique se tem campos carregados na mesma, caso o tenha bastará tirar os que lá estão que não sejam o campo NOME, porém vale lembrar que se a utilizar em outras operações que utilizem estes campos ou até mesmo para aparecer em tabela vale à pena deixar e manter seu 'SELECT *'.

Att.
Rômulo Mayworm
GOSTEI 0
POSTAR