projetovendas delphi sql server · wzk: dk s e ^ >w,/ ^y> w p x ï #23(5$'25 ydufkdu...

19
PROJETO VENDAS DELPHI SQL Pág. 1 Script do Banco de Dados: BANCO DE DADOS Createdatabase Vendas TABELAS Createtable Clientes ( Clienteid int primary key identity, Clientenome varchar (150)unique, ClienteCpf Varchar (150), Clientetelefone Varchar (150) ) Createtable Funcionarios ( Funcid int primary key identity, Funcnome varchar (150), Funclogin varchar(150)unique, Funcsenha varchar (150), Functipo varchar (150) ) Createtable Fornecedores ( Fornid int primary key identity, Fornnome varchar (150), Forntelefone varchar (150) ) Createtable Produtos ( Produtoid Varchar(150)primary key, Produtonome varchar (150), Produtopreco money, produtoquant int, Produtoflag bit default 1, Fornecedor int references Fornecedores(Fornid) ) Createtable Vendas ( Vendaid int primary key identity, Vendatotal money, Cliente int references Clientes(Clienteid), Vendadata datetime, ) Createtable ItensVendas ( Itemid int primary key identity, Produto Varchar(150)references Produtos(Produtoid), Itemquant int, Precoproduto money, Subtotalitem int, IdVenda int references Vendas(Vendaid) )

Upload: trankhanh

Post on 22-Mar-2019

220 views

Category:

Documents


0 download

TRANSCRIPT

PROJETO VENDAS DELPHI SQL Pág. 1 Script do Banco de Dados: BANCO DE DADOS Createdatabase Vendas TABELAS Createtable Clientes ( Clienteid int primary key identity, Clientenome varchar (150)unique, ClienteCpf Varchar (150), Clientetelefone Varchar (150) ) Createtable Funcionarios ( Funcid int primary key identity, Funcnome varchar (150), Funclogin varchar(150)unique, Funcsenha varchar (150), Functipo varchar (150) ) Createtable Fornecedores ( Fornid int primary key identity, Fornnome varchar (150), Forntelefone varchar (150) ) Createtable Produtos ( Produtoid Varchar(150)primary key, Produtonome varchar (150), Produtopreco money, produtoquant int, Produtoflag bit default 1, Fornecedor int references Fornecedores(Fornid) ) Createtable Vendas ( Vendaid int primary key identity, Vendatotal money, Cliente int references Clientes(Clienteid), Vendadata datetime, ) Createtable ItensVendas ( Itemid int primary key identity, Produto Varchar(150)references Produtos(Produtoid), Itemquant int, Precoproduto money, Subtotalitem int, IdVenda int references Vendas(Vendaid) )

PROJETO VENDAS DELPHI SQL Pág. 2 PROCEDURES DE CADASTRO Createproc SP_GravaAltera_Clientes @OPERADOR varchar(50), @Clienteid int, @Clientenome varchar (150), @ClienteCpf Varchar (150), @Clientetelefone Varchar (150) As if @OPERADOR ='CAD' Begin Insertinto Clientes(Clientenome, ClienteCpf, Clientetelefone) Values (@Clientenome, @ClienteCpf, @Clientetelefone) End Else If @OPERADOR ='ALT' Begin Update Clientes SET Clientenome = @Clientenome, ClienteCpf = @ClienteCpf, Clientetelefone = @Clientetelefone Where Clienteid = @Clienteid End Createproc SP_GravaAltera_Funcionarios @OPERADOR varchar(50), @Funcid int, @Funcnome varchar (150), @Funclogin varchar(150), @Funcsenha varchar (150), @Functipo varchar (150) AS If @OPERADOR ='CAD' Begin Insertinto Funcionarios(Funcnome, Funclogin, Funcsenha, Functipo) Values (@Funcnome,@Funclogin,@Funcsenha,@Functipo) End Else If @OPERADOR ='ALT' Begin Update Funcionarios SET Funcnome = @Funcnome, Funclogin = @Funclogin, Funcsenha = @Funcsenha, Functipo = @Functipo Where Funcid = @Funcid End Createproc SP_GravaAltera_Fornecedores @OPERADOR varchar(50), @Fornid int, @Fornnome varchar (150), @Forntelefone varchar (150) AS If @OPERADOR ='CAD' Begin Insertinto Fornecedores(Fornnome,Forntelefone) Values (@Fornnome, @Forntelefone) End Else If @OPERADOR ='ALT' Begin Update Fornecedores SET Fornnome = @Fornnome, Forntelefone = @Forntelefone Where Fornid = @Fornid End Createproc SP_GravaAltera_Produtos

PROJETO VENDAS DELPHI SQL Pág. 3 @OPERADOR varchar(50), @Produtoid Varchar(150), @Produtonome varchar (150), @Produtopreco money, @produtoquant int, @Fornecedor int AS If @OPERADOR ='CAD' Begin Insertinto Produtos(Produtoid,Produtonome,Produtopreco,produtoquant,Fornecedor) Values (@ProdutoId,@Produtonome,@Produtopreco,@produtoquant,@Fornecedor) End Else If @OPERADOR ='ALT' Begin Update Produtos Set Produtonome = @Produtonome, Produtopreco = @Produtopreco, produtoquant = @produtoquant, Fornecedor = @Fornecedor Where Produtoid = @Produtoid End PROCEDURES DE EXCLUSÃO CREATEPROC SP_ExcluiClientes @Clienteid INT AS DELETE Clientes WHERE Clienteid = @Clienteid Createproc SP_ExcluiFuncionarios @Funcid int As Delete Funcionarios Where Funcid = @Funcid Createproc SP_ExcluiFornecedores @Fornid int As Delete Fornecedores Where Fornid = @Fornid Createproc SP_ExcluiProdutos @Produtoid Varchar (150) AS Delete Produtos Where Produtoid = @Produtoid VIEW PARA EXIBIR PRODUTOS CREATEVIEW V_EXIBEPRODUTOS AS SELECT PRODUTOID, PRODUTONOME, PRODUTOPRECO, PRODUTOQUANT, PRODUTOFLAG, FORNECEDOR, FORNNOME

FROM Produtos,Fornecedores WHERE Produtos.Fornecedor = Fornecedores.Fornid

DataModule (Módulo de Dados)

PROJETO VENDAS DELPHI SQL Pág. 4 É um importante recurso disponibilizado desde a versão 3 do Delphi, permite que os componentes de conexão de um banco de dados seja criado separadamente em uma unit para que o programador não tenha o trabalho de inserir componentes de conexão em todos os formulários que necessitarem destes recursos. A outra vantagem da utilização de Módulos de dados, é que toda vez que houver uma modificação ou atualização em alguma tabela ou base de dados, esta modificação poderá ser realizada apenas uma única vez e todos os formulários serão automaticamente atualizados. Procedimento para criar um DataModule: 1. Menu: File/New/Other; 2. Escolha a categoria Delphi Projects; 3. Escolha a SubCategoria Delphi Files;

4. Escolha a opção Data Module na janela da direita;

A janela do objeto módulo será mostrada conforme a imagem a seguir:

COMPONENTES DO DATA MODULE:

PROJETO VENDAS DELPHI SQL Pág. 5

TADOConnection (AlçaDbGo): Fornece a conexão entre o banco de dados e a interface (form) do Delphi. Também fornece strings de conexão, login e transações. Principais propriedades: Name = atribui-se normalmente o nome do banco de dados; ConnectionString = Define o caminho para qual tipo e qual banco de dados será realizada a conexão; No nosso exemplo, iremos utilizar o Provedor para conexão com banco de dados desenvolvidos no MS SQL Server, como mostra a sequência de imagens a seguir:

1. Selecione ou insira um nome de servidor: (Deve-se inserir (colar ou digitar) o nome do Servidor SQL Server; 2. Insirar as informações para fazer login no servidor: Usaremos a opção “Usar a segurança integrada do Windows NT” (dispensa-se nome do usuário e senha); 3. Selecionar o banco de dados no servidor: Deve-se escolher qual o banco de dados deseja-se conectar; 4. Utilize o botão “Testar conexão” para verificar se o servidor e banco foram conectados corretamente. Exemplo da configuração já realizada:

PROJETO VENDAS DELPHI SQL Pág. 6

TADOQuery (Alça DbGo): É o componente que interliga as tabelas à um formulário Delphi, o TADOQuery é executado através de um comando SQL com uma ou mais tabelas e resulta em um conjunto de campos e registros. Principais propriedades: Name = atribui-se normalmente o nome da tabela do banco de dados; Connection = Define-se em qual TADOConnection estará vinculado; SQL = Define qual(quais) a(s) tabela(s) irá controlar; Active = True(ativado)/False(destativado); Exemplo:

PROJETO VENDAS DELPHI SQL Pág. 7 Procedimento para inserção dos campos da tabela da TADOQuery:

Clique 2 vezes no componente ADOQuery Na janela que será aberta, clique com o botão direito do mouse, e depois na opção Addallfields Os campos da tabela serão inseridos e mostrados como na imagem a seguir:

TDataSource (Alça Data Access): É o componente que interliga o formulário com o ADOQuery, ou seja permite a conexão com os campos da tabela de um determinado ADOQuery. Principais propriedades: Name = atribui-se normalmente o nome da tabela do banco de dados; DataSet = Define em qual tabela será vinculado; TAdoStoredProc (Alça DbGo): É o componente que interliga o módulo de dados com as procedures do banco de dados feito em MS-SQL Server. Principais propriedades: Name = atribui-se normalmente o nome da procedure feita no SQL Server; Connection = Conectar ao banco de dados (AdoConnection); ProcedureName = Nome da procedure que será utilizada; Formulários de Cadastro

PROJETO VENDAS DELPHI SQL Pág. 8 1. Menu: File/Use Unit...; 2. Escolha o Módulo de Dados;

ifEdtCpf.Text=EmptyStr then begin Application.MessageBox('Digite o CPF','Atenção',mb_ok + mb_iconerror); EdtCpf.SetFocus; end else ifEdtNome.Text=EmptyStr then begin Application.MessageBox('Digite o nome','Atenção',mb_ok + mb_iconerror); EdtNome.SetFocus; end else ifEdtTelefone.Text=EmptyStr then begin Application.MessageBox('Digite o Telefone','Atenção',mb_ok + mb_iconerror); EdtTelefone.SetFocus; end else if OPERADOR='CAD' then begin DmVendas.SP_GravaAltera_Clientes.Parameters[1].Value:='CAD'; DmVendas.SP_GravaAltera_Clientes.Parameters[4].Value:=EdtCpf.Text; DmVendas.SP_GravaAltera_Clientes.Parameters[3].Value:=EdtNome.Text; DmVendas.SP_GravaAltera_Clientes.Parameters[5].Value:=EdtTelefone.Text; DmVendas.SP_GravaAltera_Clientes.ExecProc; BtnLimpar.Click; end else begin DmVendas.SP_GravaAltera_Clientes.Parameters[1].Value:='ALT'; DmVendas.SP_GravaAltera_Clientes.Parameters[2].Value:=DmVendas.QClientesClienteid.AsInteger; DmVendas.SP_GravaAltera_Clientes.Parameters[4].Value:=EdtCpf.Text; DmVendas.SP_GravaAltera_Clientes.Parameters[3].Value:=EdtNome.Text; DmVendas.SP_GravaAltera_Clientes.Parameters[5].Value:=EdtTelefone.Text; DmVendas.SP_GravaAltera_Clientes.ExecProc; BtnLimpar.Click; end; end;

PROJETO VENDAS DELPHI SQL Pág. 9

procedureTFrmCadFuncionarios.BtnSalvarClick(Sender: TObject); begin ifEdtNome.Text=EmptyStr then begin Application.MessageBox('Digite o nome','Atenção',mb_ok + mb_iconerror); EdtNome.SetFocus; end else ifEdtLogin.Text=EmptyStr then begin Application.MessageBox('Digite o login','Atenção',mb_ok + mb_iconerror); EdtLogin.SetFocus; end else ifEdtSenha.Text=EmptyStr then begin Application.MessageBox('Digite a senha','Atenção',mb_ok + mb_iconerror); EdtSenha.SetFocus; end else ifEdtConfSenha.Text=EmptyStr then begin Application.MessageBox('Digite a confirmação da senha','Atenção',mb_ok + mb_iconerror); EdtConfSenha.SetFocus; end else if OPERADOR='CAD' then begin DmVendas.SP_GravaAltera_Funcionarios.Parameters[1].Value:='CAD'; DmVendas.SP_GravaAltera_Funcionarios.Parameters[3].Value:=EdtNome.Text; DmVendas.SP_GravaAltera_Funcionarios.Parameters[4].Value:=EdtLogin.Text; DmVendas.SP_GravaAltera_Funcionarios.Parameters[5].Value:=EdtConfSenha.Text; DmVendas.SP_GravaAltera_Funcionarios.Parameters[6].Value:=CboTipo.Text; DmVendas.SP_GravaAltera_Funcionarios.ExecProc; BtnLimpar.Click; end else begin DmVendas.SP_GravaAltera_Funcionarios.Parameters[1].Value:='ALT'; DmVendas.SP_GravaAltera_Funcionarios.Parameters[2].Value:=DmVendas.QFuncionariosFuncid.AsInteger; DmVendas.SP_GravaAltera_Funcionarios.Parameters[3].Value:=EdtNome.Text; DmVendas.SP_GravaAltera_Funcionarios.Parameters[4].Value:=EdtLogin.Text; DmVendas.SP_GravaAltera_Funcionarios.Parameters[5].Value:=EdtConfSenha.Text; DmVendas.SP_GravaAltera_Funcionarios.Parameters[6].Value:=CboTipo.Text; DmVendas.SP_GravaAltera_Funcionarios.ExecProc; BtnLimpar.Click; end; end;

PROJETO VENDAS DELPHI SQL Pág. 10

procedureTFrmCadFornecedores.BtnSalvarClick(Sender: TObject); begin ifEdtNome.Text=EmptyStr then begin Application.MessageBox('Digite o nome','Atenção',mb_ok + mb_iconerror); EdtNome.SetFocus; end else ifEdtTelefone.Text=EmptyStr then begin Application.MessageBox('Digite o Telefone','Atenção',mb_ok + mb_iconerror); EdtTelefone.SetFocus; end else if OPERADOR='CAD' then begin DmVendas.SP_GravaAltera_Fornecedores.Parameters[1].Value:='CAD'; DmVendas.SP_GravaAltera_Fornecedores.Parameters[3].Value:=EdtNome.Text; DmVendas.SP_GravaAltera_Fornecedores.Parameters[4].Value:=EdtTelefone.Text; DmVendas.SP_GravaAltera_Fornecedores.ExecProc; BtnLimpar.Click; end else begin DmVendas.SP_GravaAltera_Fornecedores.Parameters[1].Value:='ALT'; DmVendas.SP_GravaAltera_Fornecedores.Parameters[2].Value:=DmVendas.QFornecedoresFornid.AsInteger; DmVendas.SP_GravaAltera_Fornecedores.Parameters[3].Value:=EdtNome.Text; DmVendas.SP_GravaAltera_Fornecedores.Parameters[4].Value:=EdtTelefone.Text; DmVendas.SP_GravaAltera_Fornecedores.ExecProc; BtnLimpar.Click; end; end;

PROJETO VENDAS DELPHI SQL Pág. 11

procedureTFrmCadProdutos.BtnSalvarClick(Sender: TObject); begin ifEdtCodigo.Text=EmptyStr then begin Application.MessageBox('Digite o Código','Atenção',mb_ok); end else ifEdtNome.Text=EmptyStr then begin Application.MessageBox('Digite o Nome','Atenção',mb_ok); end else ifEdtPreco.Text=EmptyStr then begin Application.MessageBox('Digite o Preço','Atenção',mb_ok); end else ifEdtQuant.Text=EmptyStr then begin Application.MessageBox('Digite a Quantidade','Atenção',mb_ok); end else ifCboForn.KeyValue= -1 then begin Application.MessageBox('Escolha o Fornecedor','Atenção',mb_ok); end else begin if OPERADOR='CAD' then Begin DmVendas.SP_GravaAltera_Produtos.Parameters[1].Value:='CAD'; DmVendas.SP_GravaAltera_Produtos.Parameters[2].Value:=EdtCodigo.Text; DmVendas.SP_GravaAltera_Produtos.Parameters[3].Value:=EdtNome.Text; DmVendas.SP_GravaAltera_Produtos.Parameters[4].Value:=EdtPreco.Text; DmVendas.SP_GravaAltera_Produtos.Parameters[5].Value:=EdtQuant.Text; DmVendas.SP_GravaAltera_Produtos.Parameters[6].Value:=CboForn.KeyValue; DmVendas.SP_GravaAltera_Produtos.ExecProc; BtnLimpar.Click; End else Begin DmVendas.SP_GravaAltera_Produtos.Parameters[1].Value:='ALT'; DmVendas.SP_GravaAltera_Produtos.Parameters[2].Value:=DmVendas.QProdutosPRODUTOID.AsString; DmVendas.SP_GravaAltera_Produtos.Parameters[3].Value:=EdtNome.Text; DmVendas.SP_GravaAltera_Produtos.Parameters[4].Value:=EdtPreco.Text; DmVendas.SP_GravaAltera_Produtos.Parameters[5].Value:=EdtQuant.Text; DmVendas.SP_GravaAltera_Produtos.Parameters[6].Value:=CboForn.KeyValue; DmVendas.SP_GravaAltera_Produtos.ExecProc; BtnLimpar.Click; End; end; end;

Configuração da DBLookupCombobox ListSource: DSFornecedores (TABELA QUE SERÁ PESQUISADA) ListField: FornNome (CAMPO QUE SERÁ LISTADO/MOSTRADO) KeyField: FordID (CAMPO QUE SERÁ GRAVADO NA TABELA DE PRODUTOS)

PROJETO VENDAS DELPHI SQL Pág. 12

procedureTFrmConsClientes.BtnAlterarClick(Sender: TObject); begin OPERADOR:='ALT'; FrmCadClientes.EdtCpf.Text:=DmVendas.QClientesClienteCpf.AsString; FrmCadClientes.EdtNome.Text:=DmVendas.QClientesClientenome.AsString; FrmCadClientes.EdtTelefone.Text:=DmVendas.QClientesClientetelefone.AsString; FrmCadClientes.ShowModal; end; procedureTFrmConsClientes.BtnExcluirClick(Sender: TObject); begin DmVendas.SP_ExcluiClientes.parameters[1].value:= DmVendas.QClientesClienteid.AsInteger; DmVendas.SP_ExcluiClientes.ExecProc; DmVendas.QClientes.Close; DmVendas.QClientes.Open; end; procedureTFrmConsClientes.EdtBuscaChange(Sender: TObject); begin DmVendas.QClientes.Close; DmVendas.QClientes.SQL.Clear; DmVendas.QClientes.SQL.Add('Select *'); DmVendas.QClientes.SQL.Add('From Clientes'); DmVendas.QClientes.SQL.Add('Where Clientenome like'+QuotedStr( EdtBusca.Text + '%')); DmVendas.QClientes.Open; end;

PROJETO VENDAS DELPHI SQL Pág. 13

procedureTFrmConsFornecedores.BtnAlterarClick(Sender: TObject); begin OPERADOR:='ALT'; FrmCadFornecedores.EdtNome.Text:=DmVendas.QFornecedoresFornnome.AsString; FrmCadFornecedores.EdtNome.Text:=DmVendas.QFornecedoresForntelefone.AsString; FrmCadFornecedores.ShowModal; end; procedureTFrmConsFornecedores.BtnExcluirClick(Sender: TObject); begin DmVendas.SP_ExcluiFornecedores.parameters[1].value:= DmVendas.QFornecedoresFornid.AsInteger; DmVendas.SP_ExcluiFornecedores.ExecProc; DmVendas.QFornecedores.Close; DmVendas.QFornecedores.Open; end; procedureTFrmConsFornecedores.EdtBuscaChange(Sender: TObject); begin DmVendas.QFornecedores.Close; DmVendas.QFornecedores.SQL.Clear; DmVendas.QFornecedores.SQL.Add('Select *'); DmVendas.QFornecedores.SQL.Add('From Fornecedores'); DmVendas.QFornecedores.SQL.Add('WhereFornnomelike'+QuotedStr( EdtBusca.Text + '%')); DmVendas.QFornecedores.Open; end;

PROJETO VENDAS DELPHI SQL Pág. 14

procedureTFrmConsFuncionarios.BtnAlterarClick(Sender: TObject); begin OPERADOR:='ALT'; FrmCadFuncionarios.EdtNome.Text:=DmVendas.QFuncionariosFuncnome.AsString; FrmCadFuncionarios.EdtLogin.Text:=DmVendas.QFuncionariosFunclogin.AsString; FrmCadFuncionarios.EdtSenha.Text:=DmVendas.QFuncionariosFuncsenha.AsString; FrmCadFuncionarios.EdtConfSenha.Text:=DmVendas.QFuncionariosFuncsenha.AsString; FrmCadFuncionarios.CboTipo.Text:=DmVendas.QFuncionariosFunctipo.AsString; FrmCadFuncionarios.ShowModal; end; procedureTFrmConsFuncionarios.BtnExcluirClick(Sender: TObject); begin DmVendas.SP_ExcluiFuncionarios.parameters[1].value:= DmVendas.QFuncionariosFuncid.AsInteger; DmVendas.SP_ExcluiFuncionarios.ExecProc; DmVendas.QFuncionarios.Close; DmVendas.QFuncionarios.Open; end; procedureTFrmConsFuncionarios.EdtBuscaChange(Sender: TObject); begin DmVendas.QFuncionarios.Close; DmVendas.QFuncionarios.SQL.Clear; DmVendas.QFuncionarios.SQL.Add('Select *'); DmVendas.QFuncionarios.SQL.Add('FromFuncionarios'); DmVendas.QFuncionarios.SQL.Add('WhereFuncnomelike'+QuotedStr( EdtBusca.Text + '%')); DmVendas.QFuncionarios.Open; end;

PROJETO VENDAS DELPHI SQL Pág. 15

procedureTFrmConsProdutos.BtnAlterarClick(Sender: TObject); begin OPERADOR:='ALT'; FrmCadProdutos.EdtCodigo.Text:=inttostr(DmVendas.QProdutosPRODUTOID.AsInteger); FrmCadProdutos.EdtNome.Text:=DmVendas.QProdutosPRODUTONOME.AsString; FrmCadProdutos.EdtQuant.Text:=inttostr(DmVendas.QProdutosPRODUTOQUANT.AsInteger); FrmCadProdutos.EdtPreco.Text:=DmVendas.QProdutosPRODUTOPRECO.AsVariant; FrmCadProdutos.CboForn.KeyValue:=DmVendas.QProdutosFORNECEDOR.AsInteger; FrmCadProdutos.ShowModal; end; procedureTFrmConsProdutos.BtnExcluirClick(Sender: TObject); begin DmVendas.SP_ExcluiProdutos.parameters[1].value:= DmVendas.QProdutosPRODUTOID.AsInteger; DmVendas.SP_ExcluiProdutos.ExecProc; DmVendas.QProdutos.Close; DmVendas.QProdutos.Open; end; procedureTFrmConsProdutos.EdtBuscaChange(Sender: TObject); begin DmVendas.QProdutos.Close; DmVendas.QProdutos.SQL.Clear; DmVendas.QProdutos.SQL.Add('Select * from V_EXIBEPRODUTOS'); DmVendas.QProdutos.SQL.Add('whereprodutonomelike'+quotedstr(EdtBusca.Text+'%')); DmVendas.QProdutos.Open; end;

PROJETO VENDAS DELPHI SQL Pág. 16 ABERTURA E FECHAMENTO DO CAIXA TABELA: CREATE TABLE CAIXAS ( Codigo int IDENTITY PRIMARY KEY, DTabertura datetime, VLabertura money, DTfechamento datetime, VLfechamento money, Codfuncionario int ) PROCEDURES: CREATE PROC ABRECAIXA @CODFUNCIONARIO INT, @VLABERTURA MONEY AS INSERT INTO CAIXAS (DTabertura,VLabertura,Codfuncionario) VALUES (GETDATE(),@VLabertura,@CODFUNCIONARIO) CREATE PROC FECHACAIXA @CODCAIXA INT AS DECLARE @VLFECHAMENTO MONEY SET @VLFECHAMENTO=(SELECT SUM(TOTAL) FROM VENDAS WHERE CodCaixa=@CODCAIXA) UPDATE CAIXAS SET DTfechamento=GETDATE(), VLfechamento=@VLFECHAMENTO WHERE Codigo=@CODCAIXA No Delphi:

PROJETO VENDAS DELPHI SQL Pág. 17 REALIZAÇÃO DA VENDA PROCEDURES: CREATE PROC GRAVAITEMVENDA @PRODUTO VARCHAR(50), @ITEMQUANT INT, @SUBTOTALITEM MONEY AS INSERT INTO ITENSVENDAS (produto,Itemquant,SubtotalItem) VALUES (@Produto,@ITEMQUANT,@SubtotalItem) CREATE PROC GRAVAVENDA @CLIENTE VARCHAR(50), @VENDATOTAL MONEY, AS INSERT INTO VENDAS (cliente,Vendadata,Vendatotal) VALUES (@cliente,GETDATE(),@VendaTotal) No Delphi:

procedure TFrmVendas.EdtProdutoKeyPress(Sender: TObject; var Key: Char); begin if key = #13 then begin DmWaldyrMax.ConsProdutos.Close; DmWaldyrMax.ConsProdutos.SQL.Clear; DmWaldyrMax.ConsProdutos.SQL.Add('Select * from Produtos'); DmWaldyrMax.ConsProdutos.SQL.Add('where codigo =' + quotedstr(EdtProduto.Text)); DmWaldyrMax.ConsProdutos.Open; if DmWaldyrMax.ConsProdutos.RecordCount=0 then begin Application.MessageBox('Produto não encontrado','Erro',mb_ok); end else begin //inicio da inserção do item na venda

PROJETO VENDAS DELPHI SQL Pág. 18 DmWaldyrMax.GravaItemVenda.Parameters[1].Value:=DmWaldyrMax.ConsProdutosCodigo.AsString; DmWaldyrMax.GravaItemVenda.Parameters[2].Value:=1; DmWaldyrMax.GravaItemVenda.Parameters[3].Value:=DmWaldyrMax.ConsProdutosPreco.AsVariant; DmWaldyrMax.GravaItemVenda.ExecProc; DmWaldyrMax.ConsItensVendas.Close; DmWaldyrMax.ConsItensVendas.Open; //calculando o total total:=0; DmWaldyrMax.ConsItensVendas.First; while not DmWaldyrMax.ConsItensVendas.Eof do begin total:= total + DmWaldyrMax.ConsItensVendasSubtotal.AsVariant; DmWaldyrMax.ConsItensVendas.Next; end; LblTotal.Caption:=floattostr(total); end; end; end; procedure TFrmVendas.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_F3 then begin FrmConsClientes.Showmodal; end; if Key = VK_F4 then begin FrmConsProdutos.Showmodal; end; if key = VK_F6 then begin if (Application.MessageBox('Cancelar a Venda?','Atenção',mb_yesno)=id_yes) then begin DmWaldyrMax.CancelaVenda.ExecProc; DmWaldyrMax.ConsItensVendas.Close; DmWaldyrMax.ConsItensVendas.Open; LblTotal.Caption:='0,00'; EdtCliente.Clear; EdtProduto.Clear; end; end; //11/06 - acrescentar este codigo if KEY = VK_F5 then begin DmWaldyrMax.CancelaItemVenda.Parameters[1].Value:=DmWaldyrMax.ConsItensVendasCODIGO.AsInteger; DmWaldyrMax.CancelaItemVenda.ExecProc; DmWaldyrMax.ConsItensVendas.Close; DmWaldyrMax.ConsItensVendas.Open; //recalculando o total total:=0; DmWaldyrMax.ConsItensVendas.First; while not DmWaldyrMax.ConsItensVendas.Eof do begin total:= total + DmWaldyrMax.ConsItensVendasSubtotal.AsVariant; DmWaldyrMax.ConsItensVendas.Next; end; LblTotal.Caption:=floattostr(total); end;

PROJETO VENDAS DELPHI SQL Pág. 19 Fechamento da Venda