funçao p/ livro de registro...
Bom Dia!
Amigos!
Em uma atualização no meu sistema de escola, para imprimir o certificado do ensino fundamental, preciso da seguinte função:
Temos o livro de registro nº 1, que a cada novo número gerado seqüencialmente (que quer dizer certificado impresso) , gere outro número também seqüencialmente(que quer dizer folha do livro) a cada 78 (certificados impressos), porque cada folha do livro de registro cabe 78 nomes, o livro tem 100 folhas e ao chegar na folha nº 100 no final da contagem dos 78 seja solicitado o livro nº 2.
A cada impressão de certificado, estes resultados ou cálculos desta função ficará armazenado em um banco de dados interbase 6
Tenho os seguintes campos:
LIVRO_NUMERO {número do livro ex: Livro Nº 1}
FOLHA_NUMERO {folha do livro ex: Folha Nº 1}
REGISTRO_NUMERO {número do registro ex: (primeira linha) Nº 1 - Princesa Isabel}
TOTAL_FOLHAS_LIVRO{quantidade de folhas do livro ex: 100 folhas}
TOTAL_REG_FOLHA {quantidade de registros por folha ex: 78 linhas por folha}
Espero ter sido um pouco claro, e que alguém possa mim ajudar...
Um abraço!
r@mos
Amigos!
Em uma atualização no meu sistema de escola, para imprimir o certificado do ensino fundamental, preciso da seguinte função:
Temos o livro de registro nº 1, que a cada novo número gerado seqüencialmente (que quer dizer certificado impresso) , gere outro número também seqüencialmente(que quer dizer folha do livro) a cada 78 (certificados impressos), porque cada folha do livro de registro cabe 78 nomes, o livro tem 100 folhas e ao chegar na folha nº 100 no final da contagem dos 78 seja solicitado o livro nº 2.
A cada impressão de certificado, estes resultados ou cálculos desta função ficará armazenado em um banco de dados interbase 6
Tenho os seguintes campos:
LIVRO_NUMERO {número do livro ex: Livro Nº 1}
FOLHA_NUMERO {folha do livro ex: Folha Nº 1}
REGISTRO_NUMERO {número do registro ex: (primeira linha) Nº 1 - Princesa Isabel}
TOTAL_FOLHAS_LIVRO{quantidade de folhas do livro ex: 100 folhas}
TOTAL_REG_FOLHA {quantidade de registros por folha ex: 78 linhas por folha}
Espero ter sido um pouco claro, e que alguém possa mim ajudar...
Um abraço!
r@mos
Erivando
Curtidas 0
Respostas
Fknyght
21/02/2006
Qual o gerador de relatorios que vc esta usando.
Fortes Report
Quick Report
ETC ETC ETC....
Fortes Report
Quick Report
ETC ETC ETC....
GOSTEI 0
Erivando
21/02/2006
Qual o gerador de relatorios que vc esta usando.
Fortes Report
Quick Report
ETC ETC ETC....
Estou usando o Quick Report , e eu estou querendo estes calculos para manter salvos em banco de dados e imprimir o certificado usando dados do cadastro do aluno, depois baseado nestes dados irei desenvolver a impressão das folhas do livro, é uma livro com uma abertura e um encerramento no final de cada livro e o numero sempre dando sequencia, acho que vcs sabe como que funciona estes livros numerados, a numeração é bem parecida com o livro de inventário de estoque.
GOSTEI 0
Fknyght
21/02/2006
Olha so, no componente do TQuickRep tem tres eventos que vc pode usar.
São eles :
BeforePrint -> Antes de Imprimir
AfterPrint -> Depois de Imprimir
StartPage -> Quando o quick report starta uma nova pagina
No beforeprint vc vai usar para verificar qual a ultima pagina impressa/livro. Dai se a ultima pagina for 99, a 100 deve ser o termo de encerramento. Tipo Voce pode montar um outro relatorio a parte para so imprimir o termo de abertura e encerramento e fazer sua chamada nele.
Tenta ai. Qualquer coisa so falar
São eles :
BeforePrint -> Antes de Imprimir
AfterPrint -> Depois de Imprimir
StartPage -> Quando o quick report starta uma nova pagina
No beforeprint vc vai usar para verificar qual a ultima pagina impressa/livro. Dai se a ultima pagina for 99, a 100 deve ser o termo de encerramento. Tipo Voce pode montar um outro relatorio a parte para so imprimir o termo de abertura e encerramento e fazer sua chamada nele.
Var PaginasImpressas : Integer; procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin PaginasImpressas := 0; // zerar as pagina impressas uPaginaImpressa := PegaUltimaPaginaImpressa; If uPaginaImpressa = 99 then Begin ImprimirTermoDeEncerramento; ImprimirTermoDeAbertura; end; end;
procedure TForm1.QuickRep1StartPage(Sender: TCustomQuickRep); Begin Inc( PaginasImpressas ); End;
procedure TForm1.QuickRep1AfterPrint(Sender: TObject);
begin
{ Aqui voce soma as paginas impressas a qtde ja impressas no banco de dados }
SUATABELA.FIELDSVALUES[´CAMPOPAGINA´] := SUATABELA.FIELDSVALUES[´CAMPOPAGINA´] + PaginasImpressas;
IF SUATABELA.FIELDSVALUES[´CAMPOPAGINA´] >= 100 THEN
Begin
ImprimirTermoDeEncerramento;
SUATABELA.FIELDSVALUES[´CAMPOPAGINA´] := SUATABELA.FIELDSVALUES[´CAMPOPAGINA´] - 100;
ImprimirTermoDeAbertura;
SUATABELA.FIELDSVALUES[´CAMPOLIVRO´] := SUATABELA.FIELDSVALUES[´CAMPOLIVRO´] + 1;
End;
end;
Tenta ai. Qualquer coisa so falar
GOSTEI 0
Fknyght
21/02/2006
Olha so, no componente do TQuickRep tem tres eventos que vc pode usar.
São eles :
BeforePrint -> Antes de Imprimir
AfterPrint -> Depois de Imprimir
StartPage -> Quando o quick report starta uma nova pagina
No beforeprint vc vai usar para verificar qual a ultima pagina impressa/livro. Dai se a ultima pagina for 99, a 100 deve ser o termo de encerramento. Tipo Voce pode montar um outro relatorio a parte para so imprimir o termo de abertura e encerramento e fazer sua chamada nele.
Tenta ai. Qualquer coisa so falar
São eles :
BeforePrint -> Antes de Imprimir
AfterPrint -> Depois de Imprimir
StartPage -> Quando o quick report starta uma nova pagina
No beforeprint vc vai usar para verificar qual a ultima pagina impressa/livro. Dai se a ultima pagina for 99, a 100 deve ser o termo de encerramento. Tipo Voce pode montar um outro relatorio a parte para so imprimir o termo de abertura e encerramento e fazer sua chamada nele.
Var PaginasImpressas : Integer; procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin PaginasImpressas := 0; // zerar as pagina impressas uPaginaImpressa := PegaUltimaPaginaImpressa; If uPaginaImpressa = 99 then Begin ImprimirTermoDeEncerramento; ImprimirTermoDeAbertura; end; end;
procedure TForm1.QuickRep1StartPage(Sender: TCustomQuickRep); Begin Inc( PaginasImpressas ); End;
procedure TForm1.QuickRep1AfterPrint(Sender: TObject);
begin
{ Aqui voce soma as paginas impressas a qtde ja impressas no banco de dados }
SUATABELA.FIELDSVALUES[´CAMPOPAGINA´] := SUATABELA.FIELDSVALUES[´CAMPOPAGINA´] + PaginasImpressas;
IF SUATABELA.FIELDSVALUES[´CAMPOPAGINA´] >= 100 THEN
Begin
ImprimirTermoDeEncerramento;
SUATABELA.FIELDSVALUES[´CAMPOPAGINA´] := SUATABELA.FIELDSVALUES[´CAMPOPAGINA´] - 100;
ImprimirTermoDeAbertura;
SUATABELA.FIELDSVALUES[´CAMPOLIVRO´] := SUATABELA.FIELDSVALUES[´CAMPOLIVRO´] + 1;
End;
end;
Tenta ai. Qualquer coisa so falar
GOSTEI 0
Aroldo Zanela
21/02/2006
Colega,
Não entendi exatamente sobre a sua dúvida, portanto, vou complementar a resposta do colega com a construção de uma classe TLivro (que deverá ser finalizado por vc) para incrementar número de linhas e páginas.
Classe TLivro:
Adicione um TMemo (mmo1) e TButton (btn1) sobre o formulário. No OnCreate do formulário:
No OnClick do TButton:
Ah! Declare como variável local do form:
Não entendi exatamente sobre a sua dúvida, portanto, vou complementar a resposta do colega com a construção de uma classe TLivro (que deverá ser finalizado por vc) para incrementar número de linhas e páginas.
Classe TLivro:
type TLivro = class(TObject)
FLivroAtual: SmallInt;
FPaginaAtual: SmallInt;
FLinhaAtual: SmallInt;
FPaginasPPLivro: SmallInt;
FLinhasPPagina: SmallInt;
private
procedure SetLivroAtual(const Value: SmallInt);
procedure SetPaginaAtual(const Value: SmallInt);
procedure SetLinhaAtual(const Value: SmallInt);
public
constructor Create;
procedure AdicionaCertificado;
property LivroAtual: SmallInt read FLivroAtual write SetLivroAtual;
property PaginaAtual: SmallInt read FPaginaAtual write SetPaginaAtual;
property LinhaAtual: SmallInt read FLinhaAtual write SetLinhaAtual;
property LinhasPPagina: SmallInt read FLinhasPPagina;
property PaginasPLivro: SmallInt read FPaginasPPLivro;
end;
{ TLivro }
constructor TLivro.Create;
begin
inherited Create;
FPaginasPPLivro := 78;
FLinhasPPagina := 100;
end;
procedure TLivro.AdicionaCertificado;
begin
if FLinhaAtual < FLinhasPPagina then
Inc(FLinhaAtual)
else
begin
FLinhaAtual := 1;
Inc(FPaginaAtual);
end;
end;
procedure TLivro.SetLinhaAtual(const Value: SmallInt);
begin
FLinhaAtual := Value;
if FLinhaAtual>=FLinhasPPagina then
PaginaAtual := PaginaAtual + 1;
end;
procedure TLivro.SetLivroAtual(const Value: SmallInt);
begin
FLivroAtual := Value;
end;
procedure TLivro.SetPaginaAtual(const Value: SmallInt);
begin
FPaginaAtual := Value;
end;
Adicione um TMemo (mmo1) e TButton (btn1) sobre o formulário. No OnCreate do formulário:
begin mmo1.Lines.Clear; Livro := TLivro.Create; Livro.LivroAtual := 1; Livro.PaginaAtual := 1; end;
No OnClick do TButton:
Livro.AdicionaCertificado; mmo1.Lines.Add(IntToStr(Livro.PaginaAtual)+ ´-´+ IntToStr(Livro.LinhaAtual));
Ah! Declare como variável local do form:
Livro: TLivro;
GOSTEI 0
Erivando
21/02/2006
[quote:fdbfd05116=´Aroldo Zanela´]Colega,
Não entendi exatamente sobre a sua dúvida, portanto, vou complementar a resposta do colega com a construção de uma classe TLivro (que deverá ser finalizado por vc) para incrementar número de linhas e páginas.
Classe TLivro:
Adicione um TMemo (mmo1) e TButton (btn1) sobre o formulário. No OnCreate do formulário:
No OnClick do TButton:
Ah! Declare como variável local do form:
[/quote:fdbfd05116]
Amigo, Aroldo Zanela
O que eu estou precisando para o momento é somente o seguinte:
Quero ter armazenado em um banco dados IB os dados nos seguintes campos:
´LIVRO_NUMERO´VARCHAR(3),
´FOLHA_NUMERO´VARCHAR(3),
´REGISTRO_NUMERO´VARCHAR(10),
´TOTAL_FOLHAS_LIVRO´VARCHAR(3),
´TOTAL_REG_FOLHA´VARCHAR(3),
- no LIVRO_NUMERO informo o numero do livro atual (ele vai aumentar a cada livro preenchido)
- no FOLHA_NUMERO vai ser informado a folha atual que se encontra o livro (ele vai aumentar a cada folha preenchida)
- no REGISTRO_NUMERO vai ser informado sempre o ultimo numero gerado
- no TOTAL_FOLHAS_LIVRO informo quantas folhas tem o livro (sempre vai ser 100 ou poderá variar de acordo com o livro)
- no TOTAL_REG_FOLHA informo quantas linhas irá ter por folha (sempre vai ser 78 ou poderá variar de acordo com o livro)
a tal de função que mencionei antes, é para eu apartir destas informações fixas no banco de dados eu poder ir autoincrementando as outras através de um formulario ou no quickRep quando foi feita as impressões.
tipo assim a cada registro que será nova impressão no meu caso será um certificado gera um novo numero(REGISTRO_NUMERO) quando estes atingir sempre 78 registros (TOTAL_REG_FOLHA ) é hora de mudar apara a página 2 (FOLHA_NUMERO) e assim sem repetir o (REGISTRO_NUMERO) até atingir as 100 folhas(TOTAL_FOLHAS_LIVRO) e quando chegar neste final será solicitado um novo livro(LIVRO_NUMERO) mas aí o numero de registro continuará sem repetir(REGISTRO_NUMERO) mas agora zera o numero da folha para 1(FOLHA_NUMERO) e assim sucessivamente....
Deu para vc enteder Colega? estou precisandoi desta força!
Grato!
Não entendi exatamente sobre a sua dúvida, portanto, vou complementar a resposta do colega com a construção de uma classe TLivro (que deverá ser finalizado por vc) para incrementar número de linhas e páginas.
Classe TLivro:
type TLivro = class(TObject)
FLivroAtual: SmallInt;
FPaginaAtual: SmallInt;
FLinhaAtual: SmallInt;
FPaginasPPLivro: SmallInt;
FLinhasPPagina: SmallInt;
private
procedure SetLivroAtual(const Value: SmallInt);
procedure SetPaginaAtual(const Value: SmallInt);
procedure SetLinhaAtual(const Value: SmallInt);
public
constructor Create;
procedure AdicionaCertificado;
property LivroAtual: SmallInt read FLivroAtual write SetLivroAtual;
property PaginaAtual: SmallInt read FPaginaAtual write SetPaginaAtual;
property LinhaAtual: SmallInt read FLinhaAtual write SetLinhaAtual;
property LinhasPPagina: SmallInt read FLinhasPPagina;
property PaginasPLivro: SmallInt read FPaginasPPLivro;
end;
{ TLivro }
constructor TLivro.Create;
begin
inherited Create;
FPaginasPPLivro := 78;
FLinhasPPagina := 100;
end;
procedure TLivro.AdicionaCertificado;
begin
if FLinhaAtual < FLinhasPPagina then
Inc(FLinhaAtual)
else
begin
FLinhaAtual := 1;
Inc(FPaginaAtual);
end;
end;
procedure TLivro.SetLinhaAtual(const Value: SmallInt);
begin
FLinhaAtual := Value;
if FLinhaAtual>=FLinhasPPagina then
PaginaAtual := PaginaAtual + 1;
end;
procedure TLivro.SetLivroAtual(const Value: SmallInt);
begin
FLivroAtual := Value;
end;
procedure TLivro.SetPaginaAtual(const Value: SmallInt);
begin
FPaginaAtual := Value;
end;
Adicione um TMemo (mmo1) e TButton (btn1) sobre o formulário. No OnCreate do formulário:
begin mmo1.Lines.Clear; Livro := TLivro.Create; Livro.LivroAtual := 1; Livro.PaginaAtual := 1; end;
No OnClick do TButton:
Livro.AdicionaCertificado; mmo1.Lines.Add(IntToStr(Livro.PaginaAtual)+ ´-´+ IntToStr(Livro.LinhaAtual));
Ah! Declare como variável local do form:
Livro: TLivro;
Amigo, Aroldo Zanela
O que eu estou precisando para o momento é somente o seguinte:
Quero ter armazenado em um banco dados IB os dados nos seguintes campos:
´LIVRO_NUMERO´VARCHAR(3),
´FOLHA_NUMERO´VARCHAR(3),
´REGISTRO_NUMERO´VARCHAR(10),
´TOTAL_FOLHAS_LIVRO´VARCHAR(3),
´TOTAL_REG_FOLHA´VARCHAR(3),
- no LIVRO_NUMERO informo o numero do livro atual (ele vai aumentar a cada livro preenchido)
- no FOLHA_NUMERO vai ser informado a folha atual que se encontra o livro (ele vai aumentar a cada folha preenchida)
- no REGISTRO_NUMERO vai ser informado sempre o ultimo numero gerado
- no TOTAL_FOLHAS_LIVRO informo quantas folhas tem o livro (sempre vai ser 100 ou poderá variar de acordo com o livro)
- no TOTAL_REG_FOLHA informo quantas linhas irá ter por folha (sempre vai ser 78 ou poderá variar de acordo com o livro)
a tal de função que mencionei antes, é para eu apartir destas informações fixas no banco de dados eu poder ir autoincrementando as outras através de um formulario ou no quickRep quando foi feita as impressões.
tipo assim a cada registro que será nova impressão no meu caso será um certificado gera um novo numero(REGISTRO_NUMERO) quando estes atingir sempre 78 registros (TOTAL_REG_FOLHA ) é hora de mudar apara a página 2 (FOLHA_NUMERO) e assim sem repetir o (REGISTRO_NUMERO) até atingir as 100 folhas(TOTAL_FOLHAS_LIVRO) e quando chegar neste final será solicitado um novo livro(LIVRO_NUMERO) mas aí o numero de registro continuará sem repetir(REGISTRO_NUMERO) mas agora zera o numero da folha para 1(FOLHA_NUMERO) e assim sucessivamente....
Deu para vc enteder Colega? estou precisandoi desta força!
Grato!
GOSTEI 0