Ajuda a manipular dados no Dbgrid.

10/06/2021

0

Fala pessoal gostaria de uma ajuda com DBgrid

Meu dbGrid tem varias colunas inclusive coloca de data, o que acontecer esse campo é herdado de vários outros, que lhe chama, não posso ir la e muda ele na estrutura que afeta as outras telas,
pensei em muda no Banco de not null, para null para aceita valor nulo pois esse data é incluida quando lanço o produto, DataInicio/Fim, com isso ela vai ser colocada para informar quando
fazer o agendamento pois é um horário já definido na agenda, e essa agenda é separada do sistema, não posso levar essa data de inicio e fim por que não está agendado, ai que estou com duvido escrevo todo o meu botão de
incluir Produto/Serviço, isso vou perde uns 4 dias pois o botão é herdado, ou mundo a regra no Banco pra aceita null.

Segue como é meu botão Hoje.

procedure TfrmCadAgenda.btnInsDescLivreClick(Sender: TObject);
var

iCodClassific ,iCodProdutivo, iItem : integer;

sNomeProdutivo, sBox : string;

dTMOServ: Double;

dtHoraInicio, dtHoraFim : Tdatetime;

servicoSeraDualTec: Boolean;

begin
servicoSeraDualTec := False;
try

criticarTipoOs();
edtDescricao.validar(''O campo "Descrição Livre" deve ser preenchido!'');

//if Form_Principal.qry_parmOS_AG_SEM_PRODUTIVO.AsString = ''S'' then

// Verifica se há serviço padrão associado
if CodServPadrao='''' then
raise TExcecaoRegraNegocioInvalida.Create(''Não foi definido serviço padrão na tabela de parâmetros do CRM, por favor verifique.'');

if (Form_Principal.qry_parmOS_AG_USAR_TEMPO_SERV_PADRAO.AsString<>''S'')and(StrToFloatDef(edtQtdeHora.Text, 0)=0) then
raise TExcecaoCampoInvalido.Create(edtQtdeHora, ''Informe o tempo definido para o CHIP.'');

if chkClienteDualTec.Checked then
servicoSeraDualTec := uMensagens.confirmar(''Será um serviço Dual Tec?'');

if (Form_Principal.qry_parmOS_AG_USAR_TEMPO_SERV_PADRAO.AsString<>''S'') then
dTMOServ := StrToFloatDef(edtQtdeHora.Text, 0)
else
dTMOServ := getTempoServicoPadrao();

iCodProdutivo := 0;
iCodClassific := getClassificacao('''', edtDescricao.Text, 0);

iItem := getUltimoItem;
//herdado de outras nelas falar com Flavio pra mexer em ''realizarAgendamentoServico''
realizarAgendamentoServico(
dTMOServ,
iCodProdutivo,
sNomeProdutivo,
sBox,
dtHoraInicio,
dtHoraFim,
False,
True,
dtHoraInicio,
iItem,
CodServPadrao,
iCodClassific,
servicoSeraDualTec,
False,
0
);

try
qryGeral.append;
qryGeralRECLAMACAO.asstring := edtDescricao.Text;
qryGeralKIT.asstring := ''N'';
qryGeralCOD_RECLAMACAO.asfloat := 0;
qryGeralMYITEM.AsInteger := iItem;
qryGeralITEM.AsInteger := qryGeralMYITEM.AsInteger;
qryGeralCOD_CLASSIFICACAO.AsInteger := iCodClassific;
qryGeralDESC_CLASSIF.asstring := TfrmClassifServico.GetClassificacaoServDesc(Form_Principal.Database, CodEmpresa, iCodClassific);
qryGeralCOD_SERVICO.asstring := CodServPadrao;
qryGeralHORA_DURACAO.asfloat := dTMOServ;
qryGeralNOME_PRODUTIVO.asstring := sNomeProdutivo;
qryGeralCOD_PRODUTIVO.AsInteger := iCodProdutivo;
if Form_Principal.qry_parmOS_AG_SEM_PRODUTIVO.AsString = ''S'' then
begin
qryGeralHORA_INICIO.asdatetime := dtHoraInicio;
qryGeralHORA_FIM.asdatetime := dtHoraFim;
end
else
begin
qryGeralHORA_INICIO.asdatetime := dtHoraInicio;
qryGeralHORA_FIM.asdatetime := dtHoraFim;
end;
qryGeralBOX.asstring := sBox;
qryGeralORIGEM.asstring := O_RECLAMACAO_LIVRE;
qryGeralTIPO_OS_FABRICA.Value := q_tipo_osTIPO_FABRICA.Value;
qryGeralTIPO_OS.AsString := q_agendaTIPO.AsString;
qryGeralDUAL_TEC.AsString := boolTostr(servicoSeraDualTec);
definirQuestionarioDiagnostico();

qryGeral.Post;

if Form_Principal.qry_parmOS_AG_SEM_PRODUTIVO.AsString = ''S'' then
begin
qryGeralHORA_INICIO.DisplayFormat := ''HH:MM'';
qryGeralHORA_INICIO.EditMask := ''!90:00;1;_'';
qryGeralHORA_FIM.DisplayFormat := ''HH:MM'';
qryGeralHORA_FIM.EditMask := ''!90:00;1;_'';
end;

// Insere na lista de serviços
InserirServicos(CodServPadrao, edtDescricao.Text, '''', 0, qryGeralMYITEM.AsInteger, dTMOServ, 0, dtHoraInicio, 0);
perguntasRelatorioDeAcompanhamento();

edtDescricao.CanFocus;
edtDescricao.Text := '''';
edtQtdeHora.Text := ''00:00'';

AtualizarTotalHoras(dTMOServ);
tratarLimpezaTipoOs();

except
on e: Exception do
begin
Application.MessageBox(pchar(''Não foi possível inserir reclamação livre.''+#13+''Erro -> ''+e.Message), ''Atenção'', MB_ICONWARNING+MB_OK);

if qryGeral.State in [dsInsert, dsEdit] then
qryGeral.Cancel;

if q_agServico.State in [dsInsert, dsEdit] then
q_agServico.Cancel;

end;
end;
except
on ex: Exception do
begin
EnviarMensagem(ex);
end;
end;
end;
Winicius

Winicius

Responder

Post mais votado

22/06/2021

No caso você pode colocar um componente datetimepicker e na hora de gravar os dados o field.asDateTime := datetimepicker.DateTime;
tipo

if datdatetimepicker.DateTime = ' ' then
       AQuery.FieldbyName('data').asString := now
else
        AQuery.FieldbyName('data').asString := datdatetimepicker.DateTime;


Espero ter ajudado, não li seu código!

Wanderson Cardoso

Wanderson Cardoso
Responder

Mais Posts

22/06/2021

Wanderson Cardoso

No caso você pode colocar um componente datetimepicker e na hora de gravar os dados o field.asDateTime := datetimepicker.DateTime;
tipo

if datdatetimepicker.DateTime = ' ' then
       AQuery.FieldbyName('data').asString := now
else
        AQuery.FieldbyName('data').asString := datdatetimepicker.DateTime;


Espero ter ajudado, não li seu código!
eita errrei! .asDateTime
Iginorem o .asstring
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar