Dimunuir Data e Hora com Resultados
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.
Alguem tem alguma solução.
Obrigado, e desde ja agradeço a todos.
Att, Felipe.
Felipe Arruda
Curtidas 0
Respostas
Felipe Arruda
17/06/2013
Alguem pode me ajudar nesse problema?
GOSTEI 0
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
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.
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
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
17/06/2013
datainicio e datafim, seria os meus DBEdit?
GOSTEI 0
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
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:
2 - No meu DBEdit de horas manual, eu tenho no evento OnEnter e no Evento OnExit:
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.
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
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
17/06/2013
Boa Tarde alanps, ficou do mesmo jeito.
GOSTEI 0
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.
Obrigado, aguardo respostas.
Att, Felipe.
GOSTEI 0
Alan Souza
17/06/2013
tenta atribuir o valor direto no campo, ao invés de inserir no DBEdit13.
no lugar de:
tente:
no lugar de:
DBEdit12.Text := IntToStr(qtdeDias);
tente:
DBEdit12.DataSource.DataSet.FieldByName(DBEdit12.DataField).AsInteger := qtdeDias;
GOSTEI 0
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.
Como ficaria nesse caso?
Obrigado, e tenha um bom dia.
Att, Felipe
DBEdit11.Field.EditMask:= '!99/99/0000;1';
Como ficaria nesse caso?
Obrigado, e tenha um bom dia.
Att, Felipe
GOSTEI 0
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)
(os testes que fiz foram com essa idéia)
GOSTEI 0
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.
Obrigado.
Att, Felipe.
GOSTEI 0
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
17/06/2013
Boa Tarde alanps, ainda continua com erros:
1º - DBEdit10 com data automatica quando clico no botão com o codigo:
O tipo de campo no meu BD e Date
Evento OnEnter com codigo mascara:
2º - DBEdit11 com data manual digitada pelo usuario.
O tipo no meu BD e Date
Evento OnEnter com codigo mascara:
Evento OnExit com codigo:
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".
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
17/06/2013
o campo vinculado ao seu DBEdit11 está incorreto
GOSTEI 0
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
17/06/2013
mas o campo integer deve estar ligado ao DBEdit12, não ao DBEdit11.
GOSTEI 0
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
17/06/2013
Se e o Dbedit12 que esta ligado ao campo integer essa linha do comando esta errada para StrToDate para o DBedit12
Tanto que da o erro is note valid date.
Como converteria data para inteiro?
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
17/06/2013
não seria
?
vDaySpan := DaySpan(StrToDate(DBEdit10.Text), StrToDate(DBEdit11.Text));
?
GOSTEI 0
Felipe Arruda
17/06/2013
1º - DBEdit10 acrescenta data automatica quando clico no Botão Novo, codigo:
Na minha tabela o tipo dele e Date e tambem NotNull.
Object Inspector, Evento OnEnter:
Object Inspector, Evento OnExit:
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:
Object Inspector, Evento OnExit:
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:
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
17/06/2013
linha 287, cole isso e teste:
DBEdit12.DataSource.DataSet.FieldByName(DBEdit12.DataField).AsInteger := qtdeDias;
GOSTEI 0
Felipe Arruda
17/06/2013
Bom dia Amigo, deu o seguinte erro:
Not in edit mode.
Obrigado e tenha um bom dia.
Not in edit mode.
Obrigado e tenha um bom dia.
GOSTEI 0
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
17/06/2013
Esta sim. Não teria que colocar IBTable1.Edit;? Mas em qual sequencia do codigo?
GOSTEI 0
Alan Souza
17/06/2013
não, o Append ou Insert era pra ser o suficiente...
GOSTEI 0
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