Dimunuir Data e Hora com Resultados

Delphi

17/06/2013

Boa Tarde amigos, venho aqui mais uma vez pedir ajuda de vocês. E o seguinte tenho um DBEdit10 em meu formulario que quando vou criar um novo regsitro clicando no botão "Novo" ele automaticamente preenche com a data atual, fiz isso com o codigo: DBEdit10.Text:=datetostr(now);, o quero fazer e quando eu preencher um DBEdit11 manualmente com uma data, o meu DBEdit12 me de o resultado somando dos dias automaticamente. Exemplo DBEdit10, me mostra 17/06/2013, dai vou no DBEdit11 e coloco 21/06/2013, o resultado no DBEdt12 seria assim: 5 Dias, porem esse ''5 Dias'', teria que ser automatico e a mesma coisa seria para as horas.
Alguem tem alguma solução.

Obrigado, e desde ja agradeço a todos.

Att, Felipe.
Felipe Arruda

Felipe Arruda

Curtidas 0

Respostas

Felipe Arruda

Felipe Arruda

17/06/2013

Alguem pode me ajudar nesse problema?
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

dá para usar a função DaySpan para obter a quantidade de dias e horas entre duas datas:

var
  vDaySpan: Double;
  qtdeDias: Integer;
  qtdeHoras: TTime;
begin
  vDaySpan := DaySpan(datainicio, datafim);
  qtdeDias := Trunc(vDaySpan);
  qtdeHoras := Frac(vDaySpan);
end; 
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Boa Tarde Alanps, desde ja fico muito agradecido a sua ajuda.
Ok, mas eu tenho 3 dbedit um para data incial que e gerado automaticamente com o codigo DBEdit10.Text:=datetostr(now), o outro eu colocarei a data manualmente e o terceiro e ultimo teria que me dar o resultado automatico quando eu preencho o segundo DBEdit.
Para a hora seria parecido, tenho 3 dbedit um para hora incial que e gerado automaticamente com o codigo DBEdit7.Text:=timetostr(now); o outro eu colocarei a hora manualmente e o terceiro e ultimo teria que me dar o resultado automatico quando eu preencho o segundo DBEdit.

Obrigado, fico no aguardo.

Att, Felipe.
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

só colocar no evento OnExit do seu edit onde a data é manual o código que calcula o DaySpan e atribuir o valor obtido no seu edit de quantidade de dias (mesma coisa para as horas).
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

datainicio e datafim, seria os meus DBEdit?
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

as duas datas que vc tem que comparar, se estão no seu TDBEdit é só passar:

DaySpan(StrToDate(DBEdit1.Text), StrToDate(DBEdit2.Text));
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Bom dia alanps, muito obrigado por estar me ajudando, porem deu outro problema.
1- No meu DBEdit de horas automatica, alem de quando cirar o formulario ele insere a data automaticamente, ele tambem tem uma mascasra no Evento OnEnter:
DBEdit10.Field.EditMask:= '!99/99/0000;1';


2 - No meu DBEdit de horas manual, eu tenho no evento OnEnter e no Evento OnExit:
procedure TFRAtendimento.DBEdit11Enter(Sender: TObject);
begin
  DBEdit11.Field.EditMask:= '!99/99/0000;1';
end;

procedure TFRAtendimento.DBEdit11Exit(Sender: TObject);
var
  vDaySpan: Double;
  qtdeDias: Integer;
  qtdeHoras: TTime;
begin
  vDaySpan := DaySpan(StrToDate(DBEdit10.Text), StrToDate(DBEdit12.Text));
  qtdeDias := Trunc(vDaySpan);
  qtdeHoras := Frac(vDaySpan);

end;


3 - O meu DBEdit que vai receber, eo DBEdit12.

4 - Os tipos de campos, em meu banco de dados são: A data automatica tipo date, data manual tipo date, e data a ser mostrada esta como varchar, quando vou fazer o teste no programa me retornar o seguint erro: 'Is not a valid Date".
Tentei mudar o campo que calcula automatico para date, porem quando vou compilar o programa da outro erro.
A mesma data que eu coloco no campo manual e a que aparece no campo automatico.

Obrigado, fico aguardando.

Att, Felipe.
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

tenta assim:

procedure TFRAtendimento.DBEdit11Exit(Sender: TObject);
var
  vDaySpan: Double;
  qtdeDias: Integer;  
begin
  vDaySpan := DaySpan(StrToDate(DBEdit10.Text), StrToDate(DBEdit11.Text));
  qtdeDias := Trunc(vDaySpan);
  DBEdit12.Text := IntToStr(qtdeDias);
end;


GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Boa Tarde alanps, ficou do mesmo jeito.
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Bom dia pessoal, seguindo o exemplo do alanps, tentei de varias outras formas, porem não esta dando certo, alguem teria mais alguma sugestão?
Obrigado, aguardo respostas.

Att, Felipe.
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

tenta atribuir o valor direto no campo, ao invés de inserir no DBEdit13.

no lugar de:
DBEdit12.Text := IntToStr(qtdeDias);


tente:

DBEdit12.DataSource.DataSet.FieldByName(DBEdit12.DataField).AsInteger := qtdeDias;
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Bom dia alanps, muito obrigado por estar me ajudando mais uma vez, mas tem um porem meu campos são do tipo date e tem a mascara.

DBEdit11.Field.EditMask:= '!99/99/0000;1';


Como ficaria nesse caso?

Obrigado, e tenha um bom dia.

Att, Felipe
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

o campo ligado ao DBEdit12 não deveria ser inteiro, já que ele vai receber a quantidade de dias?
(os testes que fiz foram com essa idéia)
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Bom dia, mas eu posso colocar como tipo inteiro e com a mascara? Todos os meus DBEdit vão ter que ser no tipo inteiro?
Obrigado.

Att, Felipe.
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

não, só o campo que recebe a quantidade de dias precisa ser inteiro (e ele pode ter máscara sim, só que não a de data)
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Boa Tarde alanps, ainda continua com erros:

1º - DBEdit10 com data automatica quando clico no botão com o codigo:
DBEdit10.Text:=datetostr(now)


O tipo de campo no meu BD e Date

Evento OnEnter com codigo mascara:
DBEdit10.Field.EditMask:= '!99/99/0000;1';



2º - DBEdit11 com data manual digitada pelo usuario.

O tipo no meu BD e Date

Evento OnEnter com codigo mascara:
DBEdit11.Field.EditMask:= '!99/99/0000;1';


Evento OnExit com codigo:
var
  vDaySpan: Double;
  qtdeDias: Integer;
  qtdeHoras: TTime;
begin
  vDaySpan := DaySpan(StrToDate(DBEdit10.Text), StrToDate(DBEdit12.Text));
  qtdeDias := Trunc(vDaySpan);
  qtdeHoras := Frac(vDaySpan);


3º - DBEdit12 ira receber a quantidade de dias automaticamente dados pelo DBEdit10 que e gerado automatico e DBEdit11 que e digitado pelo usuario conforme explicado acima.
O tipo do DBEdit12 em meu BD e Integer

No momento quando eu digito a data manual no DBEdit11 da o erro: "25/06/2013' is not a valid integer value for field "DURACAO EM DIAS CHAMADA".
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

o campo vinculado ao seu DBEdit11 está incorreto
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Ok, mas vc disse que poderia ser Date, que somente o campo que vai dar o calculo teria que ser Integer, e foi isso que fiz.
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

mas o campo integer deve estar ligado ao DBEdit12, não ao DBEdit11.
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Ok, mas foi isso que eu disse acima DBEdit 10 e 11 tipo Date, e DBEdit12 Integer.
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Se e o Dbedit12 que esta ligado ao campo integer essa linha do comando esta errada para StrToDate para o DBedit12
vDaySpan := DaySpan(StrToDate(DBEdit10.Text), StrToDate(DBEdit12.Text));

Tanto que da o erro is note valid date.
Como converteria data para inteiro?
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

não seria

vDaySpan := DaySpan(StrToDate(DBEdit10.Text), StrToDate(DBEdit11.Text));


?
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

1º - DBEdit10 acrescenta data automatica quando clico no Botão Novo, codigo:
DBEdit10.Text:=datetostr(now);

Na minha tabela o tipo dele e Date e tambem NotNull.
Object Inspector, Evento OnEnter:
DBEdit10.Field.EditMask:= '!99/99/0000;1';

Object Inspector, Evento OnExit:
begin
  if IBTable1.FieldByName('Data Abertura Chamada').IsNull then
begin
      Application.MessageBox('Favor verificar o campo Data Abertura Chamada, pos ele e preenchid automáticamente, quando você pressiona a botão Novo', 'Aviso',
      mb_IconError + mb_Ok);
      DBEdit10.SetFocus;
      Abort;
end;

end;



2º - DBEdit11 - Rcebe a data manualmente digitada pelo usuario.
Na minha tabela o seu tipo e Date, e não e NotNull.
Object Inspector, Evento OnEnter:
DBEdit11.Field.EditMask:= '!99/99/0000;1';

Object Inspector, Evento OnExit:
var
  vDaySpan: Double;
  qtdeDias: Integer;
  qtdeHoras: TTime;
begin
  vDaySpan := DaySpan(StrToDate(DBEdit10.Text), StrToDate(DBEdit11.Text));
  qtdeDias := Trunc(vDaySpan);
  qtdeHoras := Frac(vDaySpan);

end;



3º DBEdit12 - Na minha tabela tipo Integer, e não e NotNull.
Quando adiciono a data manual, nada acontece, não da erro, não aparece o resultado no DBEdit12.

Codigo completo:

unit unitatendimento;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, DBCtrls, Grids, DBGrids, Mask,
  DB, DBClient, IBQuery, IBCustomDataSet, IBTable, IBDatabase, DateUtils;

type
  TFRAtendimento = class(TForm)
    MainMenu1: TMainMenu;
    A1: TMenuItem;
    NovoCadastro1: TMenuItem;
    SalvarCliente1: TMenuItem;
    Desfazer1: TMenuItem;
    ExcluirNovoCadastro1: TMenuItem;
    ProximoCliente1: TMenuItem;
    ClienteAnterior1: TMenuItem;
    N1: TMenuItem;
    Sair1: TMenuItem;
    Procurar1: TMenuItem;
    Relatrio1: TMenuItem;
    Clie1: TMenuItem;
    Panel1: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label3: TLabel;
    Label13: TLabel;
    DBEdit4: TDBEdit;
    Label5: TLabel;
    Label7: TLabel;
    DBEdit7: TDBEdit;
    Label8: TLabel;
    DBEdit8: TDBEdit;
    Label9: TLabel;
    DBEdit9: TDBEdit;
    Label12: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    DBEdit15: TDBEdit;
    DBNavigator1: TDBNavigator;
    DBGrid1: TDBGrid;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    Label6: TLabel;
    DBEdit10: TDBEdit;
    Label10: TLabel;
    DBEdit11: TDBEdit;
    Label11: TLabel;
    Label4: TLabel;
    Label16: TLabel;
    DBEdit17: TDBEdit;
    DBMemo1: TDBMemo;
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBTable1: TIBTable;
    DataSource1: TDataSource;
    IBTransaction2: TIBTransaction;
    IBTable2: TIBTable;
    DataSource2: TDataSource;
    DataSource3: TDataSource;
    DataSource4: TDataSource;
    IBTransaction3: TIBTransaction;
    IBTransaction4: TIBTransaction;
    IBTable3: TIBTable;
    IBTable4: TIBTable;
    DBLookupComboBox1: TDBLookupComboBox;
    DBLookupComboBox2: TDBLookupComboBox;
    DBLookupComboBox3: TDBLookupComboBox;
    DBMemo2: TDBMemo;
    DataSource5: TDataSource;
    IBTable5: TIBTable;
    IBTransaction5: TIBTransaction;
    DBLookupComboBox4: TDBLookupComboBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    AguardandoRetorno1: TMenuItem;
    EmAndamento1: TMenuItem;
    Retornar1: TMenuItem;
    Finalizado1: TMenuItem;
    Button4: TButton;
    DBEdit12: TDBEdit;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure Sair1Click(Sender: TObject);
    procedure ProximoCliente1Click(Sender: TObject);
    procedure ClienteAnterior1Click(Sender: TObject);
    procedure ExcluirNovoCadastro1Click(Sender: TObject);
    procedure Desfazer1Click(Sender: TObject);
    procedure SalvarCliente1Click(Sender: TObject);
    procedure NovoCadastro1Click(Sender: TObject);
    procedure DBEdit10Enter(Sender: TObject);
    procedure DBEdit11Enter(Sender: TObject);
    procedure DBEdit7Enter(Sender: TObject);
    procedure DBEdit8Enter(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure Button1Click(Sender: TObject);
    procedure AguardandoRetorno1Click(Sender: TObject);
    procedure EmAndamento1Click(Sender: TObject);
    procedure Retornar1Click(Sender: TObject);
    procedure Finalizado1Click(Sender: TObject);
    procedure IBTable2AfterOpen(DataSet: TDataSet);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure DBEdit11Exit(Sender: TObject);
    procedure DBEdit2Exit(Sender: TObject);
    procedure DBLookupComboBox1Exit(Sender: TObject);
    procedure DBEdit4Exit(Sender: TObject);
    procedure DBLookupComboBox2Exit(Sender: TObject);
    procedure DBLookupComboBox3Exit(Sender: TObject);
    procedure DBEdit7Exit(Sender: TObject);
    procedure DBEdit10Exit(Sender: TObject);
    procedure DBMemo2Exit(Sender: TObject);
    procedure DBEdit15Exit(Sender: TObject);
    procedure DBLookupComboBox4Exit(Sender: TObject);
    procedure DBEdit17Exit(Sender: TObject);
    procedure DBMemo1Enter(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FRAtendimento: TFRAtendimento;

implementation

uses unitclientes, uniterro;

{$R *.dfm}


procedure TFRAtendimento.AguardandoRetorno1Click(Sender: TObject);
begin
  IBTable1.Filter := 'STATUS = 1';
  IBTable1.Filtered := True;
end;

procedure TFRAtendimento.BitBtn1Click(Sender: TObject);
var
  NOVO: integer;

begin

  IBTable1.Last;
  NOVO:=IBTable1.FieldByName ('CODIGO ATENDIMENTO').AsInteger+1;
  IBTable1.Append;
  IBTable1.FieldByName('CODIGO ATENDIMENTO').AsInteger:=NOVO;
  DBEdit10.Text:=datetostr(now);
  DBEdit7.Text:=timetostr(now);
  IBTable1.Insert;
  ShowMessage ('Os campo com fundo amarelo, são de preenchimento obrigatório!');
  DBEdit2.SetFocus;

end;

procedure TFRAtendimento.BitBtn2Click(Sender: TObject);
var
 NOVO : integer;
begin
 IBTable1.Post;
 ShowMessage ('Atendimento Cadastrado com Sucesso.');

end;

procedure TFRAtendimento.BitBtn3Click(Sender: TObject);
begin
  IBTable1.Cancel;
  ShowMessage ('Cadastro de Novo Atendimento cancelado.');
end;

procedure TFRAtendimento.BitBtn4Click(Sender: TObject);
begin
  If Application.MessageBox('Confirma Exclusão ?','Cuidado !!!',MB_YESNO +
                           MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES Then
  IBTable1.Delete;
end;

procedure TFRAtendimento.BitBtn6Click(Sender: TObject);
begin
  IBTable1.Prior;
end;

procedure TFRAtendimento.BitBtn7Click(Sender: TObject);
begin
  IBTable1.Next;
end;

procedure TFRAtendimento.BitBtn8Click(Sender: TObject);
begin
  CLOSE;
end;

procedure TFRAtendimento.Button3Click(Sender: TObject);
begin
 DataSource1.DataSet.Close;
 DBGrid1.DataSource.DataSet.Filtered := False;
 DataSource1.DataSet.Open;
end;

procedure TFRAtendimento.Button4Click(Sender: TObject);
var
 codigocliente : String;

begin
 FRErro := TFRErro.Create(Application);
 FRErro.ShowModal();
 codigoCliente := FRErro.IBTable1.FieldByName('ERRO_PROBLEMA').AsString;
 DBMemo1.Lines.Add('ERRO_PROBLEMA: ' + codigoCliente);

end;

procedure TFRAtendimento.Button5Click(Sender: TObject);
begin
IBTable1.IndexFieldNames := 'RAZAO SOCIAL';
end;

procedure TFRAtendimento.Button1Click(Sender: TObject);
begin
  FRCliente.ShowModal ()
end;

procedure TFRAtendimento.Button2Click(Sender: TObject);
begin
  FRErro.ShowModal ()
end;

procedure TFRAtendimento.ClienteAnterior1Click(Sender: TObject);
begin
  IBTable1.Prior;
end;

procedure TFRAtendimento.DBEdit10Enter(Sender: TObject);
begin
  DBEdit10.Field.EditMask:= '!99/99/0000;1';
end;

procedure TFRAtendimento.DBEdit10Exit(Sender: TObject);
begin
  if IBTable1.FieldByName('Data Abertura Chamada').IsNull then
begin
      Application.MessageBox('Favor verificar o campo Data Abertura Chamada, pos ele e preenchid automáticamente, quando você pressiona a botão Novo', 'Aviso',
      mb_IconError + mb_Ok);
      DBEdit10.SetFocus;
      Abort;
end;

end;

procedure TFRAtendimento.DBEdit11Enter(Sender: TObject);
begin
  DBEdit11.Field.EditMask:= '!99/99/0000;1';
end;

procedure TFRAtendimento.DBEdit11Exit(Sender: TObject);
var
  vDaySpan: Double;
  qtdeDias: Integer;
  qtdeHoras: TTime;
begin
  vDaySpan := DaySpan(StrToDate(DBEdit10.Text), StrToDate(DBEdit11.Text));
  qtdeDias := Trunc(vDaySpan);
  qtdeHoras := Frac(vDaySpan);

end;


procedure TFRAtendimento.DBEdit15Exit(Sender: TObject);
begin
  if IBTable1.FieldByName('VALOR').IsNull then
begin
      Application.MessageBox('Favor preencher o campo Valor!', 'Aviso',
      mb_IconError + mb_Ok);
      DBEDIT15.SetFocus;
      Abort;
end;

end;
procedure TFRAtendimento.DBEdit17Exit(Sender: TObject);
begin
  if IBTable1.FieldByName('OBSERVACAO').IsNull then
begin
      Application.MessageBox('Favor preencher o campo Observação!', 'Aviso',
      mb_IconError + mb_Ok);
      DBEdit17.SetFocus;
      Abort;
end;

end;

procedure TFRAtendimento.DBEdit2Exit(Sender: TObject);
begin
  if IBTable1.FieldByName('ATENDENTE').IsNull then
begin
      Application.MessageBox('Favor preencher o campo Atendente!', 'Aviso',
      mb_IconError + mb_Ok);
      DBEdit2.SetFocus;
      Abort;
end;

end;

procedure TFRAtendimento.DBEdit4Exit(Sender: TObject);
begin
  if IBTable1.FieldByName('CONTATO CHAMADA').IsNull then
begin
      Application.MessageBox('Favor preencher o campo Contato Chamada!', 'Aviso',
      mb_IconError + mb_Ok);
      DBEdit4.SetFocus;
      Abort;
end;

end;
procedure TFRAtendimento.DBEdit7Enter(Sender: TObject);
begin
  DBEdit7.Field.EditMask:= '!90:00;1;_';
end;

procedure TFRAtendimento.DBEdit7Exit(Sender: TObject);
begin
  if IBTable1.FieldByName('Hora Abertura Chamada').IsNull then
begin
      Application.MessageBox('Favor verificar o campo Hora Abertura Chamada, pos ele e preenchid automáticamente, quando você pressiona a botão Novo!', 'Aviso',
      mb_IconError + mb_Ok);
      DBEdit7.SetFocus;
      Abort;
end;

end;

procedure TFRAtendimento.DBEdit8Enter(Sender: TObject);
begin
  DBEdit8.Field.EditMask:= '!90:00;1;_';
end;

procedure TFRAtendimento.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if IBTable1.FieldByName('STATUS').Value='4' then
  begin
    DBGrid1.Canvas.Brush.Color:=clMenu;
    DbGrid1.Canvas.Font.Color := clRed;
  end
  else
  if IBTable1.FieldByName('STATUS').Value='3' then
  begin
    DBGrid1.Canvas.Brush.Color:=clMenu;
    DbGrid1.Canvas.Font.Color := clBlue;
  end
  else
  if IBTable1.FieldByName('STATUS').Value='2' then
  begin
    DBGrid1.Canvas.Brush.Color:=clMenu;
    DbGrid1.Canvas.Font.Color := clGreen;
  end
  else
  if IBTable1.FieldByName('STATUS').Value='1' then
  begin
    DBGrid1.Canvas.Brush.Color:=clMenu;
    DbGrid1.Canvas.Font.Color := clpurple;
  end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure TFRAtendimento.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var
  Pesquisa : String;

begin
  if key = #13 then

begin
if InputQuery('Pesquisar por: ' + TDBGrid(Sender).Columns[TDBGrid(Sender).SelectedIndex].FieldName, 'Digite o conteúdo a Pesquisar', Pesquisa) then
begin
  TDBGrid(Sender).DataSource.DataSet.Filter := '"' + TDBGrid(Sender).Columns[TDBGrid(Sender).SelectedIndex].FieldName + '"' + ' LIKE ' + UpperCase(QuotedStr(Pesquisa + '%'));
  TDBGrid(Sender).DataSource.DataSet.Filtered := True;
end
else
  TDBGrid(Sender).DataSource.DataSet.Filtered := False;

end;

end;

procedure TFRAtendimento.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  mousePt: TGridcoord;
begin
  mousePt := DbGrid1.MouseCoord(x,y);
  if mousePt.y = 0 then
    Screen.Cursor := crHandPoint
  else
    Screen.Cursor := crDefault;

end;

procedure TFRAtendimento.DBGrid1TitleClick(Column: TColumn);
var
  I: Integer;
begin
  for I := 0 to DBGrid1.Columns.Count - 1 do
    DBGrid1.Columns[i].Title.Font.Style := [];
  if(Column.Field.KeyFields = '') then
    IBTable1.IndexFieldNames:=Column.FieldName
  else
    IBTable1.IndexFieldNames:=Column.Field.KeyFields;
  Column.Title.Font.Style := [fsBold];
end;

procedure TFRAtendimento.DBLookupComboBox1Exit(Sender: TObject);
begin
  if IBTable1.FieldByName('Cliente').IsNull then
begin
      Application.MessageBox('Favor preencher o campo Cliente!', 'Aviso',
      mb_IconError + mb_Ok);
      DBLookupComboBox1.SetFocus;
      Abort;
end;

end;

procedure TFRAtendimento.DBLookupComboBox2Exit(Sender: TObject);
begin
  if IBTable1.FieldByName('Tipo Atendimento').IsNull then
begin
      Application.MessageBox('Favor preencher o campo Tipo Atendiemtno!', 'Aviso',
      mb_IconError + mb_Ok);
      DBLookUpComboBox2.SetFocus;
      Abort;
end;

end;
procedure TFRAtendimento.DBLookupComboBox3Exit(Sender: TObject);
begin
  if IBTable1.FieldByName('Contrato ou Atendimento').IsNull then
begin
      Application.MessageBox('Favor preencher o campo apos Tipo Atendiemtno!', 'Aviso',
      mb_IconError + mb_Ok);
      DBLookUpComboBox3.SetFocus;
      Abort;
end;

end;

procedure TFRAtendimento.DBLookupComboBox4Exit(Sender: TObject);
begin
  if IBTable1.FieldByName('STATUS').IsNull then
begin
      Application.MessageBox('Favor preencher o campo Status', 'Aviso',
      mb_IconError + mb_Ok);
      DBLookUpComboBOx4.SetFocus;
      Abort;
end;

end;
procedure TFRAtendimento.DBMemo1Enter(Sender: TObject);
begin
  if IBTable1.FieldByName('PROBLEMA/ERRO').IsNull then
begin
      Application.MessageBox('Favor cadastar e/ou selecionar um erro na proxima tela!', 'Aviso',
      mb_IconError + mb_Ok);
      DBMemo1.SetFocus;
      Abort;
end;
end;

procedure TFRAtendimento.DBMemo2Exit(Sender: TObject);
begin
  if IBTable1.FieldByName('SOLUCAO').IsNull then
begin
      Application.MessageBox('Favor preencher o campo Solução!', 'Aviso',
      mb_IconError + mb_Ok);
      DBMemo2.SetFocus;
      Abort;
end;

end;
procedure TFRAtendimento.Desfazer1Click(Sender: TObject);
begin
  IBTable1.Cancel;
  ShowMessage ('Cadastro de Novo Atendimento cancelado.');
end;

procedure TFRAtendimento.EmAndamento1Click(Sender: TObject);
begin
   IBTable1.Filter := 'STATUS = 2';
   IBTable1.Filtered := True;
end;

procedure TFRAtendimento.ExcluirNovoCadastro1Click(Sender: TObject);
begin
  If Application.MessageBox('Confirma Exclusão ?','Cuidado !!!',MB_YESNO +
                           MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES Then
  IBTable1.Delete;
end;

procedure TFRAtendimento.Finalizado1Click(Sender: TObject);
begin
  IBTable1.Filter := 'STATUS = 4';
  IBTable1.Filtered := True;
end;

procedure TFRAtendimento.FormCreate(Sender: TObject);
begin
  IBTable1.Open;
  IBTable1.Last;
  IBTable2.Open;
  IBTable2.Last;
  IBTable3.Open;
  IBTable3.Last;
  IBTable4.Open;
  IBTable4.Last;
  IBTable5.Open;
  IBTable5.Last;



end;

procedure TFRAtendimento.IBTable2AfterOpen(DataSet: TDataSet);
begin
 DataSet.Refresh;
end;

procedure TFRAtendimento.NovoCadastro1Click(Sender: TObject);

  var
  NOVO: integer;

begin
 IBTable1.Last;
  NOVO:=IBTable1.FieldByName ('CODIGO ATENDIMENTO').AsInteger+1;
  IBTable1.Append;
  IBTable1.FieldByName('CODIGO ATENDIMENTO').AsInteger:=NOVO;
  DBEdit10.Text:=datetostr(now);
  DBEdit7.Text:=timetostr(now);
  IBTable1.Insert;
  ShowMessage ('Os campo com fundo amarelo, são de preenchimento obrigatório!');
  DBEdit2.SetFocus;
end;

procedure TFRAtendimento.ProximoCliente1Click(Sender: TObject);
begin
  IBTable1.Next;
end;

procedure TFRAtendimento.Retornar1Click(Sender: TObject);
begin
  IBTable1.Filter := 'STATUS = 3';
  IBTable1.Filtered := True;
end;

procedure TFRAtendimento.Sair1Click(Sender: TObject);
begin
  CLOSE;
end;

procedure TFRAtendimento.SalvarCliente1Click(Sender: TObject);

  var
 NOVO : integer;
begin
 IBTable1.Post;
 ShowMessage ('Atendimento Cadastrado com Sucesso.');
end;

end.
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

linha 287, cole isso e teste:

DBEdit12.DataSource.DataSet.FieldByName(DBEdit12.DataField).AsInteger := qtdeDias;
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Bom dia Amigo, deu o seguinte erro:
Not in edit mode.

Obrigado e tenha um bom dia.
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

o DataSet ligado ao DBEdit12 é o IBTable1? se for esse erro é meio estranho, pq vc abre esse dataset para edição no botão novo.
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

Esta sim. Não teria que colocar IBTable1.Edit;? Mas em qual sequencia do codigo?
GOSTEI 0
Alan Souza

Alan Souza

17/06/2013

não, o Append ou Insert era pra ser o suficiente...
GOSTEI 0
Felipe Arruda

Felipe Arruda

17/06/2013

O que fazer então, qual sua sugestão? Não sera a ordem do codigo que esta influenciando?
GOSTEI 0
POSTAR