Passagem de parametro para consulta SQL - Delphi + paradox

03/04/2013

3

Prezados,

Tenho a seguinte situação aplicada a um trecho de relatorio:

procedure TFrm_Rel_Cadas_Comple.qrp_Rel_Cadas_CompletoBeforePrint(
Sender: TCustomQuickRep; var PrintReport: Boolean);
begin
If RadioGroup1.ItemIndex = 1 then vSituacao := 'AFASTADO'
Else If RadioGroup1.ItemIndex = 0 then vSituacao := 'ATIVO'
Else If RadioGroup1.ItemIndex = 2 then vSituacao := 'DISCIPULANDO'
Else If RadioGroup1.ItemIndex = 3 then vSituacao := 'EM DECISÃO'
Else If RadioGroup1.ItemIndex = 4 then vSituacao := 'EM DISCIPLINA'
Else If RadioGroup1.ItemIndex = 5 then vSituacao := 'EXCLUÍDO'
Else If RadioGroup1.ItemIndex = 6 then vSituacao := 'FALECIDO'
Else If RadioGroup1.ItemIndex = 7 then vSituacao := 'VISITANTE'
Else If RadioGroup1.ItemIndex = 8 then vSituacao := 'TRANSFERIDO'
Else If RadioGroup1.ItemIndex = 9 then vSituacao := 'TRANSITÓRIO';
Dtm_Secre.qMembros_O.Close;
Dtm_Secre.qMembros_O.Sql.Clear;
Dtm_Secre.qMembros_O.Sql.Add('Select * From Membros');
>>> Dtm_Secre.qMembros_O.Sql.Add('Where SitIgreja = :vSituacao');
Dtm_Secre.qMembros_O.Sql.Add('Order By NOME');
Dtm_Secre.qMembros_O.ExecSql;
Dtm_Secre.qMembros_O.Open;
IF Dtm_Secre.qMembros_O.Eof Then
begin
ShowMessage('Não existem registros a serem impressos!');
Close;
end;
end;
obs.: a linha iniciada com >>> é apenas para chamar a atenção onde esta o problema; no codigo original não exitem os sinais

Após a compilação observa-se o seguinte erro:

qMembros_O: field 'vSituacao' is of an unknown type.

Podem me ajudar?

SEGUNDO:

Após a geração do relatório, qual o comando devo usar para quando retornar me permitir nova escolha e gerar um possivel proximo relatorio?

Fico muito agradecido pela resposta.
Responder

Posts

04/04/2013

Rafael Cunha

Faça da seguinte maneira:

Dtm_Secre.qMembros_O.Close;
Dtm_Secre.qMembros_O.Sql.Clear;
Dtm_Secre.qMembros_O.Sql.Add('Select * From Membros');
Dtm_Secre.qMembros_O.Sql.Add('Where SitIgreja = :vSituacao');
Dtm_Secre.qMembros_O.Sql.Add('Order By NOME');
Dtm_Secre.qMembros_O.ParamByName('vSituacao').Value:= vSituacao;
Dtm_Secre.qMembros_O.ExecSql;
Dtm_Secre.qMembros_O.Open;
Responder
Implementado, funcionou perfeitamente. Muito Obrigado.

Se for possível, gostaria de completasse uma duvida no mesmo relatório:

Após a escolha de uma das situações, testo se exitem registros a serem impressos conforme abaixo.
Na existencia esta imprimindo corretamente (apos a inclusão de sua orientação) mas quando não existem
apresenta a mensagem mas logo depois continua e dá erro. O Close não esta sendo executado/funcionando.

Ainda neste mesmo relatorio, se apos a impressão bem sucedida escolho nova opção, não funciona. preciso
encerrar o programa e reinicia-lo para nova escolha.

procedure TFrm_Rel_Cadas_Comple.qrp_Rel_Cadas_CompletoBeforePrint(
Sender: TCustomQuickRep; var PrintReport: Boolean);
begin
If RadioGroup1.ItemIndex = 1 then vSituacao := 'AFASTADO'
Else If RadioGroup1.ItemIndex = 0 then vSituacao := 'ATIVO'
Else If RadioGroup1.ItemIndex = 2 then vSituacao := 'DISCIPULANDO'
Else If RadioGroup1.ItemIndex = 3 then vSituacao := 'EM DECISÃO'
Else If RadioGroup1.ItemIndex = 4 then vSituacao := 'EM DISCIPLINA'
Else If RadioGroup1.ItemIndex = 5 then vSituacao := 'EXCLUÍDO'
Else If RadioGroup1.ItemIndex = 6 then vSituacao := 'FALECIDO'
Else If RadioGroup1.ItemIndex = 7 then vSituacao := 'VISITANTE'
Else If RadioGroup1.ItemIndex = 8 then vSituacao := 'TRANSFERIDO'
Else If RadioGroup1.ItemIndex = 9 then vSituacao := 'TRANSITÓRIO';
Dtm_Secre.qMembros_O.Close;
Dtm_Secre.qMembros_O.Sql.Clear;
Dtm_Secre.qMembros_O.Sql.Add('Select * From Membros');
Dtm_Secre.qMembros_O.Sql.Add('Where SitIgreja = :vSituacao');
Dtm_Secre.qMembros_O.Sql.Add('Order By NOME');
Dtm_Secre.qMembros_O.ParamByName('vSituacao').Value:= vSituacao;
Dtm_Secre.qMembros_O.ExecSql;
Dtm_Secre.qMembros_O.Open;
IF Dtm_Secre.qMembros_O.Eof Then
begin
ShowMessage('Não existem registros a serem impressos!');
Close;
end;
end;


Por último, encrrro todos os meus forms da forma abaixo. Acontece que quando vou desligar o micro
vem mensagem de erro alusiva a uso da memoria e tenho que desliga-lo via botão power.
Pode me orientar?

Em tempo, Existe possibilidade de um contato fora deste forum, visando uma correção geral neste meu programa?
caso seja permitido ou possível, por favor me passe endereço de contato.

mais uma vez agradeço.
procedure TFrm_Rel_Cadas_Comple.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Dtm_Secre.qMembros_o.Close;
end;
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira