Ir para conteúdo
Fórum Script Brasil
  • 0

Pesquisa de o que foi cadastrado somente pelo usuario


Xafam

Pergunta

bom dia ...

procurei na net (no proprio forum) alguma coisa sobre pesquisa via SQL ...

achei esse codigo:

procedure Tfrm_menu.Edit1Change(Sender: TObject);
var campo,inicio,fim:string;
begin
if radiobutton1.Checked then begin campo := 'cod'; inicio := '="'; fim := '"' end;
if radiobutton2.Checked then begin campo := 'produto'; inicio := 'like "%'; fim := '%"' end;
  with dm.qr_produtos do begin
    Close; SQL.Clear;
    SQL.Add('SELECT * FROM produtos WHERE '+CAMPO+' '+INICIO+''+edit1.Text+''+FIM+' ORDER BY '+campo);
    Open;
  end;
end;
a descrição de o que o codigo faz é :
Como fazer uma consulta, indicando onde será pesquisado com componentes radiobutton.
eu modifiquei a parte que eu queria e ficou assim:
with DMSISRET.Q_TAB_FROM_VIEW18_VOTO do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from TAB_FROM_VIEW18 where usu_analistaalteracao = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analistaalteracao');
    Open;

// --- BOTAO PROXIMO ---

// tabela Qvoto
DMSISRET.Qvoto.next;

// tabela Q_TAB_FROM_VIEW18
DMSISRET.Q_TAB_FROM_VIEW18_VOTO.next;

end;

traduzindo o codigo, eu quero que o usuario so possa ver os campos da tabela que ele preencheu .. e não toda a tabela

FrmSenha.Edit1.Text é o edit q contem o nº da matricula do usuario

mt_analistaalteracao é o campo da tabela onde ficaria armazenado o numero da matricula do usuario (mas não está salvando) ...

quando eu compilo o aplicativo e executo o botao PROXIMO, dá a seguinte mensagem

"Project SISRET.exe raised exception class EDBEngineError with message 'Could not find object.'. Process stopped ...

quero saber o seguinte .. como que eu faço para que o usuario veja somento o que ele criou ...

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

quando eu compilo o aplicativo e executo o botao PROXIMO, dá a seguinte mensagem

QUOTE

"Project SISRET.exe raised exception class EDBEngineError with message 'Could not find object.'. Process stopped ...

Com relação ao erro:

" Projeto SISRET.exe elevou classe de exceção EDBEngineError com mensagem ' não pôde achar objeto. '. Processo parou

Provavelmente não encontrou a sua tabela ( View )

// tabela Q_TAB_FROM_VIEW18

DMSISRET.Q_TAB_FROM_VIEW18_VOTO.next;

quero saber o seguinte .. como que eu faço para que o usuario veja somento o que ele criou ...

Voce está no caminho certo

FrmSenha.Edit1.Text é o edit q contem o nº da matricula do usuario

A sua select terá que trazer apenas os registros que tenham a matricula do usuario que cadastrou os registros.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas,

como que ele não está achando a tabela ...

a tabela é essa mesma

TAB_FROM_VIEW18

ela é uma copia de uma VIEW

coloquei um break point (não sei como escreve) e ele dá o erro na linha que tem o SQL ..

obrigado pela ajuda .

Xafam ...

Link para o comentário
Compartilhar em outros sites

  • 0

Provavelmente não encontrou a sua tabela ( View )

// tabela Q_TAB_FROM_VIEW18

DMSISRET.Q_TAB_FROM_VIEW18_VOTO.next;

como que ele não está achando a tabela ...

a tabela é essa mesma

TAB_FROM_VIEW18

ela é uma copia de uma VIEW

Sera que estamos falando da mesma tabela ?

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas ..

quando você falou :

Sera que estamos falando da mesma tabela ?

viu conferir se o nome do campo estava certo ...

a nun é q era ai q tava o erro...

pois é ...

o campo não era usu_analistaalteracao e sim mt_analistaalteracao

..

de certa forma o problema foi resolvido ...

agora eu so vejo o que o usuario cadastrou ...

mas não está salvando o login do usuario nesse campo mt_analistaalteracao ..

com isso não vejo o q o usuario cadastrou ..

so vejo quando eu mesmo vou la no SQL Explorer e coloco q mt_analistaalteracao recebe um login ai (900844 por exemplo)

ps.: estou usando Delphi 4

valeu a ajuda ..

xafam ...

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas ..

valeu pela ajuda ... o q você sugeriu me fez ver algo q tava errado ...

meu codigo tava assim:

DBEdit23.EditText := FrmSenha.Edit1.Text;
DMSISRET.Q_TAB_FROM_VIEW18_VOTO.Insert;
so mudei a ordem e funcionou ... porque antes ele tava atribuindo o valor, mas depois zerava .... agora ta tudo beleza ..... mas agora tem outros erros .. tipo .. quando eu cadastro até 2 registros .. o programa roda tudo bem ... mas quando cadastro mais que 2 , ele só mostra dois registros e quando clico no "Ultimo", ai que ele me mostra o 3 registro (porque no caso ele era o ultimo registro) por exemplo: interface do programa _____________________ |Nº Processo: ................. | |____________________| |Placa Veiculo: ................ | |____________________| |Observação*: ................ | |____________________| | |< < > >| + - /\ S C F | |____________________| * tem um DBMemo que contem o que o cara fez para ter a multa (avançou sinal, atropelou, ....) OBS.: |< : ultimo; < : anterior; > : proximo; >| : ultimo; + : add; - : excluir; /\ : alterar; S : salvar; C : Cancelar; F : Fechar; então .. se eu cadastro assim:
Nº Processo : 0001 Placa Veiculo: AAA0001 Observação : nada0001 Nº Processo : 0002 Placa Veiculo: BBB0002 Observação : nada0002
ele mostra tudo beleza .. aperto avançar ele mostra o registro todo do nº do processo 0002, e quando aperto anterior ele mostra o registro todo do nº do processo 0001 . . . . agora ... se eu registrar mais um:
Nº Processo : 0003 Placa Veiculo: CCC0003 Observação : nada0003
o botao de proximo , não mostra esse ultimo registro, nem se eu add mais outro ... so mostra quando eu aperto o botao Ultimo ... segue abaixo o codigo dos meus botoes: PRIMEIRO
procedure TFrmMenu.BitBtn2Click(Sender: TObject);
begin
  // ========= PRIMEIRO ===============================

 // tabela TAB_FROM_VIEW18_VOTO  
  with DMSISRET.Q_TAB_FROM_VIEW18_VOTO do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from TAB_FROM_VIEW18 where mt_analistaalteracao = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analistaalteracao');
    Open;
    DMSISRET.Q_TAB_FROM_VIEW18_VOTO.First;
  end;

 // tabela Qvoto 
  with DMSISRET.Qvoto do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from dbo.tbvoto where mt_analista = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analista');
    Open;
    DMSISRET.Qvoto.First;
  end;
end;
ANTERIOR
procedure TFrmMenu.BitBtn2Click(Sender: TObject);
begin
  // ========= ANTERIOR ===============================

 // tabela TAB_FROM_VIEW18_VOTO  
  with DMSISRET.Q_TAB_FROM_VIEW18_VOTO do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from TAB_FROM_VIEW18 where mt_analistaalteracao = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analistaalteracao');
    Open;
    DMSISRET.Q_TAB_FROM_VIEW18_VOTO.prior;
  end;

 // tabela Qvoto 
  with DMSISRET.Qvoto do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from dbo.tbvoto where mt_analista = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analista');
    Open;
    DMSISRET.Qvoto.prior;
  end;
end;
PROXIMO
procedure TFrmMenu.BitBtn2Click(Sender: TObject);
begin
  // ========= PROXIMO ===============================

 // tabela TAB_FROM_VIEW18_VOTO  
  with DMSISRET.Q_TAB_FROM_VIEW18_VOTO do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from TAB_FROM_VIEW18 where mt_analistaalteracao = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analistaalteracao');
    Open;
    DMSISRET.Q_TAB_FROM_VIEW18_VOTO.next;
  end;

 // tabela Qvoto 
  with DMSISRET.Qvoto do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from dbo.tbvoto where mt_analista = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analista');
    Open;
    DMSISRET.Qvoto.next;
  end;
end;
ULTIMO
procedure TFrmMenu.BitBtn2Click(Sender: TObject);
begin
  // ========= ULTIMO ===============================

 // tabela TAB_FROM_VIEW18_VOTO  
  with DMSISRET.Q_TAB_FROM_VIEW18_VOTO do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from TAB_FROM_VIEW18 where mt_analistaalteracao = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analistaalteracao');
    Open;
    DMSISRET.Q_TAB_FROM_VIEW18_VOTO.last;
  end;

 // tabela Qvoto 
  with DMSISRET.Qvoto do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from dbo.tbvoto where mt_analista = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analista');
    Open;
    DMSISRET.Qvoto.last;
  end;
end;

OBS2.:

tabela TAB_FROM_VIEW18_VOTO é onde fica armazenado o campo Placa Veiculo

e a tabela Qvoto fica o resto (Nº Processo e Observação)

att,

Xafam .....

Link para o comentário
Compartilhar em outros sites

  • 0
ele mostra tudo beleza .. aperto avançar ele mostra o registro todo do nº do processo 0002, e quando aperto anterior ele mostra o registro todo do nº do processo 0001 . . . .

agora ... se eu registrar mais um:

Nº Processo : 0003

Placa Veiculo: CCC0003

Observação : nada0003

o botao de proximo , não mostra esse ultimo registro, nem se eu add mais outro ...

so mostra quando eu aperto o botao Ultimo ...

Xafam ... por default ( padrão ) toda vez que voce faz um select em uma tabela e abre esta tabela, o cursor estará sempre no primeiro registro da tabela.

assim sendo, quando voce clica no botão proximo, voce estará sempre abrindo a tabela com o cursor no primeiro registro, e desta maneira o comando next sempre apontará para o segundo registro, e voce nunca conseguirá ver o terceiro registro.

sugestão: Tire a select do botão deixando somente os comandos de navegação

exemplo:

procedure TFrmMenu.BitBtn1Click(Sender: TObject);
begin

    //  Ir para o primeiro registro da tabela
                DMSISRET.Q_TAB_FROM_VIEW18_VOTO.First; 
    DMSISRET.Qvoto.First;

end;

procedure TFrmMenu.BitBtn2Click(Sender: TObject);
begin

    //  Ir para o primeiro o proximo registro da tabela
                DMSISRET.Q_TAB_FROM_VIEW18_VOTO.Next; 
    DMSISRET.Qvoto.Next;

end;

procedure TFrmMenu.BitBtn3Click(Sender: TObject);
begin

    //  Voltar para o primeiro o registro anterior da tabela
                DMSISRET.Q_TAB_FROM_VIEW18_VOTO.Prior; 
    DMSISRET.Qvoto.Prior;

end;

procedure TFrmMenu.BitBtn4Click(Sender: TObject);
begin

    //  Ir para o ultimo registro da tabela
                DMSISRET.Q_TAB_FROM_VIEW18_VOTO.last;  
    DMSISRET.Qvoto.Last;

end;
A select voce pode colocar no evento OnExit do Edit ou em outro lugar... o importante é não colocar os comandos de navegação de registros junto com a abertura da tabela.
procedure TFrmMenu.Edit1Exit(Sender: TObject);
begin

// tabela TAB_FROM_VIEW18_VOTO  
  with DMSISRET.Q_TAB_FROM_VIEW18_VOTO do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from TAB_FROM_VIEW18 where mt_analistaalteracao = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analistaalteracao');
    Open;
    

// tabela Qvoto 
  with DMSISRET.Qvoto do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from dbo.tbvoto where mt_analista = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analista');
    Open;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas ..

A select voce pode colocar no evento OnExit do Edit ou em outro lugar... o importante é não colocar os comandos de navegação de registros junto com a abertura da tabela.

procedure TFrmMenu.Edit1Exit(Sender: TObject);
begin

// tabela TAB_FROM_VIEW18_VOTO  
  with DMSISRET.Q_TAB_FROM_VIEW18_VOTO do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from TAB_FROM_VIEW18 where mt_analistaalteracao = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analistaalteracao');
    Open;
    

// tabela Qvoto 
  with DMSISRET.Qvoto do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from dbo.tbvoto where mt_analista = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analista');
    Open;
end;

1. eu vou ter q colocar esse codigo em todos os meus DBEdits ??? (eu fiz isso, mas nun tem um jeito mas pequeno/simples_igual_esse de fazer não??

2. como na minha aplicação tem campos de duas tabelas ..

então (obvio que) eu separei o codigo ai de cima ... nos campos respectivos as suas tabelas ...

3. funcionou ... agora eu vejo até o ultimo registro ..... mas pra variar ... surgiu outro erro ... agora .. quando eu vou alterar o registro .. acontece o seguinte:

interface do programa

_____________________

|Nº Processo: ................. |

|____________________|

|Placa Veiculo: ................ |

|____________________|

|Observação*: ................ |

|____________________|

| |< < > >| + - /\ S C F |

|____________________|

o programa está me mostrando o 1º registro

Nº Processo : 0001

Placa Veiculo: AAA0001

Observação : nada0001

clico no bota Alterar (/\) ... vou no campo Nº Processo, e altero para 0011 ... quando vou para o outro campo .. ele volta a ser o que era antes .. volta para 0001 ...

e se eu for alterar o 2º registro

Nº Processo : 0002

Placa Veiculo: BBB0002

Observação : nada0002

quando altero o Nº Processo para 0022 .. e vou para o outro campo, ai , ele alem de ele não ficar com a alteração que eu fiz .. quando vou para o proximo campo (Placa Veiculo) .. ele vai para o 1º Registro

valeu a ajuda ..

xafam .......................................

Link para o comentário
Compartilhar em outros sites

  • 0

Xafam .. procure seguir sempre uma sequencia lógica para implementar o código

1 - use botões de ação, para incluir, alterar, excluir, ver/imprimir, salvar e cancelar ( Registros )

2 - use botões de navegação, para poder navegar entre os registros da tabela ( primeiro, anterior, próximo, ultimo )

No botão incluir, voce abre a sua tabela e faz o ponteiro ir para o ultimo registro.

exemplo

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
   // BOTAO INCLUIR

// tabela TAB_FROM_VIEW18_VOTO
  with DMSISRET.Q_TAB_FROM_VIEW18_VOTO do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from TAB_FROM_VIEW18 where mt_analistaalteracao = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analistaalteracao');
    Open;
  end;

// tabela Qvoto
  with DMSISRET.Qvoto do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from dbo.tbvoto where mt_analista = ' + FrmSenha.Edit1.Text + ' ORDER BY mt_analista');
    Open;
  end;

TAB_FROM_VIEW18.Last;   // ir para o ultimo registro
TAB_FROM_VIEW18.Append;  // adicionar novo registro
TAB_FROM_VIEW18.Edit;  // editar o registro

dbo.tbvoto.Last; 
dbo.tbvoto.Apend;
dbo.tbvoto.Edit

end;
No botão Alterar, voce deve fazer uma tela para pesquisar e selecionar um registro que deverá ser alterado
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
   // BOTAO ALTERAR

   // Montar rotina para pesquisar e selecionar o registro para alteração


end;
No botão Excluir, voce deve fazer uma tela para pesquisar e selecionar um registro que deverá ser excluído
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
   // BOTAO EXCLUIR

   // Montar rotina para pesquisar e selecionar o registro para exclusão

end;
No botão Ver/imprimir, voce deve colocar os comandos para dar um preview no relatório ou imprimir
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
   // BOTAO VER/IMPRIMIR

   // Montar rotina para visualizar o relatório ou imprimi-lo

end;
No botão Salvar ou OK , voce deve colocar os comandos para salvar o registro incluido ou modificado
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
   // BOTAO SALVAR

   TAB_FROM_VIEW18.Post;
   dbo.tbvoto. Post;

end;
No botão Cancelar , voce deve colocar os comandos para cancelar o registro incluido ou modificado
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
   // BOTAO CANCELAR

   TAB_FROM_VIEW18.Cancel;
   dbo.tbvoto.Cancel;

end;
Nos botões de navegação ( DBNavigator ) voce coloca o codigo O DBNavigator deve ser linkado através da propriedade DataSource da sua tabela
procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
   if button = nbFirst then
      begin
      //  Ir para o primeiro registro da tabela
          DMSISRET.Q_TAB_FROM_VIEW18_VOTO.First;
          DMSISRET.Qvoto.First;
      end;
   if button = nbPrior then
      begin
      // Voltar para o primeiro o registro anterior da tabela
         DMSISRET.Q_TAB_FROM_VIEW18_VOTO.Prior;
         DMSISRET.Qvoto.Prior;
      end;
   if button = nbNext then
      begin
      // Ir para o primeiro o proximo registro da tabela
         DMSISRET.Q_TAB_FROM_VIEW18_VOTO.Next;
         DMSISRET.Qvoto.Next;
      end;
   if button = nbLast then
      begin
      // Ir para o ultimo registro da tabela
         DMSISRET.Q_TAB_FROM_VIEW18_VOTO.last;
         DMSISRET.Qvoto.Last;
      end;
end;

OBS: Procure ler mais sobre o delphi ... veja tambem na seção de Tutoriais e Dicas de delphi no forum

Este exemplo servirá para voce programar de maneira correta o seu código... mas quem define a lógica é voce.

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...