Como fazer um contador ?
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.
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.
Osvaldo Domênico
Curtidas 0
Respostas
Alison Bissoli
29/01/2010
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
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
GOSTEI 0
Osvaldo Domênico
29/01/2010
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.
GOSTEI 0
Emerson Nascimento
29/01/2010
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.
se é para gravar num banco de dados, publique a estrutura das tabelas envolvidas.
GOSTEI 0
Osvaldo Domênico
29/01/2010
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
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.
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;
GOSTEI 0
Osvaldo Domênico
29/01/2010
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.
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.
GOSTEI 0
Ricardo Araujo
29/01/2010
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;
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;
GOSTEI 0