Eu queria que no meu programa, na hora que fazesse a consulta pelo pesquisa do cadastro dos alunos e que estivesse alguma parcela em atraso, iria aparecer aparecer o nome e codigo do aluno(a) em marrom, ai fiz os seguintes procedimentos:
Banco de dados : Firebird
Acesso ao banco atraves de IbDatabase, IbTransaction e IbQuery
No cadastro de pesquisa, no DbGrid (DbgPes) onde mostra os dados da busca, no evento OnDrawColumnCell eu coloquei os seguintes dados para mostrar em marrom:
if ( ( DtmIza.QryIza.FieldByName('Vencimento').AsDateTime < Date() ) and
( DtmIza.QryIza.FieldByName('Vencimento').AsString <> '' ) ) then
DbgPes.Canvas.Font.Color:= clMaroon;
DbgPes.DefaultDrawDataCell(Rect, DbgPes.Columns[DataCol].Field, State);
e no cadastro onde eu faço a pesquisa do aluno(a) eu coloquei os seguintes dados:
procedure Tfrmalunos.spbpesClick(Sender: TObject);
begin
with vcpo do
begin
clear;
add ('A.Nome');
add ('A.Codigo');
add ('A.Cpf');
add ('A.Processo');
Add ('A.CnhEntregue');
Add ('(SELECT L.Vencimento FROM Lancamento L WHERE L.Aluno=A.Codigo AND EXTRACT( MONTH FROM L.Vencimento ) <= EXTRACT( MONTH FROM CURRENT_DATE ) ) AS Vencimento' );
end;
with vvlr do
begin
clear;
add ('Nome');
add ('Codigo');
add ('Cpf');
add ('Processo');
end;
with TFrmPesAluno.create (application) do
begin
try
tabela := 'alunos A';
camporetorno := 'codigo';
showmodal;
finally
free;
end;
end;
if (retorno<> '') then
begin
inherited;
LeRegistro();
O LeRegistro é um procedimento que eu faço para a pesquisa, mas o importante:
Add ('(SELECT L.Vencimento FROM Lancamento L WHERE L.Aluno=A.Codigo AND EXTRACT( MONTH FROM L.Vencimento ) <= EXTRACT( MONTH FROM CURRENT_DATE ) ) AS Vencimento' );
pois é aqui que ele busca no cadastro de lancamento se o vencimento é menos ou igual do decorrente dia, ai ele vai mostrar i nome em vermelho!.
Mas sei qual é o erro e tenho duas saidas, mas tentei as duas e não consegui nada!
Esse erro: Erro "multiple rows in singleton" está aparecendo por causa que nos lancamentos ele lança assim, pega a quantidade de parcelas a ser gereda e monta todas com seus respectivos valors, e tipo se ele lanço outra parcela de outro valor, ele busca o Historico do começo, tipo se ele lancei duas parcelas ele fica assim: 1ªParcela, 2ªParcela, depois ele lanço mais uma parcela ai ele fica assim:1ªParcela, então quer dizer ele faz a busca e monta como 3ªParcela, por isso que dá esse erro.
Então o primeiro em questão, como eu mudaria isso para dar esse erro nessa pesquisa aqui, pois eu vou ter que mudar as formas de historicos, mas eu já estou com o programa rodando e não tem como mudar todos os historicos, pois já são muitos, então como burlo isso para parar de dar erro.
Pergunta
robinhocne
Bom vou explicar do inicio.
Eu queria que no meu programa, na hora que fazesse a consulta pelo pesquisa do cadastro dos alunos e que estivesse alguma parcela em atraso, iria aparecer aparecer o nome e codigo do aluno(a) em marrom, ai fiz os seguintes procedimentos:
Banco de dados : Firebird
Acesso ao banco atraves de IbDatabase, IbTransaction e IbQuery
No cadastro de pesquisa, no DbGrid (DbgPes) onde mostra os dados da busca, no evento OnDrawColumnCell eu coloquei os seguintes dados para mostrar em marrom:
e no cadastro onde eu faço a pesquisa do aluno(a) eu coloquei os seguintes dados:O LeRegistro é um procedimento que eu faço para a pesquisa, mas o importante:
Add ('(SELECT L.Vencimento FROM Lancamento L WHERE L.Aluno=A.Codigo AND EXTRACT( MONTH FROM L.Vencimento ) <= EXTRACT( MONTH FROM CURRENT_DATE ) ) AS Vencimento' );
pois é aqui que ele busca no cadastro de lancamento se o vencimento é menos ou igual do decorrente dia, ai ele vai mostrar i nome em vermelho!.
Mas sei qual é o erro e tenho duas saidas, mas tentei as duas e não consegui nada!
Esse erro: Erro "multiple rows in singleton" está aparecendo por causa que nos lancamentos ele lança assim, pega a quantidade de parcelas a ser gereda e monta todas com seus respectivos valors, e tipo se ele lanço outra parcela de outro valor, ele busca o Historico do começo, tipo se ele lancei duas parcelas ele fica assim: 1ªParcela, 2ªParcela, depois ele lanço mais uma parcela ai ele fica assim:1ªParcela, então quer dizer ele faz a busca e monta como 3ªParcela, por isso que dá esse erro.
Então o primeiro em questão, como eu mudaria isso para dar esse erro nessa pesquisa aqui, pois eu vou ter que mudar as formas de historicos, mas eu já estou com o programa rodando e não tem como mudar todos os historicos, pois já são muitos, então como burlo isso para parar de dar erro.
Link para o comentário
Compartilhar em outros sites
18 respostass a esta questão
Posts Recomendados
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.