Ir para conteúdo

POWERED BY:

Arquivado

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

Geelherme

[Resolvido] ZQuery

Recommended Posts

olá

eu tenho um botao que gostaria de atualizar a query SQL do Zquery cada vez que fosse pressionado e atualizasse os dados do datasource.

o meu código é:

 


var i: integer;
procedure TForm3.Button1Click(Sender: TObject);
begin

  i := StrToInt(Label1.Caption);           //Esse espaço eu uso pra controlar e
  Label1.Caption := IntToStr((i + 30));    // verificar o valor de I.

a := IntToStr(i - 30);
b := IntToStr(i);
ZQuery1.SQL := 'SELECT * FROM LIGACOES LIMIT ' + a + ',' + b;
end;

mas da erro na linha do ZQuery.SQL:

Incompatible type: 'TString' and 'string'

 

alguem sabe o que dizer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim...

 

procedure TForm3.Button1Click(Sender: TObject);
var i: integer;
begin

  i := StrToInt(Label1.Caption);           //Esse espaço eu uso pra controlar e
  Label1.Caption := IntToStr((i + 30));    // verificar o valor de I.

a := IntToStr(i - 30);
b := IntToStr(i);
ZQuery1.SQL := 'SELECT * FROM LIGACOES LIMIT '''+a+''','''+b+''';
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

então faça assim...

 

ja tentou ao contrario???

a := StrToInt(i - 30);
b := StrToInt(i);

Se o problema persistir, pode fikar sussegado q nos vamos dar um jeito...

 

Att. Vitor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não trabalhei com o componente ZQuery, mas se ele for como as TQuerys da vida, não dá para simplesmente atribuir a propriedade SQL o valor.... numa TQuery, para montar uma consulta dinâmica, o ciclo seria este:

 

Query.Close;
Query.Sql.Clear;  //Limpa a query anterior, deixando a TQuery apta a receber a nova query sem risco de erros por lixo.
Query.Sql.Add('Select campoA, campoB from tabela where campoA like ' + QuotedStr('%' + edit1.text + '%'));
try
   Query.Open;
except
   showmessage('Ops, deu um erro na consulta...');
end;

Se o Zquery seguir a mesma lógica, você terá que montar algo assim:

 

ZQuery1.Close;
ZQuery1.SQL .Clear; 
 ZQuery1.SQL.Add('SELECT * FROM LIGACOES LIMIT ' +a + ',' +B);
try
    ZQuery1.Open;
except
   showmessage('Ops, deu um erro na consulta...');
end;

Dê uma checada se o problema não é este.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos.... agradeço pela ajuda, já consegui caminhar um pouquinho... como o Chrnos disse, a maneira correta de se fazer é usando o método ADD... fiz e ele já compila, agora o meu erro é na consulta sql mesmo. Abaixo vai o meu código:

 

i := StrToInt(Label1.Caption);
  Label1.Caption := IntToStr((i + 30));
  a := IntToStr(i);
//  b := IntToStr(i);
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('SELECT * FROM LIGACOES LIMIT '+ a + ' ,30');
  try
      ZQuery1.Open;
  except
     showmessage('Ops, deu um erro na consulta...'+ a);
  end;

quero fazer um botão que exiba os registros num grid e alterne entre eles em grupo de 30... tipo o botao de avançar, voltar, mas só que de 30 em 30....

sempre dá erro na consulta... a variavél "a" é uma string e eu quero usar o seu valor como um inteiro... pode ser esse o erro, mas como solucionar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual erro esta dando?

 

Cara eu fiz um teste aqui, fazendo exatamente como você esta fazendo, e deu certo.

A unica difereça do codigo que utilizei e o seu, é que tirei esse Label1....Você falou que utiliza para controlar o valor de I certo? entao quer dizer q no botão de avançar você soma e no de voltar você subtrai 30.

Para isso o valor inicial do Label1 tem que ser ZERO, porque se for em branco vai dar erro. Mas informe o erro que fica mais facil descobrir como solucionar!!!

 

Abraço!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

EDIT:

Consegui resolver, bastou reconfigurar o ZConnection e ele passou a funcionar de boa... agradeço muito pela ajuda de vocês três... obrigado mesmo

 

=)

 

 

 

 

 

___________________________________________________________________

Entao... o erro que dá é o do except: Ops, deu um erro na consulta... no seu caso, como você tirou o label1? nao entendi.. ele exibiu os registros limitando por apenas 30?

 

abçs

 

i := 0;
  Label1.Caption := IntToStr((i));
  a := IntToStr(i);
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('SELECT * FROM LIGACOES LIMIT '+ a + ' ,30');

  try
      ZQuery1.Open;
      i := i + 30;
  except
     showmessage('Ops, deu um erro na consulta...'+ a);
  end;[u][/u]

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso mesmo, deu certo, fiz da seguinte forma (obs.: utilizei uma tabela minha aqui)

 

procedure TfrmPrincipal.BitBtn3Click(Sender: TObject);
var
  i : integer;
  a : string;
begin
  i := 10; //Aqui é como se o I recebesse o valor do label
  a := IntToStr(i);
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('SELECT * FROM BANCOS LIMIT '+ a + ' ,30'); //substitui a sua tabela LIGACOES pela minha que se chama BANCOS
  try
      ZQuery1.Open;
  except
     showmessage('Ops, deu um erro na consulta...'+ a);
  end;
end;

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.