Controle no grid

Delphi

17/09/2010

Estou fazendo um controle de retirada de livros no grid,
e estou incluindo uma novo controle quando aperto  o INSERT, ate ai
tudo bem, estou conseguindo fazer mas gostaria de fazer o seguinte controle. nome     data da Retirada  data da retirada
Jose Peraria  15/02/2010 Quando eu aperto  o insert novamente, gostaria de colocar um trava,
dizendo que nao é possivel incluir o registro, pois nao tem data de retirada,
resumindo, so é possivel apertar incluir o registro SOMENTE quando a
data da retirada for preenchida. Cadastrei o registro acima no grid, e comente gravo, quando eu aperto finalizar onde
uso o comando o APPLYUPDATE
Evandro Abreu

Evandro Abreu

Curtidas 0

Respostas

Eriley Barbosa

Eriley Barbosa

17/09/2010

Faça o teste no evento BeforePost do ClientDataset. if NameDoSeuClientDataset.FieldByName('NameDoSeuCampoDeData').IsNull then begin   ShowMessage('Preencha o campo XXXX');   NameDoSeuClientDataset.FieldByName('NameDoSeuCampoDeData').FocusControl;   Abort; end;
GOSTEI 0
Evandro Abreu

Evandro Abreu

17/09/2010

Ele nao passa no after beforepost, segue abaixo meu codigo:     procedure TformCadBiblioteca.JvDBGrid2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState); begin
  if Key = 13 then
  begin
       try
         cdsCadBibliotecaRetirada.FieldByName('codigo').asinteger:=vvalor;
       except        end;             if ((cdsCadBibliotecaRetiradadataentrega.AsString <> '') and (cdsCadBibliotecaRetiradadataentrega.AsDateTime < cdsCadBibliotecaRetiradadataretirada.AsDateTime)) then
            begin
                       dm.cdsSql.Close;
                        with dm.cdsSql do
                            begin
                                cString:= 'select [mensagemBRA],[mensagemBRA1],[mensagemEUA], [mensagemEUA1], ';
                                cString:= cString + ' [mensagemESP],[mensagemESP1] from [SID].[dbo].[mensagens] WHERE sequencia = 14';
                                DataRequest(cString);
                                open;
                            end;
                             if FormPrincipal.vidioma = 'BRA' then
                                 Msg(dm.cdsSql.FieldByName('mensagemBRA').AsString,dm.cdsSql.FieldByName('mensagemBRA1').AsString,'','',True,False,'&OK','','',msgErro);
                             if FormPrincipal.vidioma = 'EUA' then
                                 Msg(dm.cdsSql.FieldByName('mensagemEUA').AsString,dm.cdsSql.FieldByName('mensagemEUA1').AsString,'','',True,False,'&OK','','',msgErro);
                             if FormPrincipal.vidioma = 'ESP' then
                                 Msg(dm.cdsSql.FieldByName('mensagemESP').AsString,dm.cdsSql.FieldByName('mensagemESP1').AsString,'','',True,False,'&OK','','',msgErro);
              cdsCadBibliotecaRetiradadataentrega.AsString:='';
              exit;             end;
            JvDBGrid2.SelectedIndex :=0;
//       ;
   if ((cdsCadBibliotecaRetirada.State in [dsinsert,dsedit]) ) then
    begin
      try
        cdsCadBibliotecaRetirada.FieldByName('codigo').asinteger:=vvalor;
        vdataentrega:=cdsCadBibliotecaRetiradadataentrega.AsString;
        cdsCadBibliotecaRetirada.Post;
        if cdsCadBibliotecaRetiradadataentrega.AsString <> '' then
           cdsCadBibliotecaRetirada.insert;
      except
        showmessage('Erro ao gravar o controle! Favor entrar em contato com o Depto de TI ');
      end;
    end;
  end;
end;
GOSTEI 0
Eduardo Marcolongo

Eduardo Marcolongo

17/09/2010

Porque vc não coloca aqui:
 if ((cdsCadBibliotecaRetirada.State in [dsinsert,dsedit]) ) then
    begin    if cdsCadBibliotecaRetiradadataSaida.AsString <> '' then       begin
          showmessage('Erro ao gravar o controle! Favor entrar colocar data ');	  abort;	end;      try        cdsCadBibliotecaRetirada.FieldByName('codigo').asinteger:=vvalor;        vdataentrega:=cdsCadBibliotecaRetiradadataentrega.AsString;
        cdsCadBibliotecaRetirada.Post;
        if cdsCadBibliotecaRetiradadataentrega.AsString <> '' then
           cdsCadBibliotecaRetirada.insert;
      except
        showmessage('Erro ao gravar o controle! Favor entrar em contato com o Depto de TI ');
      end;
    end;
GOSTEI 0
Evandro Abreu

Evandro Abreu

17/09/2010

Porque Teria que ficar assim: nome                                 data da Retirada                     data da retirada
Jose Peraria                      15/02/2010 Osvaldo dos Santos   Estou usando o componente do Jdei e neste componente se apertar a tecla insert ele automaticamente abre uma linha em branco para digitar, preciso travar isso , pois nao posso permitir que incluia o registro Osvaldo dos Santos,   e ficaria assim:   nome                                 data da Retirada                     data da retirada
Jose Peraria                      15/02/2010    
GOSTEI 0
POSTAR