SOCOOORRROOOOO!!!!!!

Delphi

27/02/2003

Olá pessoal,

Estou fazendo um BD para cadastrar alunos q colarão grau para confecção de diplomas, e neste sistema tenho uma consulta onde eu especifico os critérios q desejo utilizar:
- RadioGroup1:
Data da Colação
Nome do Curso
Ambos

- RadioGroup2:
Frente
Verso

1 ComboBox com os nomes dos cursos e 1 Edit para entrar com a data. No caso do edit, as informações serão mesmo como texto, pois o usuário terá q digitar a data seguida de um dígito (semestre). Mas está dando um erro q diz:

ConsDiplomas: Cannot perform this operation on a closed dataset.

O meu comando está da seguinte forma:
-------------------------------------------------

unit UDiplomasPorCriterio;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons;

type
TFrmDiplomasPorCriterio = class(TForm)
RadioGroup1: TRadioGroup;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Panel1: TPanel;
Label1: TLabel;
ComboBox1: TComboBox;
Label2: TLabel;
Edit1: TEdit;
RadioGroup2: TRadioGroup;
Edit2: TEdit;
procedure RadioGroup2Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FrmDiplomasPorCriterio: TFrmDiplomasPorCriterio;

implementation
Uses UDados, URelDiplomaPorCriterioFrente;
{$R *.DFM}

procedure TFrmDiplomasPorCriterio.RadioGroup2Click(Sender: TObject);
begin
RadioGroup1.Enabled:=True;
RadioGroup1.SetFocus;

end;

procedure TFrmDiplomasPorCriterio.RadioGroup1Click(Sender: TObject);
begin
If RadioGroup1.ItemIndex = 0 Then
Begin
Label1.Enabled:=False;
ComboBox1.Enabled:=False;
Label2.Enabled:=True;
Edit1.Enabled:=True;
Edit1.SetFocus
End
Else
If RadioGroup1.ItemIndex = 1 Then
Begin
Label1.Enabled:=True;
ComboBox1.Enabled:=True;
ComboBox1.SetFocus;
Label2.Enabled:=False;
Edit1.Clear;
Edit1.Enabled:=False
End
Else
If RadioGroup1.ItemIndex = 2 Then
Begin
Label1.Enabled:=True;
ComboBox1.Enabled:=True;
ComboBox1.SetFocus;
Edit1.Enabled:=True;
Edit1.Clear;
End;

end;

procedure TFrmDiplomasPorCriterio.ComboBox1Click(Sender: TObject);
begin
If RadioGroup1.ItemIndex = 0 Then
Begin
Edit2.Text:=´Eletromecânica´
End
Else
If RadioGroup1.ItemIndex = 1 Then
Begin
Edit2.Text:=´Recursos Hídricos / Irrigação´
End
Else
If RadioGroup1.ItemIndex = 2 Then
Begin
Edit2.Text:=´Recursos Hídricos / Saneamento Ambiental´
End
Else
If RadioGroup1.ItemIndex = 3 Then
Begin
Edit2.Text:=´Tecnologia de Alimentos´;
End;

end;

procedure TFrmDiplomasPorCriterio.BitBtn1Click(Sender: TObject);
begin
If (RadioGroup1.ItemIndex = 0) and (RadioGroup2.ItemIndex = 0) Then
Begin
DMDados.ConsDiplomas.Close;
DMDados.ConsDiplomas.SQL.Clear;
DMDados.ConsDiplomas.SQL.Add(´SELECT * FROM TB_Concludentes WHERE DataDeColacao LIKE=:P1´);
DMDados.ConsDiplomas.Parameters.ParamByName(´P1´).Value:=Edit1.Text;
If (DMDados.ConsDiplomas.RecordCount = 0) Then
Begin
ShowMessage(´Data da colação não encontrada´)
End
Else
Begin
Application.CreateForm(TFrmRelDiplomaPorCriterioFrente, FrmRelDiplomaPorCriterioFrente);
FrmRelDiplomaPorCriterioFrente.QuickRep1.PreviewModal;
End
End
Else
If (RadioGroup1.ItemIndex = 1) And (RadioGroup2.ItemIndex = 0) Then
Begin
DMDados.ConsDiplomas.Close;
DMDados.ConsDiplomas.SQL.Clear;
DMDados.ConsDiplomas.SQL.Add(´SELECT * FROM TB_Concludentes WHERE Curso LIKE=:P1´);
DMDados.ConsDiplomas.Parameters.ParamByName(´P1´).Value:=Edit2.Text;
If (DMDados.ConsDiplomas.RecordCount = 0) Then
Begin
ShowMessage(´Curso não encontrado´)
End
Else
Begin
Application.CreateForm(TFrmRelDiplomaPorCriterioFrente, FrmRelDiplomaPorCriterioFrente);
FrmRelDiplomaPorCriterioFrente.QuickRep1.PreviewModal;
End;
End;
end;

end.

-------------------------------------------------
COMO POSSO RESOLVER ISSO?

Grato pela imensa paciência e atenção,

Ilano.


Anonymous

Anonymous

Curtidas 0

Respostas

Carnette

Carnette

27/02/2003

Olá pessoal, Estou fazendo um BD para cadastrar alunos q colarão grau para confecção de diplomas, e neste sistema tenho uma consulta onde eu especifico os critérios q desejo utilizar: - RadioGroup1: Data da Colação Nome do Curso Ambos - RadioGroup2: Frente Verso 1 ComboBox com os nomes dos cursos e 1 Edit para entrar com a data. No caso do edit, as informações serão mesmo como texto, pois o usuário terá q digitar a data seguida de um dígito (semestre). Mas está dando um erro q diz: ConsDiplomas: Cannot perform this operation on a closed dataset. O meu comando está da seguinte forma: ------------------------------------------------- unit UDiplomasPorCriterio; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons; type TFrmDiplomasPorCriterio = class(TForm) RadioGroup1: TRadioGroup; BitBtn1: TBitBtn; BitBtn2: TBitBtn; Panel1: TPanel; Label1: TLabel; ComboBox1: TComboBox; Label2: TLabel; Edit1: TEdit; RadioGroup2: TRadioGroup; Edit2: TEdit; procedure RadioGroup2Click(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); procedure ComboBox1Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmDiplomasPorCriterio: TFrmDiplomasPorCriterio; implementation Uses UDados, URelDiplomaPorCriterioFrente; {$R *.DFM} procedure TFrmDiplomasPorCriterio.RadioGroup2Click(Sender: TObject); begin RadioGroup1.Enabled:=True; RadioGroup1.SetFocus; end; procedure TFrmDiplomasPorCriterio.RadioGroup1Click(Sender: TObject); begin If RadioGroup1.ItemIndex = 0 Then Begin Label1.Enabled:=False; ComboBox1.Enabled:=False; Label2.Enabled:=True; Edit1.Enabled:=True; Edit1.SetFocus End Else If RadioGroup1.ItemIndex = 1 Then Begin Label1.Enabled:=True; ComboBox1.Enabled:=True; ComboBox1.SetFocus; Label2.Enabled:=False; Edit1.Clear; Edit1.Enabled:=False End Else If RadioGroup1.ItemIndex = 2 Then Begin Label1.Enabled:=True; ComboBox1.Enabled:=True; ComboBox1.SetFocus; Edit1.Enabled:=True; Edit1.Clear; End; end; procedure TFrmDiplomasPorCriterio.ComboBox1Click(Sender: TObject); begin If RadioGroup1.ItemIndex = 0 Then Begin Edit2.Text:=´Eletromecânica´ End Else If RadioGroup1.ItemIndex = 1 Then Begin Edit2.Text:=´Recursos Hídricos / Irrigação´ End Else If RadioGroup1.ItemIndex = 2 Then Begin Edit2.Text:=´Recursos Hídricos / Saneamento Ambiental´ End Else If RadioGroup1.ItemIndex = 3 Then Begin Edit2.Text:=´Tecnologia de Alimentos´; End; end; procedure TFrmDiplomasPorCriterio.BitBtn1Click(Sender: TObject); begin If (RadioGroup1.ItemIndex = 0) and (RadioGroup2.ItemIndex = 0) Then Begin DMDados.ConsDiplomas.Close; DMDados.ConsDiplomas.SQL.Clear; DMDados.ConsDiplomas.SQL.Add(´SELECT * FROM TB_Concludentes WHERE DataDeColacao LIKE=:P1´); DMDados.ConsDiplomas.Parameters.ParamByName(´P1´).Value:=Edit1.Text; If (DMDados.ConsDiplomas.RecordCount = 0) Then Begin ShowMessage(´Data da colação não encontrada´) End Else Begin Application.CreateForm(TFrmRelDiplomaPorCriterioFrente, FrmRelDiplomaPorCriterioFrente); FrmRelDiplomaPorCriterioFrente.QuickRep1.PreviewModal; End End Else If (RadioGroup1.ItemIndex = 1) And (RadioGroup2.ItemIndex = 0) Then Begin DMDados.ConsDiplomas.Close; DMDados.ConsDiplomas.SQL.Clear; DMDados.ConsDiplomas.SQL.Add(´SELECT * FROM TB_Concludentes WHERE Curso LIKE=:P1´); DMDados.ConsDiplomas.Parameters.ParamByName(´P1´).Value:=Edit2.Text; If (DMDados.ConsDiplomas.RecordCount = 0) Then Begin ShowMessage(´Curso não encontrado´) End Else Begin Application.CreateForm(TFrmRelDiplomaPorCriterioFrente, FrmRelDiplomaPorCriterioFrente); FrmRelDiplomaPorCriterioFrente.QuickRep1.PreviewModal; End; End; end; end. ------------------------------------------------- COMO POSSO RESOLVER ISSO? Grato pela imensa paciência e atenção, Ilano.



Miguim...onde é que voce está fazendo a abertura do SQL ???

procedure TFrmDiplomasPorCriterio.BitBtn1Click(Sender: TObject);
begin
If (RadioGroup1.ItemIndex = 0) and (RadioGroup2.ItemIndex = 0) Then
Begin
DMDados.ConsDiplomas.Close;
DMDados.ConsDiplomas.SQL.Clear;
DMDados.ConsDiplomas.SQL.Add(´SELECT * FROM TB_Concludentes WHERE DataDeColacao LIKE=1´);
DMDados.ConsDiplomas.Parameters.ParamByName(´P1´).Value:=Edit1.Text;
If (DMDados.ConsDiplomas.RecordCount = 0) Then
Begin
ShowMessage(´Data da colação não encontrada´)
End
Else
Begin
Application.CreateForm(TFrmRelDiplomaPorCriterioFrente, FrmRelDiplomaPorCriterioFrente);
FrmRelDiplomaPorCriterioFrente.QuickRep1.PreviewModal;
End
End
Else
If (RadioGroup1.ItemIndex = 1) And (RadioGroup2.ItemIndex = 0) Then
Begin
DMDados.ConsDiplomas.Close;
DMDados.ConsDiplomas.SQL.Clear;
DMDados.ConsDiplomas.SQL.Add(´SELECT * FROM TB_Concludentes WHERE Curso LIKE=1´);
DMDados.ConsDiplomas.Parameters.ParamByName(´P1´).Value:=Edit2.Text;
>>>DMDados.ConsDiplomas.Open; <<<< faltou isso
If (DMDados.ConsDiplomas.RecordCount = 0) Then
Begin
ShowMessage(´Curso não encontrado´)
End
Else
Begin
Application.CreateForm(TFrmRelDiplomaPorCriterioFrente, FrmRelDiplomaPorCriterioFrente);
FrmRelDiplomaPorCriterioFrente.QuickRep1.PreviewModal;
End;
End;
end;


GOSTEI 0
Ilanocf

Ilanocf

27/02/2003

Rápido, hein!
Quem sabe, sabe, quem não sabe bate palma. Valeu cara!

Infelizmente hoje não dá mais para eu ver, mas já imprimi sua resposta e irei trabalhar nela amanhã,

Obrigadão pela dica.


GOSTEI 0
POSTAR