listar nome de campos da tabela

SQL Server

24/08/2010

bom dia.. estou precisando saber o nome dos campos da tabela para jogar dentro de um combobox porem somente o nome dos campos tipo idusu, nomusu mais tbn podendo tirar alguns campos que eu nao queira listar tipo senha por exemplo.
Fabio Sanches

Fabio Sanches

Curtidas 0

Respostas

Eriley Barbosa

Eriley Barbosa

24/08/2010

Vamos criar uma procedure para isso: procedure CarregarCampos(parDataSource: TDataSource; cbCampos: TComboBox);
Var
  C : Integer; // Irá auxiliar no laço para realizar a leitura de todos os fields da query pertencente ao formulário atual;
begin
  with(parDataSource)do
  begin
    for C := 0 To DataSet.FieldCount -1 do // A rotina ao lado irá realizar uma laço em todos os Fields
    begin // da query que esta ligado ao DataSource.
      if((DataSet.Fields[C].FieldKind = fkData)and // Apenas os Fields que são do tipo fkData serão adicionados ao
      (DataSet.Fields[C].Tag <> 5))then // ComboBox para que o usuário escolha qual será o campo de pesquisa;
        cbCampos.Items.Add(DataSet.Fields[C].FieldName);
    end;
    cbCampos.ItemIndex := 0; // Coloca o primeiro Field no ComboBox
  end;
end;   Coloque 5 na propriedade Tag do campo que não quer mostrar.   Use assim: CarregarCampos(DataSource1, ComboBox1);
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

so entendendo o codigo.. o q é um campo do tipo FkDATA?  e onde q eu coloco as tags ? eu achei o campo.. mais eu tenho um adoconection, adotable, datasource e um adoquery, sei q preciso adicionar os campos em algum componente qual seria e como seria? desculpe a ignorancia
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Você adiciona os campos no que estiver ligado ao datasource, a propriedade Tag pertence a cada campo adicionado. um campo FkDATA é um campo fisico do sua tabela e não calculado ou lookup.
GOSTEI 0
Deivison Melo

Deivison Melo

24/08/2010

Envie o comando:   sp_help 'nome_tabela'    para o sql server e trate dentro do combobox.   Sem mais, abraço!   Emanoel Deivison Recife - PE 
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

mais eu adiciono os campos em qual componente adotable?
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

coloquei o dataset e adicionei o adoconnection nele.. mais na hora de conectar da erro sendo q esta tudo funcionando.. aparece ADODataSet1 : Missing CommandText property
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Você digitou o SQL na propriedade CommandText?
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

agora fiz.. mais onde q esta a propriedade tag de cada campo.. no fielddef tem precision e size so..
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

No Fields Editor, basta dar um duplo-Clique no seu adodataset, será aberta a janela Fields Editor, clique com o botão direito nele e no menu de contexto clique em add all fields, serão adicionados todos os campos da sua consulta ao fields editor, clique sobre cada um dos campos e configure a propriedade Tag com o valor 5 para os campos que não devem aparecer ou outro qualquer para os campos que quer que apareça.
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

montei aki nao deu erro no codigo.. o problema esta na hora de chamar a função que esta dando erro..

procedure TFLocUsu.CarregarCampos(parDataSource: TDataSource; cbCampos: TComboBox);
Var
  C : Integer; // Irá auxiliar no laço para realizar a leitura de todos os fields da query pertencente ao formulário atual;
begin
  with(parDataSource)do
  begin
    for C := 0 To DataModule1.DataSetCadUsu.FieldCount -1 do // A rotina ao lado irá realizar uma laço em todos os Fields
    begin // da query que esta ligado ao DataSource.
      if((DataModule1.DataSetCadUsu.Fields[C].FieldKind = fkData)and // Apenas os Fields que são do tipo fkData serão adicionados ao
      (DataModule1.DataSetCadUsu.Fields[C].Tag <> 5))then // ComboBox para que o usuário escolha qual será o campo de pesquisa;
        cbCampos.Items.Add(DataModule1.DataSetCadUsu.Fields[C].FieldName);
    end;
    cbCampos.ItemIndex := 0; // Coloca o primeiro Field no ComboBox
  end;
end;

CarregarCampos(DataSource1, Combobox1);


[Error] ULocUsu.pas(49): Declaration expected but identifier 'CarregarCampos' found
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Na seção Private de seu formulário você declarou a função? procedure CarregarCampos(parDataSource: TDataSource; cbCampos: TComboBox); Você colocou este código no onshow do seu formulário ou em um botão? CarregarCampos(DataSource1, Combobox1);

GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

coloquei agora no onshow do form e funcionou ai ele carregou o nome do campo.. blz.. mais se eu quiser mascarar isso tipo   case valor of
                 codusu:="Codigo"
por exemplo.. em qual evento q eu faço isso?? no onenter do combo?
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Lembra onde você configurou a propriedade Tag, também tem uma propriedade chamada DisplayLabel para cada campo, dai você vai ter de alterar a procedure para: procedure TFLocUsu.CarregarCampos(parDataSource: TDataSource; cbCampos: TComboBox);
Var
  C : Integer; // Irá auxiliar no laço para realizar a leitura de todos os fields da query pertencente ao formulário atual;
begin
  with(parDataSource)do
  begin
    for C := 0 To DataModule1.DataSetCadUsu.FieldCount -1 do // A rotina ao lado irá realizar uma laço em todos os Fields
    begin // da query que esta ligado ao DataSource.
      if((DataModule1.DataSetCadUsu.Fields[C].FieldKind = fkData)and // Apenas os Fields que são do tipo fkData serão adicionados ao
      (DataModule1.DataSetCadUsu.Fields[C].Tag <> 5))then // ComboBox para que o usuário escolha qual será o campo de pesquisa;
        cbCampos.Items.Add(DataModule1.DataSetCadUsu.Fields[C].DisplayLabel);
    end;
    cbCampos.ItemIndex := 0; // Coloca o primeiro Field no ComboBox
  end;
end;
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

show de bola.. tenho uma duvida camarada.. naquele outro form q foi feito.. aquela função q busca o valor do id esta no onexit o meu botao localizar é um botao porem quando eu dou um click na tela para clicar nesse botao localizar ele aparece um registro novo qual evento q preciso colocar para q ele nao faça isso mais continue com a função de buscar os campos. 
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

procedure TFCadUsu.EIdUsuExit(Sender: TObject);
begin
  if Namedoseubotaoquefazaprocura.Focused = True then
    Exit
  else
  begin
    if (EIdUsu.Text<>'0') and (EIdUsu.Text<>'') then
    begin
      DataModule1.ADOQCadUsu.Close;
      DataModule1.ADOQCadUsu.SQL.Clear;
      DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu=' + EIdUsu.text);
      DataModule1.ADOQCadUsu.Open;
      if (DataModule1.ADOQCadUsu.IsEmpty) then
      begin
        TipOpr:=0;
        Fprincipal.limpaCampos(FCadUsu);
        EIdUsu.Text:='';
        BInserir.Enabled:=true;
        BAlterar.Enabled:=false;
        DataModule1.AdoQCadUsu.Close;
        DataModule1.ADOQCadUsu.SQL.Clear;
        DataModule1.ADOQCadUsu.SQL.Add('Select MAX(CodUsu) CodUsu from TCadUsu');
        DataModule1.ADOQCadUsu.Open;
        if DataModule1.ADOQCadUsu.Fields[0].IsNull then {: se atabela está vazia, retornará nulo}
           EIdUsu.Text := '1' {: então este será o 1º registro}
        else
        begin
           EIdUsu.Text := IntToStr(DataModule1.ADOQCadUsu.Fields[0].AsInteger+1);
           ENomUsu.SetFocus;
        end;
      end
      else
      begin
        TipOpr:=1;
        BInserir.Enabled:=False;
        BAlterar.Enabled:=True;
        ENomUsu.Text := DataModule1.ADOQCadUsu.Fields[1].AsString;
        EPassUsu.Text := DataModule1.ADOQCadUsu.Fields[2].AsString;
        TipNiv := DataModule1.ADOQCadUsu.Fields[3].AsInteger;
        if (tipniv=1) then
          ComboNivUsu.ItemIndex:=1
        else
          ComboNivUsu.ItemIndex:=2;
      end;
    end
    else
      if (EIdUsu.Text='0') or (EIdUsu.Text='') then
      begin
        TipOpr:=0;
        BInserir.Enabled:=True;
        BAlterar.Enabled:=False;
        DataModule1.AdoQCadUsu.Close;
        DataModule1.ADOQCadUsu.SQL.Clear;
        DataModule1.ADOQCadUsu.SQL.Add('Select MAX(CodUsu) CodUsu from TCadUsu');
        DataModule1.ADOQCadUsu.Open;
        if DataModule1.ADOQCadUsu.Fields[0].IsNull then {: se atabela está vazia, retornará nulo}
           EIdUsu.Text := '1' {: então este será o 1º registro}
        else
        begin
          EIdUsu.Text := IntToStr(DataModule1.ADOQCadUsu.Fields[0].AsInteger+1);
          ENomUsu.SetFocus;
        end;
      end;
  end;
end; //end procedure
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

funcionou.. esto montando uma tela de pesquisa agora.. e nela terei alguns tratamentos tipo um DBEDIT onde irei inserir os dados.. um combo de onde escolherei o campo a ser pesquisado.. e a forma de pesquisa em outro combo
se é incremental ou "contendo" a determinada palavra no texto.. ai primeira tarefa como q faço para habilitar o meu dbedit para inserção de dados? e em qual evento do dbedit q eu coloco para ele ir listando a pesquisa em um grid q eu ja inseri no form tbn
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Como é pesquisa não é dbedit e sim edit.
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

o dbedit é usado para inserir, excluir ou alterar valores do banco entao? so como mdo de alteração
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Sim somente para estas operações, toda vez que for uma tela de consulta utilize o edit.
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

ok.. nesse caso eu vou colocar o meu select em qual evento do edit?
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Coloque um botão e coloque o código no evento onclick deste botão.
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

eu gostaria de fazer de forma incremental na pesquisa.. o kra vai digitando e ele ja vai ordenando o meu grid de acordo com a pesquisa se eu colocar no onkeypress do edit funciona?

GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

No onkeupree não, coloque no onchange do edit.
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

deixei o codigo assim mais nao deu certo nao...  :(

Case CbCampos.ItemIndex of
  0 : begin          // codigo
        if cbpesquisa.ItemIndex = 0 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu=:VIdUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VIdUsu').Value:=ELocUsu.Text;
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu=:VIdUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VIdUsu').Value:=ELocUsu.Text;
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  1 : begin            //nome
         if cbpesquisa.ItemIndex = 1 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like VNomUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNomUsu').Value:=ELocUsu.Text+'%';
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like VNomUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNomUsu').Value:='%'+ELocUsu.Text+'%';
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  2 : begin            //nivel
        if cbpesquisa.ItemIndex = 2 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu=:VNivUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNivUsu').Value:=ELocUsu.Text;
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu=:VnivUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNivUsu').Value:=ELocUsu.Text;
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
end;

GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Case CbCampos.ItemIndex of
  0 : begin          // codigo
        if cbpesquisa.ItemIndex = 0 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu=:VIdUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VIdUsu').AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu=:VIdUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VIdUsu'AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  1 : begin            //nome
         if cbpesquisa.ItemIndex = 1 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like :VNomUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNomUsu').AsString:=QuotedStr(ELocUsu.Text)+'%';
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like :VNomUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNomUsu').AsString:='%'+QuotedStr(ELocUsu.Text)+'%';
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  2 : begin            //nivel
        if cbpesquisa.ItemIndex = 2 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu=:VNivUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNivUsu').AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu=:VnivUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNivUsu'.AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
end;

GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Case CbCampos.ItemIndex of
  0 : begin          // codigo
        if cbpesquisa.ItemIndex = 0 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu=:VIdUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VIdUsu').AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu=:VIdUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VIdUsu'AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  1 : begin            //nome
         if cbpesquisa.ItemIndex = 1 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like :VNomUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNomUsu').AsString:=QuotedStr(ELocUsu.Text)+'%';
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like :VNomUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNomUsu').AsString:='%'+QuotedStr(ELocUsu.Text)+'%';
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  2 : begin            //nivel
        if cbpesquisa.ItemIndex = 2 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu=:VNivUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNivUsu').AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu=:VnivUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNivUsu').AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
end;

GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

[Error] ULocUsu.pas(72): Undeclared identifier: 'AsInteger'
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Case CbCampos.ItemIndex of
  0 : begin          // codigo
        if cbpesquisa.ItemIndex = 0 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu=:VIdUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VIdUsu').AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu=:VIdUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VIdUsu').AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  1 : begin            //nome
         if cbpesquisa.ItemIndex = 1 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like :VNomUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNomUsu').AsString:=QuotedStr(ELocUsu.Text)+'%';
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like :VNomUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNomUsu').AsString:='%'+QuotedStr(ELocUsu.Text)+'%';
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  2 : begin            //nivel
        if cbpesquisa.ItemIndex = 2 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu=:VNivUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNivUsu').AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu=:VnivUsu');
            DataModule1.ADOQCadUsu.Parameters.ParamByName('VNivUsu').AsInteger:=StrToInt(ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
end;

GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

estou colocando exatamente esse codigo e esta dando o erro
[Error] ULocUsu.pas(72): Undeclared identifier: 'AsInteger'
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Veja na linha 72 se tem alguma coisa diferente das outras linhas que tem AsInteger, pois, se fosse para dar erro no AsInteger, teria que dar nos outros 3, não concorda?
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

mais deu em todas as linhas.. :)
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Tente com Value no lugar dos AsInteger e ASString.
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

ele passa no debug mais da erro na hora q eu mando executar e escolho por exemplo a opção nome e digito a letra a da o erro "ADOQCadUsu: parameter 'VNomUsu' not found'
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Case CbCampos.ItemIndex of
  0 : begin          // codigo
        if cbpesquisa.ItemIndex = 0 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  1 : begin            //nome
         if cbpesquisa.ItemIndex = 1 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like ' + QuotedStr(ELocUsu.Text)+'%');
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like ' + '%'+QuotedStr(ELocUsu.Text)+'%');
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  2 : begin            //nivel
        if cbpesquisa.ItemIndex = 2 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
end;

Tirei os parametros, mas de uma pesquisada na internet em adicionando parametros no adoquery em tempo de execução.
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Acho que nestas duas linhas tem que ser assim: DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like ' + QuotedStr(ELocUsu.Text +'%'));
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like ' + QuotedStr('%' + ELocUsu.Text +'%'));
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

usando o parametro dentro do sql mesmo igual vc colocou deu erro 'sintaxe incorreta proxima a 'a''
'a' foi a letra q eu digitei no edit e ja deu erro na hora.
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

 Veja um exemplo e adapte a sua necessidade: dtmArquivos.adoQyCidades.SQL.Add('select * from Cidades Where cid_Descricao Like '+ ''''+'%' + edtPesquisa.Text + '%' + '''');
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

deu o mesmo erro.. e nesse codigo q vc colocou qual o motivo de tantas ' aspas simples?
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Case CbCampos.ItemIndex of
  0 : begin          // codigo
        if cbpesquisa.ItemIndex = 0 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  1 : begin            //nome
         if cbpesquisa.ItemIndex = 1 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like ' + QuotedStr(Trim(ELocUsu.Text)+'%'));
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like ' + QuotedStr('%'+Trim(ELocUsu.Text)+'%'));
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  2 : begin            //nivel
        if cbpesquisa.ItemIndex = 2 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
end;
Testei este código aqui e funcionou, você deve estar fazendo algo de errado na hora de testar.
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

acontece um erro quando eu mando limpar o campo.. tipo se eu dou um delete em um valor q eu coloquei ou backspace da o erro e para listar esse resultado dessa consulta no dbgrid como q funciona?

GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Também pudera, você colocou o código em um evento do edit e não no botão como eu te falei. Para exibir o resultado da consulta ligue um datasource a sua query e um dbgrid ao datasource.
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

coloquei no botao funcionou show de bola.. fiz a listagem ja joguei dentro do grid.. agora essa é uma janela q eu abro atravez da janela de cadastro.. como q eu faço para poder pegar o resultado da grid na linha selecionada e dando 2 clicks ou apertando o botao OK ele leve pelo menos o ID para a tela inferior e preencha os campos la?

GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Se você tem um botão no seu formulário de consulta, configure a propriedade ModalResult = mrOK do botão. No seu formulário de cadastro no botão de procura, coloque o seguinte código: if seuformulariodeconsulta.ShowModal = mrOK then begin   //Para funcionar essa linha o sql da query tem que estar select * from tabela   if SuaQuerydecadastro.Locate('ID', Seuformulariodeconsulta.FieldByName('ID').Value, []) then   begin   //joga nos edits, como fizemos no dbnavigator   end;   SeuFormulariodeConsulta.Close; end;
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

blz.. com essa propriedade ele digamos q assimila o OK no botao.. mais de q forma q posso passar um determinado valor como parametro para outra tela? tipo idusu por exemplo para q automaticamente quando eu pressionar o ok ele forçe uma busca na outra tela com aquele id?
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Se DataModule1.ADOQCadUsu for o mesmo componente usado para cadastro, não precisa fazer nada, apenas selecionar o registro no dbgrid que você quer exibir na tela de cadastro, jogar nos edits e fechar sua tela de consulta. if seuformulariodeconsulta.ShowModal = mrOK then
begin
   //joga nos edits, como fizemos no dbnavigator
  SeuFormulariodeConsulta.Close;
end;
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

blz.. eu fiz isso.. ele ate tem a funcionalidade de botao ok e tal.. mais como q eu faço para q o valor selecionado na crid va para a outra tela.. qual propriedade ou nome de variavel q ee joga?
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

  desculpe pelo post repetido..deixei o codigo assim


procedure TFLocUsu.BOkClick(Sender: TObject);

begin

if FLocUsu.ShowModal = mrOK then

begin

   if not(DataModule1.ADOQCadUsu.Active) then

     DataModule1.ADOQCadUsu.Open;

  if not(DataModule1.ADOQCadUsu.IsEmpty) then

  begin

   FCadUsu.ENomUsu.Text := DataModule1.ADOTCadUsu.FieldByName('NomUsu').Value;

   FCadUsu.EPassUsu.Text := DataModule1.ADOTCadUsu.FieldByName('PasUsu').Value;

   FCadUsu.ComboNivUsu.ItemIndex := DataModule1.ADOTCadUsu.FieldByName('NivUsu').Value;

   FCadUsu.EIdUsu.Text := DataModule1.ADOTCadUsu.FieldByName('CodUsu').AsString;

   FLocUsu.Close;

 end;

end;



e ta dando a seguinte mensagem de erro
"Cannot make a visible window modal"
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Você não seguiu a lógica que te passei: Se você tem um botão no seu formulário de consulta, configure a propriedade ModalResult = mrOK do botão. No seu formulário de cadastro no botão de procura, coloque o seguinte código: if seuformulariodeconsulta.ShowModal = mrOK then begin   //Para funcionar essa linha o sql da query tem que estar select * from tabela   if SuaQuerydecadastro.Locate('ID', Seuformulariodeconsulta.FieldByName('ID').Value, []) then   begin   //joga nos edits, como fizemos no dbnavigator   end;   SeuFormulariodeConsulta.Close; end;   Ai você colocou o código no botão ok do formulário de consulta, neste botão não vai código, somente você tem que configurar a propriedade ModalResult = mrOK do botão.   O código acima que você tem que adaptar para os nomes dos seus componentes e campos, vai no onclick do botão procurar do formulário de cadastro.   Faça as alterações e retorne se tiver alguma duvida. 
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010


  eu vou colocar esse codigo no onclick do botao q eu clico para ir para tela de pesquisa?
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Isso mesmo, escrevi um artigo que deva interessar a você: https://www.devmedia.com.br/post-17935-Criando-uma-barra-de-ferramentas-para-aplicacoes-MDI-com-as-operacoes-de.html   Por favor divulgue.   Atenciosamente   Eriley
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

vou ler o seu artigo sim e indicar pode ter certeza nao so esse como todos os outros que vc tem la.. continuando aki fiz o seguinte
procedure TFCadUsu.BProcuraClick(Sender: TObject);begin    FPrincipal.limpacampos(FCadUsu);    EIdUsu.SetFocus;    DataModule1.ADOQCadUsu.Close;    DataModule1.ADOQCadUsu.SQL.Clear;    DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu');    DataModule1.ADOQCadUsu.Open;    FLocUsu.ShowModal;  if FLocUsu.ShowModal = mrOK thenbegin   //Para funcionar essa linha o sql da query tem que estar select * from tabela    DataModule1.ADOQCadUsu.Close;    DataModule1.ADOQCadUsu.SQL.Clear;    DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu');    DataModule1.ADOQCadUsu.Open;  if  DataModule1.ADOQCadUsu.Locate('IdUsu', FLocUsu.FieldByName('IdUSu').Value, []) then  begin  ENomUsu.Text := DataModule1.ADOTCadUsu.FieldByName('NomUsu').Value;  EPassUsu.Text := DataModule1.ADOTCadUsu.FieldByName('PasUsu').Value;  ComboNivUsu.ItemIndex := DataModule1.ADOTCadUsu.FieldByName('NivUsu').Value;  EIdUsu.Text := DataModule1.ADOTCadUsu.FieldByName('CodUsu').AsString;  end;  FLocUsu.Close;end;end;

ta dando erro a linha if  DataModule1.ADOQCadUsu.Locate('IdUsu', FLocUsu.FieldByName('IdUSu').Value, []) then
erro[Error] UCadUsu.pas(286): Undeclared identifier: 'FieldByName'
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010


procedure TFCadUsu.BProcuraClick(Sender: TObject);
begin
    FPrincipal.limpacampos(FCadUsu);    
    if FLocUsu.ShowModal = mrOK then
    begin
        DataModule1.ADOQCadUsu.Close;
        DataModule1.ADOQCadUsu.SQL.Clear;
        DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu');
        DataModule1.ADOQCadUsu.SQL.Add('Where CodUsu = ' + DataModule1.ADOTCadUsu.FieldByName('CodUsu').AsString);
        DataModule1.ADOQCadUsu.Open;
        ENomUsu.Text := DataModule1.ADOQCadUsu.FieldByName('NomUsu').Value;
        EPassUsu.Text := DataModule1.ADOQCadUsu.FieldByName('PasUsu').Value;
        ComboNivUsu.ItemIndex := DataModule1.ADOQCadUsu.FieldByName('NivUsu').Value;
        EIdUsu.Text := DataModule1.ADOQCadUsu.FieldByName('CodUsu').AsString;
        EIdUsu.SetFocus;
    end;
  FLocUsu.Close;
end;
end;
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

funcionou.. mais por exemplo eu entrei la .. e escolhi um campo.. depois disso.. se eu clicar na pesquisa denovo e escolher outro.. ele usa sempre o mesmo.. e digamos q no meu grid apareça 5 ele esta pegando o primeiro registro e sempre q eu volto na tela de pesquisa ele vai no meu combobox e lista as informações dos campos e vai duplicando todas as informações
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Pela tela que você montou a operação dela é assim:
Escolher um campo, uma operação e digitar o dado a pesquisar no edit e clicar no botão.
Se você após fazer isso, clicar no botão novamente a pesquisa será repetida.
Mas se você escolher outro campo e digitar outro dado no Edit, será feita uma nova pesquisa. Alias quando montei a pesquisa, você estava estava usando:
DataModule1.ADOQCadUsu.Close;
DataModule1.ADOQCadUsu.SQL.Clear; Mas quando montei o retorno da pesquisa estavamos usando:
DataModule1.ADOTCadUsu Para funcionar sua tela de pesquisa tem que estar usando:
DataModule1.ADOTCadUsu, somente na tela de pesquisa, na tela de cadastro, continua como está.
Para não repetir itens no combobox, basta limpa-lo antes de inserir os itens:   procedure TFLocUsu.CarregarCampos(parDataSource: TDataSource; cbCampos: TComboBox);
Var
  C : Integer; // Irá auxiliar no laço para realizar a leitura de todos os fields da query pertencente ao formulário atual;
begin
  //Limpando o combobox para não repetir itens
  cbCampos.Clear;
  with(parDataSource)do
  begin
    for C := 0 To DataModule1.DataSetCadUsu.FieldCount -1 do // A rotina ao lado irá realizar uma laço em todos os Fields
    begin // da query que esta ligado ao DataSource.
      if((DataModule1.DataSetCadUsu.Fields[C].FieldKind = fkData)and // Apenas os Fields que são do tipo fkData serão adicionados ao
      (DataModule1.DataSetCadUsu.Fields[C].Tag <> 5))then // ComboBox para que o usuário escolha qual será o campo de pesquisa;
        cbCampos.Items.Add(DataModule1.DataSetCadUsu.Fields[C].DisplayLabel);
    end;
    cbCampos.ItemIndex := 0; // Coloca o primeiro Field no ComboBox
  end;
end;
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

mais eu so estavausando o TCadUsu na tela de cadastro na de pesquisa eu nem cheguei a usar ele nao.. pq estava usando ele pra linkar no dbnavigator
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

tirei o TCadUsu e parou de funcionar o dbnavigator. e na minha tela de pesquisa sequer tem o AdoTCadUsu
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Vamos clarear as coisas, na tela de consulta você usa AdoQCadUsu ou ADoTCadUsu? Lembrando que esse ADOTCadUsu, foi você que colocou no seu código eu nem sei para que você está usando ele. No meu entender estamos usando o AdoQCadUsu tanto na tela de cadastro, como na de pesquisa, no meu ver o ADoTCadUsu, é desnecessário. Por favor seja o mais claro possivel, para podermos fechar este tópico. Na tela de Cadastro, você está usando AdoQCadUsu ou ADoTCadUsu?  
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Veja que aqui você usa DataModule1.ADOQCadUsu
 
procedure TFCadUsu.EIdUsuExit(Sender: TObject);
begin
  if Namedoseubotaoquefazaprocura.Focused = True then
    Exit
  else
  begin
    if (EIdUsu.Text<>'0') and (EIdUsu.Text<>'') then
    begin
      DataModule1.ADOQCadUsu.Close;
      DataModule1.ADOQCadUsu.SQL.Clear;
      DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu=' + EIdUsu.text);
      DataModule1.ADOQCadUsu.Open;
      if (DataModule1.ADOQCadUsu.IsEmpty) then
      begin
        TipOpr:=0;
        Fprincipal.limpaCampos(FCadUsu);
        EIdUsu.Text:='';
        BInserir.Enabled:=true;
        BAlterar.Enabled:=false;
        DataModule1.AdoQCadUsu.Close;
        DataModule1.ADOQCadUsu.SQL.Clear;
        DataModule1.ADOQCadUsu.SQL.Add('Select MAX(CodUsu) CodUsu from TCadUsu');
        DataModule1.ADOQCadUsu.Open;
        if DataModule1.ADOQCadUsu.Fields[0].IsNull then {: se atabela está vazia, retornará nulo}
           EIdUsu.Text := '1' {: então este será o 1º registro}
        else
        begin
           EIdUsu.Text := IntToStr(DataModule1.ADOQCadUsu.Fields[0].AsInteger+1);
           ENomUsu.SetFocus;
        end;
      end
      else
      begin
        TipOpr:=1;
        BInserir.Enabled:=False;
        BAlterar.Enabled:=True;
        ENomUsu.Text := DataModule1.ADOQCadUsu.Fields[1].AsString;
        EPassUsu.Text := DataModule1.ADOQCadUsu.Fields[2].AsString;
        TipNiv := DataModule1.ADOQCadUsu.Fields[3].AsInteger;
        if (tipniv=1) then
          ComboNivUsu.ItemIndex:=1
        else
          ComboNivUsu.ItemIndex:=2;
      end;
    end
    else
      if (EIdUsu.Text='0') or (EIdUsu.Text='') then
      begin
        TipOpr:=0;
        BInserir.Enabled:=True;
        BAlterar.Enabled:=False;
        DataModule1.AdoQCadUsu.Close;
        DataModule1.ADOQCadUsu.SQL.Clear;
        DataModule1.ADOQCadUsu.SQL.Add('Select MAX(CodUsu) CodUsu from TCadUsu');
        DataModule1.ADOQCadUsu.Open;
        if DataModule1.ADOQCadUsu.Fields[0].IsNull then {: se atabela está vazia, retornará nulo}
           EIdUsu.Text := '1' {: então este será o 1º registro}
        else
        begin
          EIdUsu.Text := IntToStr(DataModule1.ADOQCadUsu.Fields[0].AsInteger+1);
          ENomUsu.SetFocus;
        end;
      end;
  end;
end; //end procedure
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Veja que aqui você também utiliza DataModule1.ADOQCadUsu
Case CbCampos.ItemIndex of
  0 : begin          // codigo
        if cbpesquisa.ItemIndex = 0 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where codusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  1 : begin            //nome
         if cbpesquisa.ItemIndex = 1 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like ' + QuotedStr(Trim(ELocUsu.Text)+'%'));
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where NomUsu like ' + QuotedStr('%'+Trim(ELocUsu.Text)+'%'));
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
  2 : begin            //nivel
        if cbpesquisa.ItemIndex = 2 then
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end
            else
          begin
            DataModule1.ADOQCadUsu.Close;
            DataModule1.ADOQCadUsu.SQL.Clear;
            DataModule1.ADOQCadUsu.SQL.Add('Select * from TCadUsu where nivusu = ' + ELocUsu.Text);
            DataModule1.ADOQCadUsu.Open;
          end;
      end;
end;
Testei este código aqui e funcionou, você deve estar fazendo algo de errado na hora de testar.
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Então no meu ver não existe ADOTCadUsu em lugar nenhum, não sei da onde você tirou isso.
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Sendo assim, as duas telas usando DataModule1.ADOQCadUsu, você só precisa chamar o formulário e  passar o registro escolhido para os edits.    procedure TFCadUsu.BProcuraClick(Sender: TObject); begin     FPrincipal.limpacampos(FCadUsu);         if FLocUsu.ShowModal = mrOK then     begin         ENomUsu.Text := DataModule1.ADOQCadUsu.FieldByName('NomUsu').Value;         EPassUsu.Text := DataModule1.ADOQCadUsu.FieldByName('PasUsu').Value;         ComboNivUsu.ItemIndex := DataModule1.ADOQCadUsu.FieldByName('NivUsu').Value;         EIdUsu.Text := DataModule1.ADOQCadUsu.FieldByName('CodUsu').AsString;         EIdUsu.SetFocus;     end;     FLocUsu.Close; end;
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

correto.. o q eu estava fazendo de errado era ter vinculado o meu dbnavigator em um datasource entro do proprio form sendo q poderia ter vinculado no ds do DM, corrigi funcionou tudo certo.. so alguns ajustes.. tipo quando eu seleciono um campo e clico para fazer a pesquisa novamente.. ele salva a ultima pesquisa como padrao. em qual momento q posso zerar ela e como?
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

A pesquisa só é zerada, quando você faz uma nova. Mas o estado dos componentes não voltam ao normal, para fazer isso, teria que fazer a pesquisa com outra query, não a mesma do cadastro e fechar esta query depois de transferir os dados para o formulário de cadastro. Assim quando você abrir a tela de pesquisa o dbgrid estará sem registros.
GOSTEI 0
Fabio Sanches

Fabio Sanches

24/08/2010

voce acha viavel fazer isso?
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

24/08/2010

Só se você quiser.
GOSTEI 0
POSTAR