Como fazer um contador ?

29/01/2010

9

Boa Noite !!

Estou usando Delphi 2009 + DBX 4 + FB 2.0.

Minha dúvida é o seguinte eu tenho 2 combobox que é preenchido com um Numero Inicial e o outro com Numero Final, a questão é como eu faço para cadastrar automaticamente a sequencia entre eles no banco de dados.

Exemplo:

Combo Inicial = 10
Combo Final = 20

Então preciso que ao confirmar que ele grave os numeros 10,11,12,13,14,15,16,17,18,19,20 no banco de dados.

Alguem pode me ajduar em como faço isto ?

Obrigado.
Responder

Posts

29/01/2010

Alison Bissoli

Boa noite amigo.

cboini é o combo de número inicial.
cbofim é o combo de número final.
abaixo, o código para gerar a string que deverá ser gravada.

procedure TForm2.btnGravarClick(Sender: TObject);
var
  strGravar : string;
  I: Integer;
begin
  if cboini.Text = '' then
  begin
      showmessage('Informe o número inicial');
      exit
  end;
  if cbofim.text = '' then
  begin
      showmessage('Informe o número final');
      exit
  end;
  if StrToInt(cboini.text) > strtoint(cbofim.text) then
  begin
      showmessage('Número inicial não deve ser maior que número final');
      exit;
  end;
  for I := strtoint(cboini.text) to strtoint(cbofim.Text) do
  begin
      if strgravar '' then strgravar := strgravar + ',';
      strgravar := strgravar + inttostr(I);
  end;

  //Grave o valor de strgravar

end;

Espero ter ajudado.


Garoto Desktop - 100% Delphi
http:\\garotodesktop.blogspot.com
Responder
Boa Noite, amigo !!   Obrigado pela resposta,   Esta bem claro o exemplo mas pra min ainda esta confuso como eu vou gravar no database, pq é o seguinte, é um campo do tipo integer que é relacionado com outra tabela.   É uma tabela de planos que o cliente vai ter q selecionar quais são as quatidades de parcelas que aquele produto pode ter.   Ou seja o produto X pode ser feito de 01 até 12x, ao inves de ficar clicando 1 a 1 no cadastrar e gravar eu quero colocar o valor do plano inicial e o plano final e ele gravar direto no db o intervalo destas parcelas, sendo que o campo ID é chave primaria e já é auto incremento.   Desde já agradeço á atenção.   abraços.
Responder
a resposta que o BISSOLI passou está bem completa, mas para ser precisa você precisa passar exatamente o que precisa.

se é para gravar num banco de dados, publique a estrutura das tabelas envolvidas.
Responder
Caro Amigos, Boa Tarde !!   Obrigado pela ajuda, é exatamente isto o que eu preciso, com o exemplo que foi feito estou conseguindo gravar todos os valores em um STRING, mas o que eu preciso é gravar no bancos de dados o VALOR INDIVIDUAL.   TABELA_COMISSAO   ID_TABELACOMISSAO       - INTEGER NOME_BANCO                  - VARCHAR(50) NOME_TABELA                  - VARCHAR(50)   NOME_PRODUTO              - VARCHAR(50) COMISSAO_BANCO          - NUMERIC(4,4) COMISSAO_PROMOTORA - NUMERIC(4,4)     COMISSAO_PLANOS   ID_COMPLANOS          - INTEGER ID_TABELACOMISSAO - INTEGER - FK PLANO                        - INTEGER  
procedure TfrmTabelaComissao.btnCalcularClick(Sender: TObject);
var
  vInicio,vFinal,nContador: Integer;
  Resultado               : String;
begin
  vInicio := StrToInt(dbePlanoINI.Text);
  vFinal  := StrToInt(dbePlanoFIN.Text);
 If dbePlanoINI.Text = EmptyStr then
  begin
      showmessage('Informe o Plano Inicial');
      exit;
  end;
 If dbePlanoFIN.Text = EmptyStr then
  begin
      showmessage('Informe o Plano final');
      exit;
  end;
 If StrToInt(dbePlanoINI.Text) > strtoint(dbePlanoFIN.Text) then
  begin
      showmessage('O Plano Inicial não deve ser maior que Plano Final');
      exit;
  end;
 for nContador := vInicio to vFinal do
    begin
     Resultado := Resultado+IntToStr(nContador);
     Edit1.Text := Resultado;
    end;
end;
  Ja existe o relacionamente entre as tabelas, o que eu preciso é que ao inves de ele gerar um resultado em uma STRING ele atribua de forma automatica na tabela, o campo é autoincremento, então ao inves de 1,2,3,4.....   Eu preciso que ele faça como o exemplo abaixo.   dbePlanoINI = 1 dbePlanoFIN = 3   ID_COMPLANOS          - 1 ID_TABELACOMISSAO - 1 PLANO                        - 1   ID_COMPLANOS          - 2 ID_TABELACOMISSAO - 1 PLANO                        - 2   ID_COMPLANOS          - 3 ID_TABELACOMISSAO - 1 PLANO                        - 3   Obrigado novamente, e abraços a todos que ajudaram.   Domenico.
Responder
Caros Amigos !!! Segue a solução abaixo: procedure TfrmTabelaComissao.btnAtribuirPlanosClick(Sender: TObject);
var
  vInicio,vFinal,nContador: Integer;
  Resultado               : String;
begin
  vInicio := StrToInt(dbePlanoINI.Text);
  vFinal  := StrToInt(dbePlanoFIN.Text);  If dbePlanoINI.Text = EmptyStr then
  begin
      MessageDlg('Informe o Plano Inicial',mtinformation,[mbok],0);
      exit;
  end;  If dbePlanoFIN.Text = EmptyStr then
   begin
      MessageDlg('Informe o Plano Final',mtinformation,[mbok],0);
      exit;
  end;  If StrToInt(dbePlanoINI.Text) > strtoint(dbePlanoFIN.Text) then
  begin
      MessageDlg('O Plano Inicial não deve ser maior que Plano Final',mtinformation,[mbok],0);
      exit;
  end;   for nContador := vInicio to vFinal do
    begin
     DMPrincipal.cdsComissaoPlanos.Insert;
     DMPrincipal.cdsComissaoPlanosPLANOS.AsInteger := nContador;
    end; end;   O meu muito obrigadoooooooooooooooooo !!!   Abraços.
Responder

01/02/2010

Ricardo Araujo

caro amigo aproveitando o codigo de nosso amigo mando.
esta solução esta correta e funciona.

procedure TfrmTabelaComissao.btnAtribuirPlanosClick(Sender: TObject);
var
  vInicio,vFinal,nContador: Integer;
  Resultado               : String;
begin
  vInicio := StrToInt(dbePlanoINI.Text);
  vFinal  := StrToInt(dbePlanoFIN.Text);  If dbePlanoINI.Text = EmptyStr then
  begin
      MessageDlg('Informe o Plano Inicial',mtinformation,[mbok],0);
      exit;
  end;  If dbePlanoFIN.Text = EmptyStr then
   begin
      MessageDlg('Informe o Plano Final',mtinformation,[mbok],0);
      exit;
  end;  If StrToInt(dbePlanoINI.Text) > strtoint(dbePlanoFIN.Text) then
  begin
      MessageDlg('O Plano Inicial não deve ser maior que Plano Final',mtinformation,[mbok],0);
      exit;
  end;   for nContador := vInicio to vFinal do
    begin
     DMPrincipal.cdsComissaoPlanos.Insert;
     DMPrincipal.cdsComissaoPlanosPLANOS.AsInteger := nContador;     DMPrincipal.cdsComissaoPlanos.post;  // só incluir o post
 end; end;

Responder