|
Usuários |
|
50 Usuários Online
|
|
[Artigos]
Passo a Passo de como gerar parcelas usando DBExpress com ClientDataSet |
Publicado por agnaldosouza : Sexta, Novembro 19, 2004 - 03:15 GMT-3 (12227 leituras)
comentar Enviar para um amigo Versão para impressão
|
Passo a Passo de como gerar parcelas usando DBExpress com ClientDataSet.
Para fazer esse exercício você precisará de:
2 edits da palheta Standard
1 DateTimePicker da palheta Win32
1 DBGRig para ver os dados eu uso particularmente os componentes da RXLib
seria
1 edit da palheta standard
1 CurrencyEdit da palheta RXControls
1 DateEdit1 da palheta RXControls
1 DBGrid paraver os dados
mas nesse exemplo usarei os primeiros, pois muita gente não tem RX instalado ou não gostam de usar outros componentes que não são nativos vamos lá
usando o interbase
criaremos um banco com nome de parcelas.gdb
nesse banco crie uma tabela que chamei de parcela com os respectivos valores
CREATE TABLE "PARCELA"
(
"VALOR" DECIMAL(10, 2),
"DATA" DATE,
"PARC" INTEGER
);
ok feito isso vamos ao delphi
coloque no formulário
os 2 edits com os nomes de
EdtValor e EdParcela
em o DateTimePicker com o nome de EdtData
conectando ao banco
Usaremos a palheta DBExpress
coloque um SQLConnection e conect no banco de dados fique atento para o dialet ele vem por defaut 1 coloque 3 conect com o banco
coloque um SQLDataSet1 na propriedade SQLConnection coloque SQLConnection1 para linkar o SQLDataSet1 com o banco de dados.
A propriedade CommandText ( coloque select * from PARCELA)
um DataSetProvider1 com a propriedade DataSet ligada ao SQLDataSet1 coloque agora um ClientDataSet1 propriedade provaidername ligada ao DataSetProvider1 e finalmente um DataSource1
ligado ao ClientDataSet1 e o DBGrid1 com a propriedade DataSourse ligada ao DataSource1
feito isso vamos lá
coloque também SQLDataSet2,DataSetProvider2,
ClientDataSet2 e repita o procedimento anterior só que no CommandText do SQLDataSet2 coloque SELECT COUNT(PARC) FROM PARCELA
No Evento onClick do botão incluir coloque
procedure TForm1.Btn_IncluirClick(Sender: TObject);
var
i: Byte;
begin
//Abro o Banco
ClientDataSet1.Open;
//Chamo um procedimento para verificar se tem prestação pendente
verificaparcela;
// Minha variável no caso i inicialmente é 0
i:=0;
// minha variável recebe 1 do numero de parcelas no caso o digitado dentro de edParcela.Text
for i := 1 to StrToInt(edParcela.Text) do
begin
// verifico o numero é menor do que o da variavel
if ClientDataSet1.RecordCount < i then
// se for insiro
ClientDataSet1.Insert
else
//senao edito
ClientDataSet1.Edit;
//PARC vai receber o numero de parcelas que eu digitei
ClientDataSet1.FieldByName('PARC').Value := i;
//VALOR vai receber o valor digitado dividido pelo numero de parcelas
ClientDataSet1.FieldByName('VALOR').Value :=(StrToFloat(edtValor.Text)/(StrToInt(edParcela.Text)));
//DATA recebe a data replicando conforme o numero das parcelas
ClientDataSet1.FieldByName('DATA').Value:= incMonth( Date, i - 1);
//Gravo no banco
ClientDataSet1.Post;
//vou para o próximo
Next;
end;
//Dou um updade para gravar esse registro no banco lembre-se que quando
//trabalho com clientDataSet eu trabalho em cachê é necessário dar um
//ApplyUpdates(0) para gravar no banco o (0) significa o numero de erros
//claro com certeza isso só vai acontecer se não tiver nenhum erro ok
ClientDataSet1.ApplyUpdates(0);
//Mando uma mensagem de texto
showmessage('Arquivo incuido com sucesso');
end;
em private declare o procedimento de verificacao
procedure verificaparcela; Ctrl+Shift+C para criar o procedimento
procedure TForm1.verificaparcela;
var
//Crio uma variavel para verificar o resultado
result:string;
begin
//Aqui verifico se a coluna em que esta a parcela esta vazia
if ClientDataSet1.Fields.Fields[2].AsString<>'' then
begin
//Abro o ClientDataset de verificação de contagem dos campos
ClientDataSet2.Open;
begin
//result vai receber a quantidade de parcelas em aberto
result:=ClientDataSet2COUNT.AsString;
//envio uma mesagem para o usuario falando que tem a quantidade que retornar
//em aberto
Showmessage('Você possui '+ result +' parcelas pendentes' + #13
+ 'Nao é possivel efetuar pagamento');
//aborto a operação e fecho o ClientDataSet referente a contagem dos campos
abort;
ClientDataSet2.Close;
end;
end;
end;
Esse é um exemplo simples dai use a imaginação para melhorar e dar mais produtividade na sua execução
Exemplo criado por
Agnaldo de Souza Filho: Analista de Sistemas
|
|
Comentários | |
| | Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos. |
|
|
Edição 112 |
|
|
50 Programas Fontes |
|
|
Produtos |
|
|