DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 24/8/2010 8:48:58 AM

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.
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 24/8/2010 9:12:54 AM
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);

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 24/8/2010 10:11:14 AM
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

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 24/8/2010 10:38:44 AM

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.

 
Deivison
 
 
 


País: Brasil
Estado: PE
Cidade: x
Mensagens: 480
 Postado em: 24/8/2010 11:23:34 AM
Envie o comando:
 
sp_help 'nome_tabela' 
 
para o sql server e trate dentro do combobox.
 
Sem mais, abraço!
 
Emanoel Deivison
Recife - PE 

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 24/8/2010 3:49:10 PM
mais eu adiciono os campos em qual componente adotable?

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 24/8/2010 3:54:17 PM
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

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 24/8/2010 4:23:41 PM
Você digitou o SQL na propriedade CommandText?

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 24/8/2010 4:28:12 PM
agora fiz.. mais onde q esta a propriedade tag de cada campo.. no fielddef tem precision e size so..

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 24/8/2010 7:28:30 PM
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.

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 25/8/2010 9:00:42 AM
montei aki nao deu erro no codigo.. o problema esta na hora de chamar a função que esta dando erro..

#Código

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

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 25/8/2010 9:07:01 AM
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);


 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 25/8/2010 9:46:04 AM
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?

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 25/8/2010 10:03:09 AM
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;


 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 25/8/2010 11:20:44 AM
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. 

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 25/8/2010 11:46:56 AM
#Código
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

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 30/8/2010 8:26:35 AM
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

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 9:12:09 AM
Como é pesquisa não é dbedit e sim edit.

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 30/8/2010 9:12:58 AM
o dbedit é usado para inserir, excluir ou alterar valores do banco entao? so como mdo de alteração

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 10:06:24 AM

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


 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 30/8/2010 10:12:41 AM
ok.. nesse caso eu vou colocar o meu select em qual evento do edit?

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 11:36:14 AM
Coloque um botão e coloque o código no evento onclick deste botão.

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 30/8/2010 11:49:12 AM
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?


 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 1:04:02 PM
No onkeupree não, coloque no onchange do edit.

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 30/8/2010 1:42:06 PM
deixei o codigo assim mais nao deu certo nao...  :(

#Código

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;


 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 2:02:51 PM
#Código

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;


 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 2:03:31 PM
#Código

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;


 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 30/8/2010 2:22:05 PM
[Error] ULocUsu.pas(72): Undeclared identifier: 'AsInteger'

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 2:25:41 PM

Citação:
#Código

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;


 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 30/8/2010 2:45:03 PM
estou colocando exatamente esse codigo e esta dando o erro
[Error] ULocUsu.pas(72): Undeclared identifier: 'AsInteger'

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 3:06:16 PM
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?

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 30/8/2010 3:14:07 PM
mais deu em todas as linhas.. :)

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 3:29:17 PM
Tente com Value no lugar dos AsInteger e ASString.

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 30/8/2010 3:47:30 PM
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'

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 3:55:37 PM

Citação:

Citação:
#Código

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.

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 3:59:16 PM
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 +'%'));


 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 30/8/2010 4:47:45 PM
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.

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 7:29:24 PM
 Veja um exemplo e adapte a sua necessidade:
dtmArquivos.adoQyCidades.SQL.Add('select * from Cidades Where cid_Descricao Like '+
''''+'%' + edtPesquisa.Text + '%' + '''');

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 31/8/2010 9:57:11 AM
deu o mesmo erro.. e nesse codigo q vc colocou qual o motivo de tantas ' aspas simples?

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 31/8/2010 1:57:29 PM
#Código
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.

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 31/8/2010 3:36:01 PM
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?


 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 31/8/2010 3:54:24 PM
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.

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 31/8/2010 4:12:30 PM
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?


 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 31/8/2010 7:47:42 PM
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;

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 1/9/2010 7:41:54 AM
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?

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 1/9/2010 8:48:45 AM
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;

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 1/9/2010 1:09:53 PM
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?

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 1/9/2010 1:21:24 PM
  desculpe pelo post repetido..deixei o codigo assim

#Código

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"

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 1/9/2010 2:03:33 PM
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. 

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 1/9/2010 2:15:27 PM

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

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 1/9/2010 3:03:20 PM

Isso mesmo, escrevi um artigo que deva interessar a você:

 
Por favor divulgue.
 
Atenciosamente
 
Eriley

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 1/9/2010 6:13:18 PM
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

#Código
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 then
begin
   //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'

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 1/9/2010 7:01:48 PM
#Código
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;

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 2/9/2010 9:12:48 AM
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

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/9/2010 9:51:44 AM

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;


 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 2/9/2010 9:59:47 AM
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

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 2/9/2010 10:03:34 AM
tirei o TCadUsu e parou de funcionar o dbnavigator. e na minha tela de pesquisa sequer tem o AdoTCadUsu

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/9/2010 10:38:34 AM
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?
 

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/9/2010 10:42:28 AM
Veja que aqui você usa DataModule1.ADOQCadUsu

Citação:
#Código
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

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/9/2010 10:44:06 AM
Veja que aqui você também utiliza DataModule1.ADOQCadUsu

Citação:
#Código
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.

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/9/2010 10:46:19 AM
Então no meu ver não existe ADOTCadUsu em lugar nenhum, não sei da onde você tirou isso.

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/9/2010 10:51:27 AM
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;

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 2/9/2010 1:19:42 PM
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?

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/9/2010 1:45:26 PM
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.

 
FABIO SANCHES
 

País: Brasil
Estado: ES
Cidade: CACHOEIRO DE ITAPEMIRIM
Mensagens: 78
 Postado em: 2/9/2010 1:46:38 PM
voce acha viavel fazer isso?

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/9/2010 3:04:27 PM

Só se você quiser.


 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03