Ajuda a manipular dados no Dbgrid.

10/06/2021

6

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;
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!
Responder

Mais Posts

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar