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

(Resolvido) executar gauge dentro instrução sql


Milton Carlos

Pergunta

Ola bom dia a todos,

Como faço para executar um gauge ou progress dentro de instrução sql e ele vai mostrando o percentual de execução, segue o codigo para alguém implementar.

codigo:

gauge1.Visible:=true;

gauge1.Progress:=10;

gauge1.Repaint;

sx:=zQuery1.FieldByName('DATABASE').AsString;

sy:=zQuery2.FieldByName('TABLES_IN_'+s).AsString;

gauge1.Progress:=30;

gauge1.Repaint;

ZQuery3.Active := false;

ZQuery3.sql.Clear;

ssy := 'SELECT codigo,nome,endereço,e_mail FROM '+sx+'.'+sy+'';

gauge1.Progress:=100;

gauge1.Repaint;

gauge1.progress:=0

gauge1.min:=0

gauge1.max:=zquery.recordcount;

ZQuery3.SQL.Append(ssy,gauge1.Progress:=gauge1.Progress+1); //aqui da erro como faz para implementar

gauge1.Repaint;

gauge1.progress:=0

gauge1.min:=0

ZQuery3.ExecSQL&executa_gauge1; // esta linha não funciona mas tem como fazer a outra aqui e como implementar no execSql

gauge1.max:=100;

gauge1.Progress:=100;

gauge1.Repaint;

ZQuery3.Active := true;

gauge1.Visible:=false;

se alguém tiver forma melhor pode postar junto obrigado.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Alguns exemplos:

COMO ACOMPANHAR A EVOLUÇÃO DE UMA CONSULTA SQL EM TEMPO REAL COM OS COMPONENTES GAUGE E PROGRESSBAR.

Resposta:

BEGIN

while not NOME_DA_QUERY.Eof do

begin

with NOME_DA_QUERY do

begin

close;

sql.clear;

sql.add('select * from NOME_DA_TABELA');

sql.add('where PARAMETERS=:????);

Parameters[0].Value:=????;

open;

END;

NOME_DA_QUERY.Next;

// AQUI COMEÇA A EVOLUÇÃO DA CONSULTA

// SE FOR O COMPONENTE GAUGE

Gauge1.MaxValue:=NOME_DA_QUERY.RecordCount;

Gauge1.Progress:=Gauge1.Progress+1;

// SE FOR O COMPONENTE PROGRESSBAR

progressbar1.Max:=NOME_DA_QUERY.RecordCount;

progressbar1.Position:=ProgressBar1.Position+1;

//SOMENTE PARA PROGRESSBAR, "ESTE LABEL RECEBE A PORCENTAGEM"

label1.Caption:=formatfloat('00',(ProgressBar1.Position+1)*100/NOME_DA_QUERY.RecordCount)+' % ';

end;

END;

Progress Bar / Gauge - Abrindo uma query - SQL

Se quiser usar o Gauge, basta trocar no lugar do Progress Bar

unit Uprincipal;
interface
uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   Db, DBTables, StdCtrls, Buttons, ComCtrls, Grids, DBGrids,BDE,DBITYPES,
   DBIPROCS,DBIERRS;
type
   TForm1 = class(TForm)
   StatusBar1: TStatusBar;
   TProgressBar: TProgressBar;
   TButton: TBitBtn;
   TLabel: TLabel;
   TQuery: TQuery;
   DBGrid1: TDBGrid;
   DataSource1: TDataSource;
   BitBtn1: TBitBtn;
   TQuerySwitchboardID: TIntegerField;
   TQueryItemNumber: TSmallintField;
   TQueryItemText: TStringField;
   TQueryCommand: TSmallintField;
   TQueryArgument: TStringField;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure TButtonClick(Sender: TObject);
   private
   { Private declarations }
   FCBPROGRESSDesc: pCBPROGRESSDesc;
   FProgressCallback: TBDECallback;
   function GetDataCallback(CBInfo: Pointer): CBRType;
   public
   { Public declarations }
   end;
var
Form1: TForm1;

implementation
{$R *.DFM}

function TForm1.GetDataCallback(CBInfo: Pointer): CBRType;
begin
   Result := cbrCONTINUE;
   with pCBPROGRESSDesc(CBInfo)^ do
      begin
         if iPercentDone < 0 then
            begin
               TLabel.Caption := szMsg;
               TLabel.Refresh;
               TProgressBar.StepIt; {Apenas para ficar rodando o gauge}
            end
      else
         TProgressBar.Position := iPercentDone;
      end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   FCBPROGRESSDesc := AllocMem(SizeOf(CBPROGRESSDesc));
   FProgressCallback := TBDECallback.Create(Self, TQuery.Handle,
   cbGENPROGRESS, FCBPROGRESSDesc, SizeOf(CBPROGRESSDesc),
   GetDataCallback, True);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   FProgressCallback.Free;
   FreeMem(FCBPROGRESSDesc, SizeOf(CBPROGRESSDesc));
end;

procedure TForm1.TButtonClick(Sender: TObject);
begin
   FCBPROGRESSDesc := AllocMem(SizeOf(CBPROGRESSDesc));
   FProgressCallback := TBDECallback.Create(Self, TQuery.Handle,
   cbGENPROGRESS, FCBPROGRESSDesc, SizeOf(CBPROGRESSDesc),
   GetDataCallback, True);
   TQuery.Active := True;
end;

end.

Outro exemplo:

http://forum.devmedia.com.br/viewtopic.php...27d096e17898818

Material Útil

http://www.rocketdownload.com/software/sql...pair-tools.html

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Alguns exemplos:

COMO ACOMPANHAR A EVOLUÇÃO DE UMA CONSULTA SQL EM TEMPO REAL COM OS COMPONENTES GAUGE E PROGRESSBAR.

Resposta:

BEGIN

while not NOME_DA_QUERY.Eof do

begin

with NOME_DA_QUERY do

begin

close;

sql.clear;

sql.add('select * from NOME_DA_TABELA');

sql.add('where PARAMETERS=:????);

Parameters[0].Value:=????;

open;

END;

NOME_DA_QUERY.Next;

// AQUI COMEÇA A EVOLUÇÃO DA CONSULTA

// SE FOR O COMPONENTE GAUGE

Gauge1.MaxValue:=NOME_DA_QUERY.RecordCount;

Gauge1.Progress:=Gauge1.Progress+1;

// SE FOR O COMPONENTE PROGRESSBAR

progressbar1.Max:=NOME_DA_QUERY.RecordCount;

progressbar1.Position:=ProgressBar1.Position+1;

//SOMENTE PARA PROGRESSBAR, "ESTE LABEL RECEBE A PORCENTAGEM"

label1.Caption:=formatfloat('00',(ProgressBar1.Position+1)*100/NOME_DA_QUERY.RecordCount)+' % ';

end;

END;

Progress Bar / Gauge - Abrindo uma query - SQL

Se quiser usar o Gauge, basta trocar no lugar do Progress Bar

unit Uprincipal;
interface
uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   Db, DBTables, StdCtrls, Buttons, ComCtrls, Grids, DBGrids,BDE,DBITYPES,
   DBIPROCS,DBIERRS;
type
   TForm1 = class(TForm)
   StatusBar1: TStatusBar;
   TProgressBar: TProgressBar;
   TButton: TBitBtn;
   TLabel: TLabel;
   TQuery: TQuery;
   DBGrid1: TDBGrid;
   DataSource1: TDataSource;
   BitBtn1: TBitBtn;
   TQuerySwitchboardID: TIntegerField;
   TQueryItemNumber: TSmallintField;
   TQueryItemText: TStringField;
   TQueryCommand: TSmallintField;
   TQueryArgument: TStringField;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure TButtonClick(Sender: TObject);
   private
   { Private declarations }
   FCBPROGRESSDesc: pCBPROGRESSDesc;
   FProgressCallback: TBDECallback;
   function GetDataCallback(CBInfo: Pointer): CBRType;
   public
   { Public declarations }
   end;
var
Form1: TForm1;

implementation
{$R *.DFM}

function TForm1.GetDataCallback(CBInfo: Pointer): CBRType;
begin
   Result := cbrCONTINUE;
   with pCBPROGRESSDesc(CBInfo)^ do
      begin
         if iPercentDone < 0 then
            begin
               TLabel.Caption := szMsg;
               TLabel.Refresh;
               TProgressBar.StepIt; {Apenas para ficar rodando o gauge}
            end
      else
         TProgressBar.Position := iPercentDone;
      end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   FCBPROGRESSDesc := AllocMem(SizeOf(CBPROGRESSDesc));
   FProgressCallback := TBDECallback.Create(Self, TQuery.Handle,
   cbGENPROGRESS, FCBPROGRESSDesc, SizeOf(CBPROGRESSDesc),
   GetDataCallback, True);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   FProgressCallback.Free;
   FreeMem(FCBPROGRESSDesc, SizeOf(CBPROGRESSDesc));
end;

procedure TForm1.TButtonClick(Sender: TObject);
begin
   FCBPROGRESSDesc := AllocMem(SizeOf(CBPROGRESSDesc));
   FProgressCallback := TBDECallback.Create(Self, TQuery.Handle,
   cbGENPROGRESS, FCBPROGRESSDesc, SizeOf(CBPROGRESSDesc),
   GetDataCallback, True);
   TQuery.Active := True;
end;

end.

Outro exemplo:

http://forum.devmedia.com.br/viewtopic.php...27d096e17898818

Material Útil

http://www.rocketdownload.com/software/sql...pair-tools.html

abraço

obrigado +1maX, é impressão minha ou você começou gritando, ou aqui neste forum escrever em maiusculo é somente forma de destacar os texto... mas de qualquer forma abraços a todos vou fazer meus testes habituais e chegar no final com a peixada...

Link para o comentário
Compartilhar em outros sites

  • 0
é impressão minha ou você começou gritando, ou aqui neste forum escrever em maiusculo é somente forma de destacar os texto... mas de qualquer forma abraços a todos vou fazer meus testes habituais e chegar no final com a peixada...

As regras pedem para não usar todo o texto em caixa alta... e quando utilizo é para destacar a visualização para aqueles quem passam correndo pelos posts ... as vezes estão procurando por alguma coisa parecida e o destaque faz com que fixe a atençao ... somente marketing ... rs

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
é impressão minha ou você começou gritando, ou aqui neste forum escrever em maiusculo é somente forma de destacar os texto... mas de qualquer forma abraços a todos vou fazer meus testes habituais e chegar no final com a peixada...

As regras pedem para não usar todo o texto em caixa alta... e quando utilizo é para destacar a visualização para aqueles quem passam correndo pelos posts ... as vezes estão procurando por alguma coisa parecida e o destaque faz com que fixe a atençao ... somente marketing ... rs

abraço

ok Jhonas +1maX pode fechar este tópico também resolvido... obrigado novamente e abrços a todosempreusoumilton carlo$

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...