Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

moises godoi

Consulta BD componente Timmer

Recommended Posts

Olá boa tarde estou precisando fazer um comando com timmer e o query, preciso que 2x por segundo ele faça a verificação no BD do campo dado e leia este campo e grave na variavel consulta, em outro forum me forneceram este codigo, mas nao consigo verificar a variavel consulta para ver se esta recebendo a atualização, o programa não ta lendo os if, nao importa o valor que coloco no BD, estou usando o mysql 5 e esta tudo ok.

 

Tabela criada no Mysql front

 

Database cadpessoas 


sql: 

CREATE TABLE teste ( 
dado varchar(2) 

); 

 

 

 

Codigo do programa

 

 

Código:

unit Unit1; 

interface 

uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, ExtCtrls, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset, 
  ZConnection, StdCtrls; 

type 
  TForm1 = class(TForm) 
    zcon: TZConnection; 
    Query1: TZQuery; 
    Timer1: TTimer; 
    procedure Timer1Timeres(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end; 

var 
  Form1: TForm1; 

implementation 

{$R *.dfm} 


procedure TForm1.Timer1Timeres(Sender: TObject); 
var 
comando : String; 
begin 
    Query1.Close; 
    Query1.Sql.Clear; 
    Query1.Sql.Text := 'Select DADO as consulta from TESTE'; 
    Query1.Open; 

    comando := Query1.FieldByName('consulta').AsString; 

    if comando = '1' then 
    begin 
    messagedlg('Não achou', mtinformation,[mbok],0); 
     end 
     else if comando = '2' then 
     begin 
     showmessage('mensagem simples 3'); 
     end; 
     end; 


end.

segue aqui a propriedades dos componente ativos

 

Imagem Postada

 

 

 

alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

var

comando : String;

begin

Query1.Close;

Query1.Sql.Clear;

Query1.Sql.Add('Select DADO as consulta from TESTE');

Query1.Open;

 

comando := Query1consulta.AsString;

 

if comando = '1' then

messagedlg('Não achou', mtinformation,[mbok],0)

else comando = '2' then

showmessage('mensagem simples 3');

end;

 

eu faria conforme acima, tambem uma dica seria voce depois da seguinte linha no seu codigo

 

comando := Query1consulta.AsString;

 

colocar um

 

showmessage(comando);

 

para ver o que ele esta retornando, pois muito possivelmente esta retornando algo que não tem a ver com o 1 nem com o 2.

 

Valeu!

Anderson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anderson boa tarde é realmente não esta retornando nada esta em branco o showmessage, o timmer esta ok pois ele retorna varias mensagens em branco...

 

 

Com o ztable eu consigo adicionar o fildes Dado normalmente. Entao o banco de dados esta sincronizado. Oque pode ser? alguma propriedade no query nao habilitada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, pois usar o Zeos é muito simples, semelhante aos outros bds que conhecemos. Bom, ja sabemos que o problema agora esta no seu select, tente modifica-lo para ver o que da. Tente fazer de uma forma mais primitiva..

 

Query1.Sql.Add('SELECT dado FROM teste WHERE dado = 1');

 

tente manter as maiusculas e minusculas do mysql da forma que esta no BD. Pode ser que precise usar aspas simples envolvendo o '1'. Teste e veja se funciona. Se funcionar você ja tem um passo de partida para continuar.

 

Qualquer coisa poste novamente.

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao Anderson como é pra fazer?

 

 

procedure TForm1.Timer1Timeres(Sender: TObject);
var
comando : String;
begin
    Query1.Close;
    Query1.Sql.Clear;
     Query1.Sql.Add('SELECT dado FROM teste WHERE dado = 1')


end;

 

era pra adicionar o numero 1 na tabela automaticamente né? não funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade não, esse comando que passei era para consultar a tabela e te retornar um valor. Era isso que voce precisava ou voce precisa de algo para incrementar valores no mysql? Eu não tenho o Zeos agora no meu delphi, não posso fazer um codigo para lhe enviar, mas vou ver se posso amanhã. Voce tem algum valor gravado na tabela mysql? Veja se não esta vazia, por que se estiver vai acontecer isso mesmo que esta acontecendo. Na verdade, acho que não captei corretamente a sua duvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anderson obrigado por responder, bem oque eu preciso é bem simples, em um botao no site ele vai gravar numeros aleatorios por ex 0 e 1 ou outro numero qualquer, este valor ja é gravado no Mysql ou eu mesmo altero manualmente atraves do mysql-front, no campo DADO, eu precisava que o delphi consulta-se o campo Dado com SQL e com o componente Timmer executa-se o comando 2x por segundo para verificar o valor da tabela no BD, e dependendo do valor ele execute os if.

 

Sempre eu deixo o campo DADO com 0 1 ou 2 .

 

 

Na verdade não, esse comando que passei era para consultar a tabela e te retornar um valor. Era isso que voce precisava ou voce precisa de algo para incrementar valores no mysql? Eu não tenho o Zeos agora no meu delphi, não posso fazer um codigo para lhe enviar, mas vou ver se posso amanhã. Voce tem algum valor gravado na tabela mysql? Veja se não esta vazia, por que se estiver vai acontecer isso mesmo que esta acontecendo. Na verdade, acho que não captei corretamente a sua duvida.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.