Escolar Documentos
Profissional Documentos
Cultura Documentos
AGRADECIMENTOS
A Deus que me deu o dom da vida e que se fez presente em todos
os momentos difceis, da minha caminhada e sempre estar comigo.
A meus pais, Leoncio da Silva, meu grande pai (In memorian) a
minha Me obrigada por tudo que fez por mim desde o momento que soube que
estava grvida, da ento aconteceu o nascimento e com o passar do tempo me
educou, formou com personalidade, carter e moral, nessa to linda escola da vida,
onde a senhora era a professora. Se no fosse voc, mulher guerreira, batalhadora,
que sempre esteve ao meu lado, quando mais precisei, que fazia carinho, quando eu
sentia qualquer tipo de dor, o que seria de mim, to pequena e indefesa. Essa
pessoa distinta e maravilhosa chama-se Julieta minha linda me. Te amarei para
sempre, mesmo quando deixares de existir um dia.
Ao meu namorado pelas ajudas, compreenso, respeito, pacincia.
Obrigada amor.
Agradeo a todos da famlia UNOPAR de Londrina-PR, tutores
eletrnicos, professores, coordenao, suporte, em fim, todos que trabalham e se
dedicam na tarefa de diminuir a distncia da busca pelo saber.
Aos tutores de sala, que fizeram parte da minha luta, transmitindo,
orientando ajudando a compreender os assuntos do Curso de Tecnologia em Anlise
e Desenvolvimento de Sistemas, Emerson e Mises sempre atenciosos,
esclarecendo dvidas quando possvel.
Aos meus amigos de trabalho, Sanny, Mnica, Nilvan, Elizngela,
Ricardo, Deidiane, Lucas, Z Paulo, Felisberto, pessoas com quem eu tenho o
prazer e a alegria de trabalhar .
Ao meu colega Erick por me ajudar, muito obrigada,
A todos os meus sinceros agradecimentos.
"A Era
da
Informao
oferece
muito
elevaremos
apresenta.
Mas
aos
desafios
vital
lembrar
que
que
ela
a
que
conhecimento
no
RESUMO
ABSTRACT
The technology allows access to a wealth of information, however the schools do not
exploit the full potential that technology can offer, thinking it was this reality that the
present paper shows the importance of using information technology in management,
specifically, the Registrar and pedagogical management of the Centro Lar Mariano,
reporting on its operation, which aims to deploy a software management, showing
the difficulties in performing the tasks and presenting a proposal for an automated
system for improving these activities through a software developed based on
perceived needs, aims to structure the information as the basis for a new way of
organizing data and allowing the expansion of capacity for understanding and solving
the possible problems existing in the institution in the administrative and pedagogical.
Keywords: Technology. Management. Software. School. Information
SUMRIO
1 INTRODUO.......................................................................................................09
2 JUSTIFICATIVA.....................................................................................................10
3 OBJETIVOS...........................................................................................................12
3.1 GERAL ...............................................................................................................12
3.2 ESPECFICOS....................................................................................................12
4 REFERENCIAL TERICO....................................................................................13
4.1 NOVAS TECNOLOGIAS NO AUXILIO DA GESTO ESCOLAR.......................13
4.2 NO MBITO ADMINISTRATIVO E PEDAGGICO...........................................14
5 METODOLOGIA....................................................................................................17
5.1 PERSPECTIVA DO ESTUDO..................................................................17
5.2 DELIMITAO DO ESTUDO..................................................................17
5.3 TCNICA, ANLISE E INTERPRETAO DE DADOS..............................17
5.4 LIMITAES DO ESTUDO....................................................................17
6 CARACTERIZAO DA ORGANIZAO EM ESTUDO....................................18
7 TECNOLOGIA.......................................................................................................20
8 LEVANTAMENTO DE REQUISITOS....................................................................21
8.1 ANLISE DO SISTEMA ATUAL..........................................................................21
8.2 DESCRIO DO SISTEMA PROPOSTO..........................................................21
9 DIAGRAMAS.........................................................................................................22
9.1 DIAGRAMA DE CASO DE USO.........................................................................22
9.2 DIAGRAMA DE CLASSE....................................................................................23
9.3 DIAGRAMA DE SEQUENCIA.............................................................................24
9.4 DIAGRAMA DE ATIVIDADE...............................................................................25
9.5 DIAGRAMA DE ENTIDADE RELACIONAMENTO.............................................27
10 TELAS.................................................................................................................29
11 CDIGO FONTE.................................................................................................39
12 CRONOGRAMA..................................................................................................77
13 CONCLUSO......................................................................................................78
REFERNCIAS BIBLIOGRFICAS........................................................................79
1 INTRODUO
O estgio foi realizado na empresa Mario Rodrigues de Paes EPP
Status modas, com objetivo de identificar os processos ou servios que so
efetuados de forma computadorizada, mas que poderiam ser melhorados, atravs
de uma soluo informatizada que possa dar maior rapidez e controle nas vendas.
O desenvolvimento de um software ajudar no processo de
crescimento intelectual da empresa despertando a sua curiosidade e compreenso
do contedo, desenvolver um mtodo para melhor atendimento ao cliente,
permitindo que os funcionrios transmita de uma forma muito simples o controle de
vendas.
2 JUSTIFICATIVA
O projeto de fundamental importncia para o desenvolvimento
prtico do futuro profissional de anlise e desenvolvimento de sistemas,
principalmente pela oportunidade de aplicar em um processo prtico, todos os
conhecimentos obtidos ao longo do Curso Superior em Anlise de Desenvolvimento
de Sistemas, podendo analisar de perto um problema real e buscar as solues para
esse problema.
Segundo Tanaka (2009, p. 1),
O papel do analista atualmente no o de apenas ser um especialista nas
reas tecnolgicas e recursos tecnolgicos para a soluo de problemas,
mais importante que isso, o analista deve possuir uma viso diferenciada
em relao da sua equipe, pois a ele cabe a completa identificao e
compreenso das necessidades que deram origem ao novo projeto
(tambm chamadas requisitos), assim como anlise das oportunidades que
este projeto poder prover.
3 OBJETIVOS
3.1 OBJETIVO GERAL
Desenvolver um software voltado para a empresa no setor de
vendas que auxilie o profissional a utilizando as ferramentas computacionais.
4 REFERENCIAL TERICO
4.1 TECNOLOGIAS NO AUXLIO DA VENDA
Pensar num ambiente escolar hoje pensar no gestor, professores,
funcionrios e alunos como uma equipe de trabalho em prol do processo ensinoaprendizagem. As concepes de direo e organizao de estruturas educacionais
mudaram, no h mais lugar para o autoritarismo e o distanciamento das questes
burocrticas das pedaggicas.
Atualmente o diretor, tornou-se um gestor, um agente essencial para
o bom xito da aprendizagem, o ato de gerenciar refletir, agir coletivamente de
forma participativa com toda sua equipe de trabalho, de modo, que cada professor,
funcionrio e aluno se perceba como pea fundamental dentro da Unidade Escolar e
principalmente dentro da Sociedade para que assim, a verdadeira educao se
concretize.
De acordo com Priolli (2008), o gestor:
[...] deve, cotidianamente, dar conta de diferentes gestes: do espao, dos
recursos financeiros, de questes legais, da interao com a comunidade do
entorno e com a Secretaria da Educao e das relaes interpessoais (com
funcionrios, professores, famlias). Tudo isso, com um objetivo maior, que,
se no novo, ganhou uma importncia que parecia um pouco esquecida
nos ltimos tempos, a aprendizagem dos alunos. ( p. 6)
8
[...] as TICs podem ser incorporadas na escola como suporte para:
comunicao entre os educadores, pais, especialistas, membros da
comunidade e de outras organizaes; desenvolvimento de um banco de
dados gerado na escola que d subsdios para a tomada de decises;
criao de um fluxo de informaes e troca de experincias que realimente
as prticas; realizao de atividades colaborativas que visam a enfrentar os
problemas da realidade; desenvolvimento de projetos relacionados com a
gesto administrativa e pedaggica; representao do conhecimento em
construo pelos alunos e respectivas aprendizagem etc. (ALMEIDA, 2003,
p. 115)
10
5 METODOLOGIA
5.1. PERSPECTIVA DO ESTUDO
O presente trabalho foi elaborado com base em pesquisa
documental, exploratria, qualitativa e descritiva, obtendo dados primrios, que
foram coletados por meio de conversas informais e entrevistas com os funcionrios
envolvidos tendo, como foco, a investigao dos problemas existentes dentro do
setor administrativo da empresa.
5.2. DELIMITAO DO ESTUDO
O estudo foi realizado na Empresa Mario Rodrigues de Paes EPP
Status moda, que uma empresa que oferece roupas de moda, localizada em Feira
de Santana.
5.3. TCNICA, ANLISE E INTERPRETAO DE DADOS
A partir das respostas obtidas pelas pessoas envolvidas nesta
pesquisa, pretendeu-se desenvolver um prottipo de um software que iria
estabelecer uma uniformidade na qualidade da informao, atendendo as
necessidades do setor e resultando conseqentemente em um melhor desempenho
da empresa, garantindo intervenes rpidas e eficientes para solucionar os
problemas.
5.4. LIMITAES DO ESTUDO
No houve dificuldade na coleta de dados, o questionrio utilizado
na obteno das informaes foi aplicado de forma espontnea, houve apenas o
acrscimo de algumas perguntas que no estavam previamente elaboradas, porm
foram respondidas de forma adequada garantindo uma boa qualidade na
investigao.
11
12
7 TECNOLOGIA
O software ser desenvolvido em Delphi especificamente o Delphi
XE que uma interface de desenvolvimento de software, atualmente o Delphi
produzido pela Embarcadeiro, utiliza uma linguagem orientada a objeto facilitando o
desenvolvimento de aplicativos em desktop, aplicao multicamada, cliente/servidor
e compatvel com a maioria dos bancos de dados do mercado. O Delphi permite
desenvolvimento de aplicaes para plataforma Windows, possui um ambiente de
desenvolvimento fcil de usar, com uma grande biblioteca de componentes visuais:
botes, grficos, caixa de dilogos, tabelas de banco de dados e as principais
13
8 LEVANTAMENTO DE REQUISITOS
8.1 ANLISE DO SISTEMA ATUAL
As necessidades da empresa e basicamente o controle de vendas.
Apartir destes requisito bsicos, se montou a estrutura bsica do software.
E uma empresa com grande movimentao de vendas de roupas de
festa que se tem a necessidade de criar um software para controle de roupas.
Todo o software deve seguir a riscar fazendo vrios testes antes de
mandar para o setor especfico, um dos fatos mais importantes a ser seguidos.
14
15
DIAGRAMA DE CLASSES
16
DIAGRAMA DE SEQUENCIA
17
DIAGRAMA DE ATIVIDADE
18
19
TELAS
20
21
22
23
24
Tela Principal:
unit Principal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, ImgList, PlatformDefaultStyleActnCtrls, ActnMan, Menus,
ToolWin, ActnCtrls, ActnMenus, CustomizeDlg, jpeg, ExtCtrls, ActnColorMaps,
Ribbon, RibbonLunaStyleActnCtrls, RibbonActnMenus, StdCtrls, shellapi;
type
TfrmPrincipal = class(TForm)
Acoes: TActionManager;
Imagens: TImageList;
Ac_cliente: TAction;
Ac_produto: TAction;
Ac_funcionario: TAction;
Ac_sair: TAction;
ac_PDV: TAction;
ac_lista_cliente: TAction;
ac_vendas_por_dia: TAction;
ac_notepad: TAction;
ac_calculadora: TAction;
ac_internet: TAction;
ac_logoff: TAction;
ac_perfil: TAction;
ac_help: TAction;
ac_sobresistema: TAction;
Image1: TImage;
ac_Consult_Pedido: TAction;
Ribbon1: TRibbon;
RibbonPage1: TRibbonPage;
RibbonGroup1: TRibbonGroup;
RibbonApplicationMenuBar1: TRibbonApplicationMenuBar;
ac_evento: TAction;
RibbonPage6: TRibbonPage;
RibbonGroup6: TRibbonGroup;
RibbonGroup2: TRibbonGroup;
RibbonGroup5: TRibbonGroup;
procedure Ac_clienteExecute(Sender: TObject);
procedure Ac_produtoExecute(Sender: TObject);
procedure Ac_funcionarioExecute(Sender: TObject);
procedure ac_eventoExecute(Sender: TObject);
procedure ac_PDVExecute(Sender: TObject);
procedure ac_notepadExecute(Sender: TObject);
procedure ac_calculadoraExecute(Sender: TObject);
procedure ac_internetExecute(Sender: TObject);
25
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmPrincipal: TfrmPrincipal;
implementation
uses UdmPrincipal, ufrmModelo, Cadastro_Clientes, UfrmCadCliente,
UfrmCadProduto, UfrmCadFuncionario, UdmFuncionario, UfrmCadEvento,
UfrmCadVenda, frm_teste;
{$R *.dfm}
procedure TfrmPrincipal.ac_calculadoraExecute(Sender: TObject);
begin
shellexecute(handle, 'open', 'calc.exe', '', nil,sw_shownormal);//exibe a calculadora
end;
procedure TfrmPrincipal.Ac_clienteExecute(Sender: TObject);
begin
try
frmCadCliente:=TfrmCadCliente.create(self);
frmCadCliente.ShowModal;
finally
freeAndNil(frmCadCliente);
end;
end;
procedure TfrmPrincipal.ac_eventoExecute(Sender: TObject);
begin
try
frmCadEvento:=TfrmCadEvento.create(self);
frmCadEvento.ShowModal;
finally
freeAndNil(frmCadEvento);
end
end;
procedure TfrmPrincipal.Ac_funcionarioExecute(Sender: TObject);
begin
try
frmCadFuncionario:=TfrmCadFuncionario.create(self);
frmCadFuncionario.ShowModal;
finally
freeAndNil(frmCadFuncionario);
end
26
end;
procedure TfrmPrincipal.ac_internetExecute(Sender: TObject);
begin
shellexecute(handle, 'open', 'iexplore.exe', '', nil,sw_shownormal);//exibe a internet
end;
procedure TfrmPrincipal.ac_notepadExecute(Sender: TObject);
begin
shellexecute(handle, 'open', 'notepad.exe', '', nil,sw_shownormal);//exibe o bloco de
notas
end;
procedure TfrmPrincipal.ac_PDVExecute(Sender: TObject);
begin
try
frmCadVenda:=TfrmCadVenda.create(self);
frmCadVenda.ShowModal;
finally
freeAndNil(frmCadVenda);
end
end;
procedure TfrmPrincipal.Ac_produtoExecute(Sender: TObject);
begin
try
frmCadProduto:=TfrmCadProduto.create(self);
frmCadProduto.ShowModal;
finally
freeAndNil(frmCadProduto);
end
end;
end.
27
unit UdmPrincipal;
interface
uses
SysUtils, Classes, DBXMSSQL, DB, DBClient, Provider, SqlExpr, FMTBcd;
type
TdmPrincipal = class(TDataModule)
SQLConnection1: TSQLConnection;
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmPrincipal: TdmPrincipal;
implementation
{$R *.dfm}
end.
Tela de Cadastro de Clientes
unit UfrmCadCliente;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, UfrmModelo, DBActns, ActnList, DB, ImgList, StdCtrls, Buttons,
ExtCtrls, Mask, DBCtrls;
type
TfrmCadCliente = class(TfrmModelo)
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
28
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
DBEdit8: TDBEdit;
Label9: TLabel;
DBEdit9: TDBEdit;
Label10: TLabel;
DBEdit10: TDBEdit;
Label11: TLabel;
DBEdit11: TDBEdit;
Label12: TLabel;
DBEdit12: TDBEdit;
procedure FormCreate(Sender: TObject);
procedure ac_pesquisarExecute(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmCadCliente: TfrmCadCliente;
implementation
uses UdmCliente, UfrmPesquisa;
{$R *.dfm}
procedure TfrmCadCliente.ac_pesquisarExecute(Sender: TObject);
begin
inherited;
try
frmPesquisa:=TfrmPesquisa.Create(self);
frmPesquisa.Dts.DataSet:=dmCliente.cdsPesqCliente;
frmPesquisa.ShowModal;
finally
With dmcliente.cdsCadCliente do
begin
Close;
FetchParams;
29
Params.ParamByName('pID').AsInteger:= dmCliente.cdsPesqClienteID.AsInteger;
Open;
end;
freeAndNil(frmPesquisa);
end;
end;
procedure TfrmCadCliente.Button1Click(Sender: TObject);
begin
inherited;
dmcliente.cdsCadCliente.Next;
end;
procedure TfrmCadCliente.Button2Click(Sender: TObject);
begin
inherited;
dmcliente.cdsCadCliente.last;
end;
procedure TfrmCadCliente.FormCreate(Sender: TObject);
begin
inherited;
dmCliente:=TdmCliente.Create(self);
dmCliente.cdsCadCliente.Open;
end;
end.
Tela de DataModule referente a Tela de Cadastro de Cliente
unit UdmCliente;
interface
uses
SysUtils, Classes, FMTBcd, DB, DBClient, Provider, SqlExpr;
type
Tdmcliente = class(TDataModule)
sdsCadCliente: TSQLDataSet;
dspCadCliente: TDataSetProvider;
cdsCadCliente: TClientDataSet;
cdsCadClienteNOME: TStringField;
cdsCadClienteRAZAO_SOCIAL: TStringField;
cdsCadClienteTIPO_PESSOA: TStringField;
cdsCadClienteCNPJ: TStringField;
cdsCadClienteCPF: TStringField;
cdsCadClienteEMAIL: TStringField;
cdsCadClienteENDERECO: TStringField;
30
cdsCadClienteCIDADE: TStringField;
cdsCadClienteBAIRRO: TStringField;
cdsCadClienteESTADO: TStringField;
cdsCadClienteTELEFONE: TStringField;
cdsCadClienteCEP: TStringField;
sdsPesqCliente: TSQLDataSet;
dspPesqCliente: TDataSetProvider;
cdsPesqCliente: TClientDataSet;
sdsPesqClienteID: TIntegerField;
sdsPesqClienteNOME: TStringField;
sdsPesqClienteRAZAO_SOCIAL: TStringField;
sdsPesqClienteTIPO_PESSOA: TStringField;
sdsPesqClienteCNPJ: TStringField;
sdsPesqClienteCPF: TStringField;
sdsPesqClienteEMAIL: TStringField;
sdsPesqClienteENDERECO: TStringField;
sdsPesqClienteCIDADE: TStringField;
sdsPesqClienteBAIRRO: TStringField;
sdsPesqClienteESTADO: TStringField;
sdsPesqClienteTELEFONE: TStringField;
sdsPesqClienteCEP: TStringField;
cdsPesqClienteID: TIntegerField;
cdsPesqClienteNOME: TStringField;
cdsPesqClienteRAZAO_SOCIAL: TStringField;
cdsPesqClienteTIPO_PESSOA: TStringField;
cdsPesqClienteCNPJ: TStringField;
cdsPesqClienteCPF: TStringField;
cdsPesqClienteEMAIL: TStringField;
cdsPesqClienteENDERECO: TStringField;
cdsPesqClienteCIDADE: TStringField;
cdsPesqClienteBAIRRO: TStringField;
cdsPesqClienteESTADO: TStringField;
cdsPesqClienteTELEFONE: TStringField;
cdsPesqClienteCEP: TStringField;
procedure cdsCadClienteBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsPesqClienteBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmcliente: Tdmcliente;
implementation
uses UdmPrincipal;
31
{$R *.dfm}
procedure Tdmcliente.cdsCadClienteBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure Tdmcliente.cdsPesqClienteBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
end.
Tela de Cadastro de Funcionrios
unit UfrmCadFuncionario;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, UfrmModelo, DBActns, ActnList, DB, ImgList, StdCtrls, Buttons,
ExtCtrls, Mask, DBCtrls;
type
TfrmCadFuncionario = class(TfrmModelo)
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
DBEdit8: TDBEdit;
Label9: TLabel;
DBEdit9: TDBEdit;
Label10: TLabel;
DBEdit10: TDBEdit;
Label11: TLabel;
DBEdit11: TDBEdit;
32
unit UdmFuncionario;
interface
uses
SysUtils, Classes, FMTBcd, DB, DBClient, Provider, SqlExpr;
type
TdmFuncionario = class(TDataModule)
sdsCadFuncionario: TSQLDataSet;
dspCadFuncionario: TDataSetProvider;
cdsCadFuncionario: TClientDataSet;
sdsPesqFuncionario: TSQLDataSet;
dspPesqFuncionario: TDataSetProvider;
cdsPesqFuncionario: TClientDataSet;
cdsCadFuncionarioNOME: TStringField;
cdsCadFuncionarioCPF: TStringField;
cdsCadFuncionarioEMAIL: TStringField;
cdsCadFuncionarioSETOR: TStringField;
cdsCadFuncionarioENDERECO: TStringField;
cdsCadFuncionarioCIDADE: TStringField;
cdsCadFuncionarioESTADO: TStringField;
33
cdsCadFuncionarioTELEFONE: TStringField;
cdsCadFuncionarioBAIRRO: TStringField;
cdsCadFuncionarioCEP: TStringField;
sdsPesqFuncionarioID: TIntegerField;
sdsPesqFuncionarioNOME: TStringField;
sdsPesqFuncionarioCPF: TStringField;
sdsPesqFuncionarioEMAIL: TStringField;
sdsPesqFuncionarioSETOR: TStringField;
sdsPesqFuncionarioENDERECO: TStringField;
sdsPesqFuncionarioCIDADE: TStringField;
sdsPesqFuncionarioESTADO: TStringField;
sdsPesqFuncionarioTELEFONE: TStringField;
sdsPesqFuncionarioBAIRRO: TStringField;
sdsPesqFuncionarioCEP: TStringField;
cdsPesqFuncionarioID: TIntegerField;
cdsPesqFuncionarioNOME: TStringField;
cdsPesqFuncionarioCPF: TStringField;
cdsPesqFuncionarioEMAIL: TStringField;
cdsPesqFuncionarioSETOR: TStringField;
cdsPesqFuncionarioENDERECO: TStringField;
cdsPesqFuncionarioCIDADE: TStringField;
cdsPesqFuncionarioESTADO: TStringField;
cdsPesqFuncionarioTELEFONE: TStringField;
cdsPesqFuncionarioBAIRRO: TStringField;
cdsPesqFuncionarioCEP: TStringField;
procedure cdsCadFuncionarioBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsPesqFuncionarioBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmFuncionario: TdmFuncionario;
implementation
uses UdmPrincipal;
{$R *.dfm}
procedure
TdmFuncionario.cdsCadFuncionarioBeforeApplyUpdates(Sender:
TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
34
procedure
TdmFuncionario.cdsPesqFuncionarioBeforeApplyUpdates(Sender:
TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
end.
unit UfrmCadProduto;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, UfrmModelo, DBActns, ActnList, DB, ImgList, StdCtrls, Buttons,
ExtCtrls, Mask, DBCtrls;
type
TfrmCadProduto = class(TfrmModelo)
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
DBEdit8: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmCadProduto: TfrmCadProduto;
35
implementation
uses UdmProduto, Cadastro_Produtos;
{$R *.dfm}
procedure TfrmCadProduto.FormCreate(Sender: TObject);
begin
inherited;
dmProduto:=TdmProduto.Create(self);
dmProduto.cdsCadProduto.Open;
end;
end.
DataModule de Cadastro de Produto
unit UdmProduto;
interface
uses
SysUtils, Classes, FMTBcd, DB, DBClient, Provider, SqlExpr;
type
TdmProduto = class(TDataModule)
sdsCadProduto: TSQLDataSet;
dspCadProduto: TDataSetProvider;
cdsCadProduto: TClientDataSet;
sdsPesqProduto: TSQLDataSet;
dspPesqProduto: TDataSetProvider;
cdsPesqProduto: TClientDataSet;
cdsCadProdutoPRODUTO: TStringField;
cdsCadProdutoREFERENCIA: TStringField;
cdsCadProdutoTIPO_PRODUTO: TStringField;
cdsCadProdutoCOR: TStringField;
cdsCadProdutoDATA_CADASTRO: TSQLTimeStampField;
sdsPesqProdutoId: TIntegerField;
sdsPesqProdutoPRODUTO: TStringField;
sdsPesqProdutoREFERENCIA: TStringField;
sdsPesqProdutoTIPO_PRODUTO: TStringField;
sdsPesqProdutoCOR: TStringField;
sdsPesqProdutoDATA_CADASTRO: TSQLTimeStampField;
sdsPesqProdutoPRECO: TFMTBCDField;
sdsPesqProdutoQUANTIDADE: TIntegerField;
cdsPesqProdutoId: TIntegerField;
cdsPesqProdutoPRODUTO: TStringField;
cdsPesqProdutoREFERENCIA: TStringField;
36
cdsPesqProdutoTIPO_PRODUTO: TStringField;
cdsPesqProdutoCOR: TStringField;
cdsPesqProdutoDATA_CADASTRO: TSQLTimeStampField;
cdsPesqProdutoPRECO: TFMTBCDField;
cdsPesqProdutoQUANTIDADE: TIntegerField;
cdsCadProdutoPRECO: TFloatField;
cdsCadProdutoQUANTIDADE: TFloatField;
procedure cdsCadProdutoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsPesqProdutoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmProduto: TdmProduto;
implementation
uses UdmPrincipal;
{$R *.dfm}
procedure TdmProduto.cdsCadProdutoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure TdmProduto.cdsPesqProdutoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
end.
Tela de Cadastro de Evento
unit UfrmCadEvento;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, UfrmModelo, DBActns, ActnList, DB, ImgList, StdCtrls, Buttons,
37
38
39
{$R *.dfm}
procedure TdmEvento.cdsCadClienteBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure TdmEvento.cdsCadEventoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
end.
Tela de Pedido de Venda
unit UfrmCadVenda;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, ExtCtrls, StdCtrls, Mask, DBCtrls, Buttons,
ComCtrls;
type
TfrmCadVenda = class(TForm)
PageControl2: TPageControl;
tsPedido: TTabSheet;
tsPesquisa: TTabSheet;
dsProduto: TDataSource;
dtsItens: TDataSource;
DBGrid1: TDBGrid;
ComboBox1: TComboBox;
Label12: TLabel;
Button2: TButton;
Edit1: TEdit;
DataSource2: TDataSource;
tsPesqCliente: TTabSheet;
tsPesqFuncionario: TTabSheet;
tsPesqEvento: TTabSheet;
Label9: TLabel;
ComboBox2: TComboBox;
Edit5: TEdit;
DBGrid2: TDBGrid;
Button1: TButton;
Label11: TLabel;
40
ComboBox4: TComboBox;
Edit7: TEdit;
DBGrid4: TDBGrid;
Label13: TLabel;
ComboBox5: TComboBox;
Edit8: TEdit;
DBGrid5: TDBGrid;
Button4: TButton;
Button5: TButton;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button3: TButton;
Label1: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
btnNovo: TButton;
Label2: TLabel;
DBEdit1: TDBEdit;
DataSource3: TDataSource;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
SpeedButton3: TSpeedButton;
Label6: TLabel;
DBEdit3: TDBEdit;
Label7: TLabel;
DBEdit4: TDBEdit;
Label8: TLabel;
DBEdit5: TDBEdit;
btnGravar: TButton;
dtp_data: TDateTimePicker;
dsFuncionario: TDataSource;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
dsEvento: TDataSource;
DBGrid3: TDBGrid;
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure DBGrid2DblClick(Sender: TObject);
procedure btnNovoClick(Sender: TObject);
procedure btnGravarClick(Sender: TObject);
41
:=
:=
:=
42
dmPedidoVenda.cdsCabecalhoID_LOCAL_EVENTO.Value;
dmPedidoVenda.cdsProcEvento.Open;
Edit4.Text := dmPedidoVenda.cdsProcEventoNOME_EVENTO.Value;
end;
procedure TfrmCadVenda.btnGravarClick(Sender: TObject);
begin
// dmPedidoVenda.cdsItem.Post;
Processa_Dados;
try
if dmPedidoVenda.cdsCabecalho.State in [dsInsert, dsEdit] then
dmPedidoVenda.cdsCabecalho.Post;
if dmPedidoVenda.cdsItem.State in [dsInsert, dsEdit] then
dmPedidoVenda.cdsItem.Post;
Except
On E:exception do begin
if Pos('must have a value',E.Message) > 0 then
ShowMessage( 'Preencha todos os campos' )
else ShowMessage(e.Message);
Exit;
end;
end;
dmPedidoVenda.cdsCabecalho.ApplyUpdates(0);
//ShowMessage(inttostr(dmPedidoVenda.cdsItem.RecordCount));
dmPedidoVenda.cdsItem.ApplyUpdates(0);
btnGravar.Enabled:= false;
btnNovo.Enabled:= true;
end;
procedure TfrmCadVenda.btnNovoClick(Sender: TObject);
begin
dmPedidoVenda.cdsCabecalho.Append;
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
dmPedidoVenda.cdsGen.Open;
dmPedidoVenda.cdsCabecalhoID_VENDA.Value
dmPedidoVenda.cdsGenid.Value;
dmPedidoVenda.cdsGen.Close;
btnNovo.Enabled := false;
btnGravar.Enabled:= true;
:=
end;
procedure TfrmCadVenda.Button1Click(Sender: TObject);
begin
dmPedidoVenda.cdsProcCliente.Close;
case ComboBox2.ItemIndex of
0:dmPedidoVenda.sdsProcCliente.ParamByName('ID').Value := Edit5.Text;
1:dmPedidoVenda.sdsProcCliente.ParamByName('NOME').Value := '%' +
43
Edit5.Text + '%';
2:dmPedidoVenda.sdsProcCliente.ParamByName('CNPJ').Value := '%' +
Edit5.Text + '%';
3:dmPedidoVenda.sdsProcCliente.ParamByName('CPF').Value := '%' +
Edit5.Text + '%';
end;
dmPedidoVenda.cdsProcCliente.Open;
end;
procedure TfrmCadVenda.Button2Click(Sender: TObject);
begin
dmPedidoVenda.cdsProduto.Close;
DBGrid2.ReadOnly := true;
case ComboBox1.ItemIndex of
0:dmPedidoVenda.sdsProduto.ParamByName('ID').Value := Edit1.Text;
1:dmPedidoVenda.sdsProduto.ParamByName('PRODUTO').Value := '%' +
Edit1.Text + '%';
2:dmPedidoVenda.sdsProduto.ParamByName('REFERENCIA').Value := '%' +
Edit1.Text + '%';
end;
dmPedidoVenda.cdsProduto.Open;
end;
procedure TfrmCadVenda.Button3Click(Sender: TObject);
begin
if dmPedidoVenda.cdsItem.State in [dsInsert] then
dmPedidoVenda.cdsItem.Post;
Habilita_ts(tsPedido);
tsPesquisa.Show;
end;
procedure TfrmCadVenda.Button4Click(Sender: TObject);
begin
dmPedidoVenda.cdsProcEvento.Close;
case ComboBox4.ItemIndex of
0:dmPedidoVenda.sdsProcEvento.ParamByName('ID').Value := Edit8.Text;
1:dmPedidoVenda.sdsProcEvento.ParamByName('NOME').Value := '%' +
Edit8.Text + '%';
end;
dmPedidoVenda.cdsProcEvento.Open;
end;
procedure TfrmCadVenda.Button5Click(Sender: TObject);
begin
dmPedidoVenda.cdsProcFuncionario.Close;
case ComboBox4.ItemIndex of
0:dmPedidoVenda.sdsProcFuncionario.ParamByName('ID').Value := Edit7.Text;
1:dmPedidoVenda.sdsProcFuncionario.ParamByName('NOME').Value := '%' +
Edit7.Text + '%';
2:dmPedidoVenda.sdsProcFuncionario.ParamByName('CPF').Value := '%' +
44
Edit7.Text + '%';
end;
dmPedidoVenda.cdsProcFuncionario.Open;
end;
procedure TfrmCadVenda.Button6Click(Sender: TObject);
begin
dmPedidoVenda.cdsCabecalho.Edit;
dmPedidoVenda.cdsItem.Edit;
end;
procedure TfrmCadVenda.Button7Click(Sender: TObject);
begin
dmPedidoVenda.cdsCabecalho.Cancel;
dmPedidoVenda.cdsItem.Cancel;
dmPedidoVenda.cdsItem.Close;
dmPedidoVenda.cdsItem.Open;
btnNovo.Enabled := true;
end;
:=
end;
procedure TfrmCadVenda.Button9Click(Sender: TObject);
begin
dmPedidoVenda.cdsCabecalho.Next;
arruma;
dmPedidoVenda.cdsItem.Close;
dmPedidoVenda.sdsItem.ParamByName('pID_VENDA').Value
dmPedidoVenda.cdsCabecalhoID_VENDA.Value;
dmPedidoVenda.CdsItem.open;
end;
procedure TfrmCadVenda.dbgItensKeyDown(Sender: TObject; var Key: Word;
:=
45
Shift: TShiftState);
begin
case key of
VK_RETURN:Button3.SetFocus;
end;
end;
procedure TfrmCadVenda.DBGrid1DblClick(Sender: TObject);
begin
Habilita_ts(tsPedido);
if not dmPedidoVenda.cdsProduto.IsEmpty then
begin
dmPedidoVenda.cdsItem.Append;
dmPedidoVenda.cdsItemID_PRODUTO.Value:=
dmPedidoVenda.cdsProdutoID.Value;
dmPedidoVenda.cdsItemVL_UNITARIO.Value:=
dmPedidoVenda.cdsProdutoPRECO.Value;
dmPedidoVenda.cdsItemID_VENDA.Value:=
dmPedidoVenda.cdsCabecalhoID_VENDA.Value;
end;
dmPedidoVenda.cdsProduto.Close;
end;
procedure TfrmCadVenda.DBGrid2DblClick(Sender: TObject);
begin
Habilita_ts(tsPedido);
if not dmPedidoVenda.cdsProcCliente.IsEmpty then
begin
dmPedidoVenda.cdsCabecalhoID_CLIENTE.Value:=
dmPedidoVenda.cdsProcClienteID.Value;
Edit2.Text:= dmPedidoVenda.cdsProcClienteNOME.Value;
dmPedidoVenda.cdsProcCliente.Close;
//
DBGrid2.ReadOnly := true;
end;
end;
procedure TfrmCadVenda.DBGrid3ColExit(Sender: TObject);
begin
if dmPedidoVenda.cdsCabecalho.State in [dsInsert, dsEdit] then begin
dmPedidoVenda.cdsCabecalhoCalc_Total.Value:= 0;
//
dmPedidoVenda.cdsItem.First;
while not dmPedidoVenda.cdsItem.Eof do
begin
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
dmPedidoVenda.cdsItemCalc_Total.Value;
dmPedidoVenda.cdsItem.edit;
:=
+
46
dmPedidoVenda.cdsItemTOTAL_ITEM.Value
:=
dmPedidoVenda.cdsItemCalc_Total.Value;
dmPedidoVenda.cdsItem.Next;
end;
dmPedidoVenda.cdsCabecalhoCalc_TotalGeral.Value:=
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
dmPedidoVenda.cdsCabecalhoDESCONTO.Value;
end;
end;
procedure TfrmCadVenda.DBGrid3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
VK_RETURN:Button3.SetFocus;
end;
end;
procedure TfrmCadVenda.DBGrid4DblClick(Sender: TObject);
begin
Habilita_ts(tsPedido);
if not dmPedidoVenda.cdsProcFuncionario.IsEmpty then
begin
dmPedidoVenda.cdsCabecalhoID_FUNCIONARIO.Value:=
dmPedidoVenda.cdsProcFuncionarioID.Value;
Edit3.Text:= dmPedidoVenda.cdsProcFuncionarioNOME.Value;
dmPedidoVenda.cdsProcFuncionario.Close;
end;
end;
procedure TfrmCadVenda.DBGrid5DblClick(Sender: TObject);
begin
Habilita_ts(tsPedido);
if not dmPedidoVenda.cdsProcEvento.IsEmpty then
begin
dmPedidoVenda.cdsCabecalhoID_LOCAL_EVENTO.Value:=
dmPedidoVenda.cdsProcEventoID.Value;
Edit4.Text:= dmPedidoVenda.cdsProcEventoNOME_EVENTO.Value;
dmPedidoVenda.cdsProcEvento.Close;
end;
end;
procedure TfrmCadVenda.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
47
begin
case KEY of
VK_RETURN: Button4.Click;
end;
end;
procedure TfrmCadVenda.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// dmPedidoVenda.cdsItem.close;
end;
procedure TfrmCadVenda.FormCreate(Sender: TObject);
begin
Habilita_ts(tsPedido);
dmPedidoVenda.cdsProduto.Open;
dmPedidoVenda.cdsItem.Open;
dmPedidoVenda.cdsCabecalho.Open;
dtp_data.DateTime := now;
arruma;
end;
procedure TfrmCadVenda.Habilita_ts(ts: TTabSheet);
var count : integer;
begin
ts.TabVisible:= true;
for count := 0 to pred(Self.ComponentCount) do
begin
if self.Components[count].ClassType = TTabSheet then
if (self.Components[count] as TTabSheet).Name <> ts.Name then
(self.Components[count] as TTabSheet).TabVisible := false;
end;
ts.show;
end;
procedure TfrmCadVenda.Processa_Dados;
begin
dmPedidoVenda.cdsCabecalhoDATA.AsDateTime := dtp_data.DateTime;
dmPedidoVenda.cdsCabecalhoVALOR.Value
dmPedidoVenda.cdsCabecalhoCalc_Total.Value;
dmPedidoVenda.cdsCabecalhoVALOR_TOTAL.Value
dmPedidoVenda.cdsCabecalhoCalc_TotalGeral.Value;
end;
procedure TfrmCadVenda.SpeedButton1Click(Sender: TObject);
begin
Habilita_ts(tsPesqCliente);
end;
:=
:=
48
unit UdmPedidoVenda;
interface
uses
SysUtils, Classes, FMTBcd, DBClient, Provider, DB, SqlExpr, DBXMSSQL;
type
TdmPedidoVenda = class(TDataModule)
sdsProduto: TSQLDataSet;
cdsProduto: TClientDataSet;
dspProduto: TDataSetProvider;
cdsProdutoID: TIntegerField;
cdsProdutoPRODUTO: TStringField;
cdsProdutoREFERENCIA: TStringField;
cdsProdutoTIPO_PRODUTO: TStringField;
cdsProdutoCOR: TStringField;
cdsItem: TClientDataSet;
DataSetProvider2: TDataSetProvider;
cdsCabecalho: TClientDataSet;
sdsCabecalho: TSQLDataSet;
dspCabecalho: TDataSetProvider;
sdsCabecalhoID_VENDA: TIntegerField;
sdsCabecalhoID_CLIENTE: TIntegerField;
sdsCabecalhoID_FUNCIONARIO: TIntegerField;
sdsCabecalhoID_LOCAL_EVENTO: TIntegerField;
sdsCabecalhoDATA: TSQLTimeStampField;
cdsCabecalhoID_VENDA: TIntegerField;
cdsCabecalhoID_CLIENTE: TIntegerField;
cdsCabecalhoID_FUNCIONARIO: TIntegerField;
cdsCabecalhoID_LOCAL_EVENTO: TIntegerField;
cdsCabecalhoDATA: TSQLTimeStampField;
cdsGen: TClientDataSet;
sdsGen: TSQLDataSet;
49
dspGen: TDataSetProvider;
sdsGenid: TIntegerField;
cdsGenid: TIntegerField;
sdsProcCliente: TSQLDataSet;
cdsProcCliente: TClientDataSet;
dspProcCliente: TDataSetProvider;
cdsProcClienteID: TIntegerField;
cdsProcClienteNOME: TStringField;
cdsProcClienteCNPJ: TStringField;
cdsProcClienteCPF: TStringField;
cdsProcClienteCidade: TStringField;
cdsProcClienteTelefone: TStringField;
cdsProcClienteEmail: TStringField;
cdsProdutoPRECO: TFloatField;
sdsCabecalhoVALOR: TFloatField;
sdsCabecalhoDESCONTO: TFloatField;
sdsCabecalhoVALOR_TOTAL: TFloatField;
cdsCabecalhoVALOR: TFloatField;
cdsCabecalhoDESCONTO: TFloatField;
cdsCabecalhoVALOR_TOTAL: TFloatField;
cdsItemCalc_Total: TFloatField;
cdsCabecalhoCalc_Total: TFloatField;
cdsCabecalhoCalc_TotalGeral: TFloatField;
dspProcFuncionario: TDataSetProvider;
cdsProcFuncionario: TClientDataSet;
sdsProcFuncionario: TSQLDataSet;
sdsProcEvento: TSQLDataSet;
cdsProcEvento: TClientDataSet;
dspProcEvento: TDataSetProvider;
cdsProcFuncionarioID: TIntegerField;
cdsProcFuncionarioNOME: TStringField;
cdsProcFuncionarioCPF: TStringField;
cdsProcFuncionarioEMAIL: TStringField;
cdsProcFuncionarioSETOR: TStringField;
cdsProcFuncionarioCIDADE: TStringField;
cdsProcFuncionarioTELEFONE: TStringField;
cdsProcEventoID: TIntegerField;
cdsProcEventoNOME_EVENTO: TStringField;
cdsProcEventoDATA_EVENTO: TSQLTimeStampField;
cdsProcEventoENDERECO_EVENTO: TStringField;
cdsProcEventoCIDADE_EVENTO: TStringField;
cdsProcEventoOBS: TMemoField;
sdsItem: TSQLDataSet;
sdsItemID_PRODUTO: TIntegerField;
sdsItemID_VENDA: TIntegerField;
sdsItemQUANTIDADE: TIntegerField;
sdsItemVL_UNITARIO: TFloatField;
sdsItemTOTAL_ITEM: TFloatField;
cdsItemID_PRODUTO: TIntegerField;
cdsItemID_VENDA: TIntegerField;
50
cdsItemQUANTIDADE: TIntegerField;
cdsItemVL_UNITARIO: TFloatField;
cdsItemTOTAL_ITEM: TFloatField;
procedure cdsCadPedidoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsItem_oldBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsItemCalcFields(DataSet: TDataSet);
procedure cdsCabecalhoDESCONTOValidate(Sender: TField);
procedure cdsCabecalhoCalcFields(DataSet: TDataSet);
procedure cdsCabecalhoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsItemBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmPedidoVenda: TdmPedidoVenda;
implementation
uses UdmPrincipal;
{$R *.dfm}
procedure TdmPedidoVenda.cdsCabecalhoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure TdmPedidoVenda.cdsCabecalhoCalcFields(DataSet: TDataSet);
begin
if dmPedidoVenda.cdsCabecalho.State in [dsInsert, dsEdit] then begin
dmPedidoVenda.cdsCabecalhoCalc_Total.Value:= 0;
dmPedidoVenda.cdsItem.First;
while not dmPedidoVenda.cdsItem.Eof do
begin
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
:=
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
+
dmPedidoVenda.cdsItemCalc_Total.Value;
dmPedidoVenda.cdsItem.Next;
end;
dmPedidoVenda.cdsCabecalhoCalc_TotalGeral.Value:=
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
dmPedidoVenda.cdsCabecalhoDESCONTO.Value;
51
end;
end;
procedure TdmPedidoVenda.cdsCabecalhoDESCONTOValidate(Sender: TField);
begin
dmPedidoVenda.cdsCabecalhoCalc_TotalGeral.Value:=
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
dmPedidoVenda.cdsCabecalhoDESCONTO.Value;
end;
procedure TdmPedidoVenda.cdsCadPedidoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
// dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure TdmPedidoVenda.cdsItemBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
// dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure TdmPedidoVenda.cdsItemCalcFields(DataSet: TDataSet);
begin
dmPedidoVenda.cdsItemCalc_Total.asfloat
dmPedidoVenda.cdsItemVL_UNITARIO.asfloat
dmPedidoVenda.cdsItemQUANTIDADE.asfloat;
end;
procedure TdmPedidoVenda.cdsItem_oldBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
// dmPrincipal.SQLConnection1.CloseDataSets;
end;
end.
Tela Modelo que usado como tela de herana para todas as outras
unit UfrmModelo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBActns, ActnList, DB, ImgList, DBClient;
:=
*
52
type
TfrmModelo = class(TForm)
Panel1: TPanel;
btnNovo: TBitBtn;
btnAlterar: TBitBtn;
btnCancelar: TBitBtn;
btnExcluir: TBitBtn;
btnGravar: TBitBtn;
btnPesquisar: TBitBtn;
btnSair: TBitBtn;
ImageList1: TImageList;
DTS: TDataSource;
BalloonHint1: TBalloonHint;
ActionList1: TActionList;
ac_novo: TDataSetInsert;
ac_excluir: TDataSetDelete;
ac_alterar: TDataSetEdit;
ac_gravar: TDataSetPost;
ac_cancelar: TDataSetCancel;
ac_pesquisar: TAction;
ac_sair: TAction;
Button3: TButton;
Button4: TButton;
Ac_voltar: TAction;
ac_avancar: TAction;
procedure ac_novoExecute(Sender: TObject);
procedure ac_alterarExecute(Sender: TObject);
procedure ac_excluirExecute(Sender: TObject);
procedure ac_cancelarExecute(Sender: TObject);
procedure ac_gravarExecute(Sender: TObject);
procedure ac_sairExecute(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Ac_voltarExecute(Sender: TObject);
procedure ac_avancarExecute(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmModelo: TfrmModelo;
implementation
uses UfrmCadCliente, UdmCliente;
{$R *.dfm}
procedure TfrmModelo.ac_alterarExecute(Sender: TObject);
53
begin
DTS.DataSet.Edit;
end;
procedure TfrmModelo.ac_avancarExecute(Sender: TObject);
begin
dts.DataSet.next;
end;
procedure TfrmModelo.ac_cancelarExecute(Sender: TObject);
begin
TClientDataSet(DTS.DataSet).CancelUpdates;
end;
procedure TfrmModelo.ac_excluirExecute(Sender: TObject);
begin
if not DTS.DataSet.IsEmpty then
begin
DTS.DataSet.Delete;
if DTS.DataSet is TClientDataSet then
TClientDataSet(DTS.DataSet).ApplyUpdates(0);
end;
end;
procedure TfrmModelo.ac_gravarExecute(Sender: TObject);
begin
TClientDataSet(DTS.DataSet).ApplyUpdates(0);
end;
procedure TfrmModelo.ac_novoExecute(Sender: TObject);
begin
DTS.DataSet.Append;
end;
procedure TfrmModelo.ac_sairExecute(Sender: TObject);
begin
Close;
end;
procedure TfrmModelo.Ac_voltarExecute(Sender: TObject);
begin
dts.DataSet.Prior;
end;
procedure TfrmModelo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if dts.state in [dsEdit, dsInsert] then
begin
Action:= caNone;
ShowMessage(' necessrio Voc Salvar ou Cancelar. ');
54
frmModelo.SetFocus;
end;
end;
end.
Tela de Login
unit UfrmAcesso;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, pngimage;
type
TfrmAcesso = class(TForm)
Panel1: TPanel;
edtUsuario: TEdit;
edtSenha: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
btnEntrar: TButton;
Image1: TImage;
btnSair: TButton;
procedure btnEntrarClick(Sender: TObject);
private
{ Private declarations }
tentativas: Smallint;
function loginValido(const usuario, senha: String): Boolean;
public
{ Public declarations }
end;
var
frmAcesso: TfrmAcesso;
implementation
uses UdmPrincipal, UdmLogin;
{$R *.dfm}
procedure TfrmAcesso.btnEntrarClick(Sender: TObject);
begin
if (edtUsuario.Text = '') then //Verifica se o campo "Usurio" foi preenchido
55
begin
Messagedlg('O campo "Usurio" deve ser preenchido!', mtInformation, [mbOk], 0);
if edtUsuario.CanFocus then
edtUsuario.SetFocus;
Exit;
end;
if (edtSenha.Text = '') then //Verifica se o campo "Senha" foi preenchido
begin
Messagedlg('O campo "Senha" deve ser preenchido!', mtInformation, [mbOk], 0);
if edtSenha.CanFocus then
edtSenha.SetFocus;
Exit;
end;
if loginValido(edtUsuario.Text, edtSenha.Text) then //Verifica se o login vlido
ModalResult := mrOk
else //Caso o login no seja vlido ento
begin
inc(tentativas); //Incrementa em 1 o valor da varivel tentativas
if tentativas < 3 then
begin
MessageDlg(Format('Tentativa %d de 3', [tentativas]), mtError, [mbOk], 0);
if edtSenha.CanFocus then
edtSenha.SetFocus;
end
else
56
begin
MessageDlg(Format('%d tentativa de acesso ao sistema.',
[tentativas]) + #13 + 'A aplicao ser fechada!', mtError,
[mbOk], 0);
ModalResult := mrCancel;
end;
end;
end;
function TfrmAcesso.loginValido(const usuario, senha: String): Boolean;
begin
with DMPrincipal.SQLConnection1, dmLogin.datasetAux do
begin
if not Connected then //Caso o componente ConLOGIN no esteja conectado ao BD
Connected := True;
Close;
CommandText := 'SELECT COUNT(1) FROM USUARIO ' +
'
WHERE
QuotedStr(AnsiUpperCase(Trim(usuario))) +
UPPER(USU_NOME)
unit UdmLogin;
interface
uses
SysUtils, Classes, FMTBcd, DB, SqlExpr;
'
57
type
TdmLogin = class(TDataModule)
datasetAux: TSQLDataSet;
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmLogin: TdmLogin;
implementation
uses UdmPrincipal;
{$R *.dfm}
end.
Tela de Pesquisa
unit UfrmPesquisa;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, db, Grids, DBGrids, StdCtrls;
type
TfrmPesquisa = class(TForm)
cbbCampos: TComboBox;
Label1: TLabel;
edtPesquisar: TEdit;
Label2: TLabel;
dbgPesquisa: TDBGrid;
dts: TDataSource;
procedure FormShow(Sender: TObject);
procedure edtPesquisarKeyPress(Sender: TObject; var Key: Char);
procedure dbgPesquisaDblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
58
var
frmPesquisa: TfrmPesquisa;
implementation
uses UdmCliente, UdmPrincipal;
{$R *.dfm}
procedure TfrmPesquisa.dbgPesquisaDblClick(Sender: TObject);
begin
close;
end;
procedure TfrmPesquisa.edtPesquisarKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then // #13 o smbolo que representa a tecla Enter
begin
if (cbbCampos.Text <> EmptyStr) and //Verifico se o comboBox foi preenchido
(edtPesquisar.Text <> EmptyStr) then //verifico se o edtPesquisar possue algum
valor
begin
Dts.DataSet.Filter := 'Upper('+cbbCampos.Text+') like '+ //Passo os valores a
pesquisar na propriede Filter
QuotedStr(UpperCase(edtPesquisar.Text)+'%');
Dts.DataSet.Filtered := True; //Ativo a propriedade Fieltered
if not Dts.DataSet.Active then //Se o filtro no estiver ativo, eu apenas abro o
DataSet
Dts.DataSet.Open;
end;
end;
end;
procedure TfrmPesquisa.FormShow(Sender: TObject);
var
I: Integer;
begin
for I := 0 to (Dts.DataSet.FieldCount)-1 do
begin
if Dts.DataSet.Fields[I].DataType in [ftString,ftWideString,ftFixedChar] then
cbbCampos.Items.Add(Dts.DataSet.Fields[I].FieldName);
end;
end;
end.
CRONOGRAMA
59
Jul.
Introduo do Trabalho
Ago. Set.
Out.
Metodologia,
Caractersticas
da
Empresa e Descrio da Tecnologia
Levantamento de Requisitos
Diagramas
Desenvolvimento
(implementao)
da
Nov.
Aplicao
Testes e Validao
Reviso Final
Dez.
60
7 CONCLUSO
61
REFERNCIAS
BERTALANFFY, L. Von. Teoria Geral dos Sistemas. Rio de Janeiro: Ed. Vozes,
1975.
BEZERRA, Eduardo. Princpios de Anlise e Projeto de Sistemas com UML. 2
edio. Rio de Janeiro: Elsevier, 2007.
EMBARCADEIRO
DELPHI
WIKIPEDIA.
Disponvel
<http://pt.wikipedia.org/wiki/Embarcadero_Delphi>. Acesso em: 04 set. 2013.
em:
62
BERTALANFFY, L. Von. Teoria Geral dos Sistemas. Rio de Janeiro: Ed. Vozes,
1975.
BEZERRA, Eduardo. Princpios de Anlise e Projeto de Sistemas com UML. 2
edio. Rio de Janeiro: Elsevier, 2007.
FREITAS, H.e LESCA, H. Competitividade Empresarial na Era da Informao.
Revista de Administrao. So Paulo, v.27, n3, jul/set 1992, p.92-102.
REZENDE, Denis Alcides. Planejamento de Sistemas de Informao e
Informtica. So Paulo: Atlas, 2003.
________, Denis Alcides. Tecnologia da Informao Integrada Inteligncia
Empresarial. So Paulo: Atlas, 2002.