Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Como Atribuir Uma Pergunta Só Na Hora Que Inclui E Sa


robinhocne

Question

Olá para todos.

Bom, na hora que eu faço um cadastro e salvo ele eu coloquei essa pergunta para que ele possa imprimir o contrato do aluno, mas o erro é o seguinte, aki se eu escolho a opção não ele não salva, outro dois pontos é que só queria que aparecesse a opção de imprimir o contrato só na hora que eu faço o cadastro, mas não na hora que eu edito ele não aparece a opção, e o outro ponto, queria colocar para imprimir o contrato e uma ficha, quer dizer quando usuario clicasse em sim ai aparecesse para imprimir os dois!

Esses são os codigos que eu coloquei, só não consiguo concluir espero ajuda!

if (not pergunta('Deseja Imprimir o Contrato de Prestação de Serviço?')) then exit;

   With DtmIza.qryIza do
     Begin
        ConsultaRegistros ('Empresa', 'Empresa, Endereco, Numero, Cnpj, Bairro, Cidade',
        'Codigo>=' + txtMat.Text);
           With TFrmRelContrato.Create (Application) do
        try
           QuickRep1.Preview;
        finally
           free;
          end;
     End;    
  Inherited;

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0
Bom, na hora que eu faço um cadastro e salvo ele eu coloquei essa pergunta para que ele possa imprimir o contrato do aluno, mas o erro é o seguinte, aki se eu escolho a opção não ele não salva (...)

if (not pergunta('Deseja Imprimir o Contrato de Prestação de Serviço?')) then exit;

   With DtmIza.qryIza do
     Begin
        ConsultaRegistros ('Empresa', 'Empresa, Endereco, Numero, Cnpj, Bairro, Cidade',
        'Codigo>=' + txtMat.Text);
           With TFrmRelContrato.Create (Application) do
        try
           QuickRep1.Preview;
        finally
           free;
          end;
     End;    
  Inherited;

robinhocne, não seria porque a pergunta deveria estar depois da sua chamada a Consulta Registros?

(...) outro dois pontos é que só queria que aparecesse a opção de imprimir o contrato só na hora que eu faço o cadastro, mas não na hora que eu edito ele não aparece a opção, (...)
Você quer dizer apenas quando está incluindo?

Se for, como você não utiliza os métodos convencionais (datasets em modo inserção/edição), então sugiro que você utilize uma variável em algum lugar (só você vai saber qual o melhor) para indicar quando o registro está sendo incluído ou quando está sendo alterado. Daí você só chama o procedimento para o relatório após verificar esta variável.

(...) e o outro ponto, queria colocar para imprimir o contrato e uma ficha, quer dizer quando usuario clicasse em sim ai aparecesse para imprimir os dois!
se você utiliza QuickReport, a dica é utilizar o TQRComposite, veja este post e veja se você consegue utilizá-lo em seu relatório (é bem simples, principalmente se os dois QuickReps estiverem no mesmo form).

Abraços

Link to comment
Share on other sites

  • 0

Micheus, eu coloquei a pergunta no final do codigo mas quando salvo ele já aparece o contrato e quando depois que fecho ai sim que aparece a pergunta:

With DtmIza.QryRelEmp do
     Begin
        Close;
        Sql.Clear;
        Sql.Add('SELECT * FROM Empresa');
        Open;
     end;
   With DtmIza.QryRelAlu do
     Begin
        Close;
        Sql.Clear;
        Sql.Add('SELECT * FROM Alunos');
        Open;
     End;
   With DtmIza.QryRelCid do
     Begin
        Close;
        Sql.Clear;
        Sql.Add('SELECT * FROM Cidades');
        Open;
     End;
   With TFrmRelContrato.Create (Application) do
        try
           QuickRep1.Preview;
        finally
           free;
  end;

     if (not pergunta('Deseja Imprimir o Contrato de Prestação de Serviço?')) then exit;

(...) outro dois pontos é que só queria que aparecesse a opção de imprimir o contrato só na hora que eu faço o cadastro, mas não na hora que eu edito ele não aparece a opção, (...)
Você quer dizer apenas quando está incluindo?

Se for, como você não utiliza os métodos convencionais (datasets em modo inserção/edição), então sugiro que você utilize uma variável em algum lugar (só você vai saber qual o melhor) para indicar quando o registro está sendo incluído ou quando está sendo alterado. Daí você só chama o procedimento para o relatório após verificar esta variável.

Aqui será que você me poderia me ajudar!

Link to comment
Share on other sites

  • 0

robinhocne, quando falei sobre perguntar apenas antes da impressão, naquele seu exemplo, era no sentido de que ficasse algo mais ou menos assim:

With DtmIza.qryIza do
Begin
  ConsultaRegistros ('Empresa', 'Empresa, Endereco, Numero, Cnpj, Bairro, Cidade', 'Codigo>=' + txtMat.Text);

  if (not pergunta('Deseja Imprimir o Contrato de Prestação de Serviço?')) then exit;
  With TFrmRelContrato.Create (Application) do
  try
    QuickRep1.Preview;
  finally
    free;
  end;
End;

ao menos era como eu tinha entendido: você faz a tal consulta/alteração no registro e depois (após gravada) fazer a pergunta se deseja imprimir ou não o tal contrato.

Quanto a 2ª questão, acho que a sugestão é fácil de entender, a implementação não deveria ser problema, mas eu conseguir ajudar pode ficar meio extenso.

Em algum momento você coloca os dados em seus edits (em uma alteração) ou inicia o form com os edits vazios (em uma inclusão). É neste ponto que você vai poder saber quando está incluindo ou alterando para, então, inicializar uma variável (booleana por exemplo) declarada no form de onde você faz a chamada para os respectivos procedimentos e que você irá utilizar para em seu retorno (saída do procedimento, provavelmente quando o cara gravou os dados) imprimir.

Muito provavelmente você deve ter um procedimento similar ao que você postou há algum tempo (post).

Nele aparece a chamada a um procedimento IncluirRegistro( 'Praticas', vCpo, vVlr ), imagino que você tem algo parecido para Empresas. Assim, neste momento você saberá que está fazendo uma inclusão e deve haver um outro procedimento em que você sabe que está alterando.

Link to comment
Share on other sites

  • 0

Ok, Micheus mas tive que fazer umas outras alterações nessa consulta:

if (not pergunta('Deseja Imprimir o Contrato de Prestação de Serviço?')) then exit;

   With DtmIza.QryRelEmp do
     Begin
        Close;
        Sql.Clear;
        Sql.Add('SELECT * FROM Empresa');
        Open;
     end;
   With DtmIza.QryRelAlu do
     Begin
        Close;
        Sql.Clear;
        Sql.Add('SELECT * FROM Alunos');
        Open;
     End;
   With DtmIza.QryRelCid do
     Begin
        Close;
        Sql.Clear;
        Sql.Add('SELECT * FROM Cidades');
        Open;
     End;
   With TFrmRelContrato.Create (Application) do
        try
           QuickRep1.Preview;
        finally
           free;
  end;
End;
Então modifiquei do jeito que você colocou e ele da erro na consulta. Sobre a segunda questão eu tenho sim um procedimento, eu inicio os forms com todos os edits em branco, apartir disso eu localizo ou faço uma inclusão do registro.
procedure incluirregistro (ptabela:string;pcampos, pvalores:tstringlist);
var a:integer;instrucaosql:string;
begin
instrucaosql:='insert into ' + ptabela + ' (';
for a :=0 to (pcampos.Count-1) do

   begin
      instrucaoSQL := instrucaosql+pcampos [a] + ', ';
   end;
   instrucaosql:= copy (instrucaosql,1,length (instrucaosql)-2) + ') values (';

for a :=0 to (pvalores.Count-1) do

   begin
      instrucaoSQL := instrucaosql+pvalores [a] + ', ';
   end;
   instrucaosql:= copy (instrucaosql,1,length (instrucaosql)-2) + '); ';
   //showmessage (instrucaosql);
   with dtmiza.qryiza do
      begin
         close;
         sql.Clear;
         sql.add (instrucaosql);
         execsql;
      end;


end;

procedure alterarregistro (ptabela:string;pcampos, pvalores:tstringlist;pcondicao:string);
var a:integer;instrucaosql:string;
begin
   instrucaosql:='update ' + ptabela + ' set ';
   for a :=0 to (pcampos.Count-1) do
      begin
         instrucaoSQL := instrucaosql+pcampos [a]+ '='+ pvalores [a] + ', ';
      end;
         instrucaosql:= copy (instrucaosql,1,length (instrucaosql)-2);

      if (pcondicao<>'') then
      begin
         instrucaosql := instrucaosql + ' where ' + pcondicao;
      end;
   // showmessage (instrucaosql);
   with dtmiza.qryiza do
      begin
         close;
         sql.Clear;
         sql.add (instrucaosql);
         execsql;
      end;

end;

Link to comment
Share on other sites

  • 0
Então modifiquei do jeito que você colocou e ele da erro na consulta.
bom, acho que isto você tem que ver, você nem menciona que erro ocorre, mas acho que você deve conseguir resovê-lo.

Sobre a segunda questão eu tenho sim um procedimento, eu inicio os forms com todos os edits em branco, apartir disso eu localizo ou faço uma inclusão do registro.
com isso, e o que eu já comentei, acho que você já responde a este seu questionamento inicial:
(...) outro dois pontos é que só queria que aparecesse a opção de imprimir o contrato só na hora que eu faço o cadastro, mas não na hora que eu edito ele não aparece a opção, (...)

ou seja, você já sabe quando chamou uma inclusão ou edição.

Link to comment
Share on other sites

  • 0

Micheus Obrigado por tudo, mas consegui fazer deste jeito

Resolvido

procedure Tfrmalunos.spbsalClick(Sender: TObject);

   procedure imprimeFicha();
   begin
      if (not pergunta('Deseja Imprimir o Contrato de Prestação de Serviço?')) then exit;

      With DtmIza.QryRelAlu do
      Begin
         Close;
         Sql.Clear;
         Sql.Add ('Select A.Codigo, A.Nome, A.Rg, I.Nome From Alunos A, ' +
                  'Alunos I Where A.Codigo=' + TxtMat.Text );
         Open;
      End;

      With DtmIza.QryRelEmp do
      Begin
         Close;
         Sql.Clear;
         Sql.Add ('Select A.Empresa, A.Cnpj, A.Endereco, A.Numero, A.Bairro From Empresa A');
         Open;
      end;

      With DtmIza.QryRelCid do
      Begin
         Close;
         Sql.Clear;
         Sql.Add( 'SELECT * FROM Cidades' );
         Open;
      End;

      With TFrmRelContrato.Create (Application) do
      try
         QuickRep1.Preview;
      finally
         free;
      end;

   end;
var
  szBuff: String;
begin
   with vcpo do
      begin
         clear;
         add ('dtcadastro');
         add ('servicos');
         add ('categoria');
         add ('nome');
         add ('rg');
         add ('uf_rg');
         add ('emissor');
         add ('cpf');
         ...................................
   with vvlr do
      begin
     clear;
         Add ('Current_Date');
         if (rdbhab.checked) then
         add ('1')
         else if (rdbalt.checked) then
         add('2')
         else if (rdbren.checked) then
         add('3');
         add (#39 + txtcth.Text + #39);
         add (#39 + txtnom.Text + #39);
         add (#39 + txtrg.Text + #39);
         add (#39 + txtuf2.Text + #39);
         add (#39 + cboorg.Text + #39);
         Add (TiraMascara (TxtCPF.Text));

          .....................
         

end;

     If (Editar) Then
     begin
        AlterarRegistro ('alunos', vCpo, vVlr, 'codigo =' + txtmat.Text)
     end
     else
     begin
        IncluirRegistro('alunos', vCpo, vVlr);
        imprimeFicha();
     end;

     Inherited;
End;

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...