Ir para conteúdo
Fórum Script Brasil

alemoraes

Membros
  • Total de itens

    33
  • Registro em

  • Última visita

Tudo que alemoraes postou

  1. Bom dia Estou utilizando para esta rotina 01 IBQuery (ibqBaixa) ligado a 01 DataSetProvider (dspProvider) ligado a 01 ClientDataSet (cdsBaixa) ligado a 01 Datasource (dsBaixa) 01 DBGrid2 ligado ao datasource dsBaixa para mostrar os registros transferidos No IBquery coloquei este comando SQL : select A.*, B.* from BAIXA A, PATRIMONIO B No Botão de comando fiz esta rotina, mas ao clicar não acontece nada: procedure TfrmPatrimonio.BitBtnBaixaClick(Sender: TObject); begin if dmDados.tblPatrimonio.IsEmpty then begin Application.MessageBox('Tabela vazia, não há dados para transferir!', 'Aviso', mb_Ok + MB_ICONQUESTION); Abort; end else if dmDados.dsBaixa.State in [dsInsert, dsEdit] then begin cdsBaixa.Close; cdsBaixa.ClearFields; cdsBaixa.CommandText:= 'INSERT INTO BAIXA (BAI_DATACADASTRO, BAI_DESCRICAO, BAI_MARCA, BAI_FORNECEDOR, BAI_DATACOMPRA, BAI_QUANT, BAI_VALORUNITARIO,'+ 'BAI_VALORTOTAL, BAI_OBS, BAI_DATASAIDA, BAI_DATADEVOLUCAO, BAI_DATAVENDA, BAI_SITCODIGO, BAI_USUCODIGO, BAI_FOTO)'+ 'SELECT PAT_DATACADASTRO, PAT_DESCRICAO, PAT_MARCA, PAT_FORNECEDOR, PAT_DATACOMPRA, PAT_QUANT, PAT_VALORUNITARIO, PAT_VALORTOTAL,'+ 'PAT_OBS, PAT_DATASAIDA, PAT_DATADEVOLUCAO, PAT_DATAVENDA, PAT_SITCODIGO, PAT_USUCODIGO, PAT_FOTO'+ 'FROM PATRIMONIO WHERE PAT_CODIGO = :cod'; cdsBaixa.Params.ParamByName('cod').AsInteger:= DBGrid1.DataSource.DataSet.FieldByName('PAT_CODIGO').value; // O DBGrid1 mostra os Patrimônios cadastrados. A intenção é selecionar o registro no DBGrid1 para fazer a transferência entre as tabelas PATRIMONIO e BAIXA. cdsBaixa.ApplyUpdates(-1); dmDados.transacao.CommitRetaining; // componente TIBTransaction end; end; Obrigado.
  2. boa noite Preciso criar um botão de comando para transferir um registro selecionado de uma tabela para uma outra tabela idêntica. Tenho duas tabelas: PATRIMONIO e BAIXA (As duas tabelas tem Chave primária e auto incremento) No IBExpert fiz o comando com SQL no Firebird 2.5 e funcionou mas no delphi 7 não consigo fazer. insert into BAIXA (BAI_DATACADASTRO, BAI_DESCRICAO, BAI_MARCA, BAI_FORNECEDOR, BAI_DATACOMPRA, BAI_QUANT, BAI_VALORUNITARIO, BAI_VALORTOTAL, BAI_OBS, BAI_DATASAIDA, BAI_DATADEVOLUCAO, BAI_DATAVENDA, BAI_SITCODIGO, BAI_USUCODIGO, BAI_FOTO) select PAT_DATACADASTRO, PAT_DESCRICAO, PAT_MARCA, PAT_FORNECEDOR, PAT_DATACOMPRA, PAT_QUANT, PAT_VALORUNITARIO, PAT_VALORTOTAL, PAT_OBS, PAT_DATASAIDA, PAT_DATADEVOLUCAO, PAT_DATAVENDA, PAT_SITCODIGO, PAT_USUCODIGO, PAT_FOTO from PATRIMONIO WHERE PAT_CODIGO = 16; //Exemplo Agradeço antecipadamente.
  3. Jhonas bom dia Pegando seu exemplo, fiz alterações no SQL das IBQuerys e na instrução OnKeyPress do DBGrid. Quando vou passar da coluna 5 para a coluna 6 do DBGrid gera um Erro com a seguinte mensagem: Class EDataBaseError with message 'IBQuery1: Cannot Modify a Read-Only Dataset. Process stopped. por favor me ajude, segue os códigos: No IBQuery1 ficou assim a instrução SQL select HIS_TIPO, HIS_VALOR, SUM(HIS_VALOR) As TOTALCREDITO From TBHISTORICO Where HIS_TIPO = 'C' GROUP BY HIS_TIPO, HIS_VALOR No IBQuery2 ficou assim a instrução SQL select HIS_TIPO, HIS_VALOR, SUM(HIS_VALOR) As TOTALDEBITO From TBHISTORICO Where HIS_TIPO = 'D' GROUP BY HIS_TIPO, HIS_VALOR No DBGrid evento OnKeyPress procedure TfrmCaixaBanco.DBGrid2KeyPress(Sender: TObject; var Key: Char); begin dmDados.tblHistorico.Edit; /// deixe erm modo de edição o registro da tabela if Key = #13 then begin if not (ActiveControl is TDBGrid) then begin //Key := #0; //Perform(WM_NEXTDLGCTL, 0, 0); end else begin if (ActiveControl is TDBGrid) then with TDBGrid(ActiveControl) do if selectedindex < (fieldcount -1) then selectedindex := selectedindex + 1 else selectedindex := 0; end; end; /// AQUI VOCE QUER REALIZAR ALGUM CALCULO if (DBGrid2.SelectedIndex > 5) then begin // COLUNA 1 É DA HIS_DATA // COLUNA 2 É DA HIS_TIPO // COLUNA 3 É DA HIS_LANCODIGO // COLUNA 4 É DA HIS_TIPOCODIGO // COLUNA 5 É DA HIS_DESCRICAO // COLUNA 6 É DO HIS_VALOR IBQuery1.Close; IBQuery1.Open; IBQuery1.Edit; IBQuery1HIS_VALOR.Value:= IBQuery1TOTALCREDITO.Value; IBQuery1.Post; IBQuery1.ApplyUpdates; IBQuery1.Refresh; // IBQuery2.Close; IBQuery2.Open; IBQuery2.Edit; IBQuery2HIS_VALOR.Value:= IBQuery2TOTALDEBITO.Value; IBQuery2.Post; IBQuery2.ApplyUpdates; IBQuery2.Refresh; // dmDados.tblConta.edit; dmDados.tblContaCON_CREDITO.Value:= IBQuery1HIS_VALOR.Value; dmDados.tblContaCON_DEBITO.Value:= IBQuery2HIS_VALOR.Value; dmDados.tblContaCON_SALDO.Value:= dmDados.tblContaCON_CREDITO.Value - dmDados.tblContaCON_DEBITO.Value; dmDados.tblConta.Post; dmDados.tblConta.Refresh; // dmDados.tblHistorico.Append; DBGrid2.SelectedIndex:= 0; end; end;
  4. Botão Novo procedure TfrmCaixaBanco.btnnovoClick(Sender: TObject); begin novoexecute(self); end; procedure TfrmCaixaBanco.novoExecute(Sender: TObject); begin dmDados.tblProprietario.Insert; dbeditProprietario.setfocus; btngravar.Enabled:=true; btncancelar.Enabled := true; end; Para gravar tem tanto a rotina do botão Salvar quanto no evento Enter de DBEdits procedure TfrmCaixaBanco.btngravarClick(Sender: TObject); begin dmDados.tblProprietario.Edit; dmDados.tblProprietario.Post; dmDados.tblBanco.Edit; dmDados.tblBanco.Post; dmDados.tblConta.Edit; dmDados.tblConta.Post; dmDados.tblHistorico.Edit; dmDados.tblHistorico.Post; btngravar.Enabled:=false; btncancelar.Enabled:=false; end; procedure TfrmCaixaBanco.DBEditBancoEnter(Sender: TObject); begin dmDados.tblProprietario.Edit; // TBPROPRIETARIO TABELA PAI DA TABELA TBBANCO dmDados.tblProprietario.Post; dmDados.tblProprietario.Refresh; end; procedure TfrmCaixaBanco.DBEditContaEnter(Sender: TObject); begin dmDados.tblBanco.Edit; // TBBANCO TABELA PAI DA TABELA TBCONTA dmDados.tblBanco.Post; dmDados.tblBanco.Refresh; end; e também no DBGridEnter procedure TfrmCaixaBanco.DBGrid2Enter(Sender: TObject); begin if (dbeditBanco.Text = '') or (dbeditConta.Text = '') then begin showmessage('Preencha os campos acima antes de movimentar a conta!'); abort; end; keypreview := false; dmDados.tblConta.Edit; // TBCONTA TABELA PAI DE TBHISTORICO dmDados.tblConta.Post; dmDados.tblConta.Refresh; end; Neste Banco conta corrente não tem botão para Excluir lançamentos. Segue o Print do Form OBS: Caso voce precise calcular a coluna de varios registros, use um select para filtrar os registros que voce quer e depois bastara voce criar uma rotina para ler os registros e ir fazendo os calculos e jogando os valores na coluna desejada e depois é só salvar os registros modificados. Nesta Obs que você citou acima eu consegui fazer 02 Querys para pegar a soma da Coluna HIS_VALOR de acordo com a coluna HIS_TIPO (Se for "C" Crédito se for "D" Débito), mas não consigo avançar por falta de conhecimento. Por favor peço sua estimada ajuda. Segue as Querys que fiz: PARA SOMAR CRÉDITO procedure TfrmCaixaBanco.QuerySomaCredito(Sender: TObject); begin IBQuery1.Active:= true; IBQuery1.Close; IBQuery1.SQL.Clear; IBQuery1.SQL.Add('Select HIS_TIPO, SUM(HIS_VALOR) As TotalCredito'); IBQuery1.SQL.Add('From TBHISTORICO'); IBQuery1.SQL.Add('Where HIS_TIPO = ''C'''); IBQuery1.SQL.Add('GROUP BY HIS_TIPO'); IBQuery1.Open; end; PARA SOMAR DÉBITOS procedure TfrmCaixaBanco.QuerySomaDebito(Sender: TObject); begin IBQuery2.Active:= true; IBQuery2.Close; IBQuery2.SQL.Clear; IBQuery2.SQL.Add('Select HIS_TIPO, SUM(HIS_VALOR) As TotalDebito'); IBQuery2.SQL.Add('From TBHISTORICO'); IBQuery2.SQL.Add('Where HIS_TIPO = ''D'''); IBQuery2.SQL.Add('GROUP BY HIS_TIPO'); IBQuery2.Open; end; Obrigado
  5. Jhonas boa tarde Fiz uns testes no evento OnKeyPress do DBGrid mas não está salvando. A coluna 6 é somada de acordo com a coluna 2 HIS_TIPO. Se HIS_TIPO = C soma a coluna 6 HIS_VALOR para atualizar CON_CREDITO Se HIS_TIPO = D soma a coluna 6 HIS_VALOR para atualizar CON_DEBITO Nota: Não estou mais utilizando a procedure totalizarExecute. Se tiver alguma idéia para me passar, te agradeço Segue o código: procedure TfrmCaixaBanco.DBGrid2KeyPress(Sender: TObject; var Key: Char); var tot1, tot2: Real; botao: integer; begin dmDados.tblHistorico.Edit; /// deixe em modo de edição o registro da tabela tot1:= 0; tot2:= 0; if Key = #13 then begin if not (ActiveControl is TDBGrid) then begin //Key := #0; //Perform(WM_NEXTDLGCTL, 0, 0); end else begin if (ActiveControl is TDBGrid) then with TDBGrid(ActiveControl) do if selectedindex < (fieldcount -1) then selectedindex := selectedindex + 1 else selectedindex := 0; end; end; /// AQUI VOCE QUER REALIZAR ALGUM CALCULO /// botao = 1 é uma variavel para saber se é inclusão(1), alteração(2) ou exclusão(3) de /// registro if (botao = 1) and (DBGrid2.SelectedIndex > 5) then begin if (dmDados.tblHistorico['HIS_VALOR'] <> null) and (dmDados.tblHistorico['HIS_TIPO'] ='C') then tot1:= tot1 + (dmDados.tblHistoricoHIS_VALOR.Value) else if (dmDados.tblHistorico['HIS_TIPO'] ='D') then tot2:= tot2 + (dmDados.tblHistoricoHIS_VALOR.Value); end; dmDados.tblConta.edit; dmDados.tblConta['CON_CREDITO'] := tot1; dmDados.tblConta['CON_DEBITO'] := tot2; dmDados.tblConta['CON_SALDO'] := tot1 - tot2; dmDados.tblConta.post; dmDados.tblConta.Refresh; dmDados.tblHistorico.Append; DBGrid2.SelectedIndex:= 0; end;
  6. Jhonas boa noite Fiz os testes conforme você passou os códigos e não funcionou em parte. Coloquei o primeiro código no evento OnKeyPress do dbgrid2 (No form sempre deixei o keypreview = true) e exclui o evento Onkeydown e coloquei o segundo código que em passou no evento OnColEnter do dbgrid2. Aconteceu o seguinte: por exemplo estava na 2a. linha, quando dei Enter da coluna 5 para a coluna 6 a linha toda foi subiu para a primeira linha e o registro que estava na primeira linha passou para a segunda linha. O cursor ficou na coluna 6 esperando ser digitado o valor. Quando digitei o valor e dei Enter o valor ficou na coluna em questão, mas não atualizou o saldo e os lançamentos continuaram invertidos. (Mesmo dando Enter várias vezes o cursor não vai para a linha de baixo, só navega na mesma linha). 02 coisas: Primeiro: não consegui descobrir onde posso colocar o Append e o Last, acredito que você se refere a tabela TBHISTORICO nos códigos que me passou. Segundo: será que o procedimento totalizarexecute pode estar influenciando a coluna 6 do dbgrid? peço a gentileza se você puder dar uma olhada no código: Obrigado tblHistorico (IBTable) tblConta (IBTable) procedure TfrmCaixaBanco.totalizarExecute(Sender: TObject); var tot1, tot2: real; bookmark : tbookmarkstr; begin bookmark := dmDados.tblHistorico.Bookmark; try dmDados.tblHistorico.DisableControls; tot1 := 0; tot2 :=0; try dmDados.tblHistorico.First; while not dmDados.tblHistorico.Eof do begin if (dmDados.tblHistorico['HIS_VALOR'] <> null) then begin if (dmDados.tblHistorico['HIS_TIPO'] ='C') then tot1 := tot1 + (dmDados.tblHistoricoHIS_VALOR.Value) else if (dmDados.tblHistorico['HIS_TIPO'] ='D') then tot2 := tot2 + (dmDados.tblHistoricoHIS_VALOR .Value); end; dmDados.tblHistorico.next; end; finally dmDados.tblHistorico.EnableControls; end; finally begin dmDados.tblHistorico.Bookmark := bookmark; end; end; dmDados.tblConta.edit; dmDados.tblConta['CON_DEBITO'] := tot2; dmDados.tblConta['CON_CREDITO'] := tot1; dmDados.tblConta['CON_SALDO'] := tot1 - tot2; dmDados.tblConta.post; dmDados.tblConta.Refresh; end;
  7. Jhonas boa tarde Em primeiro lugar muito obrigado pela ajuda. Desculpe a demora em responder, pois estava trabalhando com IBDataset e fiz os testes que você passou, porém os IBDatasets estavam dando problemas com master / detail e resolvi usar o componente IBTable. Com o componente IBTable fiz o que me passou, ou seja, depois do Post em cada tabela coloquei o comando refresh de cada tabela e funcionou, gravou em todas as tabelas os lançamentos. Agora apareceu um dúvida. Na tabela TBHISTORICO eu digito os lançamentos no próprio DBGrid. Acontece o seguinte: Vou preenchendo os campos no DBGrid e vou pressionando Enter. Quando estou na segunda linha em diante, quando dou Enter na coluna 5 para passar para a coluna 6, em vez da edição do registro ficar na mesma linha, ela pula sempre para o primeiro registro. Como posso corrigir isto? Segue os códigos que fiz: Obrigado procedure TfrmCaixaBanco.DBGrid2Enter(Sender: TObject); begin if (dbeditBanco.Text = '') or (dbeditConta.Text = '') then begin showmessage('Preencha os campos acima antes de movimentar a conta!'); abort; end; keypreview := false; dmDados.tblConta.Edit; dmDados.tblConta.Post; dmDados.tblConta.Refresh; end; procedure TfrmCaixaBanco.DBGrid2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key= 13 then begin dbgrid2.SelectedIndex := dbgrid2.SelectedIndex + 1; if dbgrid2.SelectedIndex = 5 then // COLUNA 1 É DA HIS_DATA // COLUNA 2 É DA HIS_TIPO // COLUNA 3 É DA HIS_LANCODIGO // COLUNA 4 É DA HIS_TIPOCODIGO // COLUNA 5 É DA HIS_DESCRICAO // COLUNA 6 É DO HIS_VALOR totalizarexecute(self); end; if key= 27 then dbgrid2.SelectedIndex := dbgrid2.SelectedIndex - 1; end;
  8. Estou fazendo um pequeno conta corrente com Delphi 7 banco de dados Firebird 2.5 TIBDatabase, TIBTransaction e ligação das tabelas com TIBDataset e tenho as seguintes tabelas: Na seção Uses declarei IB TBPROPRIETARIO TBBANCO TBCONTA TBHISTORICO TBLANCAMENTO (Cadastro plano de contas de Entradas e Saídas ex: Receitas, Salários, Conta de luz, aluguel, etc...) TBTIPOPGTO (Cadastro das formas de pagamento ex: boleto, recibo, cheque, cartão, etc...) a tabela TBPROPRIETARIO é tabela Pai de TBBANCO a tabela TBBANCO é tabela Pai de TBCONTA a tabela TBCONTA é tabela Pai de TBHISTORICO Está ocorrendo o seguinte erro: Quando faço o lançamento do primeiro registro no preenchimento dos campos do formulário não dá erro mas quando salvo só ficam aparecendo no formulário os dados das tabelas TBPROPRIETARIO, TBBANCO e TBCONTA. os dados lançados no DBGrid referente a tabela TBHISTORICO somem. Outro detalhe é que quando verifico o Banco de dados no IBExpert as chaves estrangeiras estão com os campos todos Null (todas as tabelas relacionadas) Peço ajuda a todos, por favor. Não tenho experência com o Delphi. segue o script das tabelas: /* Tabela: TBPROPRIETARIO */ CREATE TABLE TBPROPRIETARIO ( PRO_CODIGO INTEGER NOT NULL, PRO_NOMECURTO VARCHAR (20) CHARACTER SET WIN1252 COLLATE WIN1252, PRO_NOME VARCHAR (50) CHARACTER SET WIN1252 COLLATE WIN1252); /* Primary keys definition */ ALTER TABLE TBPROPRIETARIO ADD CONSTRAINT PK_TBPROPRIETARIO PRIMARY KEY (PRO_CODIGO); SET TERM ^ ; /* Triggers definition */ /* Trigger: AI_TBPROPRIETARIO_PRO_CODIGO */ CREATE TRIGGER AI_TBPROPRIETARIO_PRO_CODIGO FOR TBPROPRIETARIO ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.PRO_CODIGO IS NULL) THEN NEW.PRO_CODIGO = GEN_ID(PRO_CODIGO_GEN, 1); END ^ SET TERM ; ^ /* Tabela: TBBANCO */ CREATE TABLE TBBANCO ( BAN_CODIGO INTEGER NOT NULL, BAN_NOME VARCHAR (20) CHARACTER SET WIN1252 COLLATE WIN1252, BAN_AGENCIA VARCHAR (15) CHARACTER SET WIN1252 COLLATE WIN1252, BAN_ENDERECO VARCHAR (30) CHARACTER SET WIN1252 COLLATE WIN1252, BAN_CIDADE VARCHAR (25) CHARACTER SET WIN1252 COLLATE WIN1252, BAN_CEP CHAR (9) CHARACTER SET WIN1252 COLLATE WIN1252, BAN_UF CHAR (2) CHARACTER SET WIN1252 COLLATE WIN1252, BAN_PROCODIGO INTEGER); /* Primary keys definition */ ALTER TABLE TBBANCO ADD CONSTRAINT PK_TBBANCO PRIMARY KEY (BAN_CODIGO); /* Foreign keys definition */ ALTER TABLE TBBANCO ADD CONSTRAINT FK_TBBANCO FOREIGN KEY (BAN_PROCODIGO) REFERENCES TBPROPRIETARIO (PRO_CODIGO); /* Indices definition */ CREATE INDEX FK_TBBANCO ON TBBANCO (BAN_PROCODIGO); SET TERM ^ ; /* Triggers definition */ /* Trigger: AI_TBBANCO_BAN_CODIGO */ CREATE TRIGGER AI_TBBANCO_BAN_CODIGO FOR TBBANCO ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.BAN_CODIGO IS NULL) THEN NEW.BAN_CODIGO = GEN_ID(TBBANCO_BAN_CODIGO_GEN, 1); END ^ SET TERM ; ^ /* Tabela: TBCONTA */ CREATE TABLE TBCONTA ( CON_CODIGO INTEGER NOT NULL, CON_NOME VARCHAR (30) CHARACTER SET WIN1252 COLLATE WIN1252, CON_DEBITO DOUBLE PRECISION, CON_CREDITO DOUBLE PRECISION, CON_SALDO DOUBLE PRECISION, CON_BANCODIGO INTEGER); /* Primary keys definition */ ALTER TABLE TBCONTA ADD CONSTRAINT PK_TBCONTA PRIMARY KEY (CON_CODIGO); /* Foreign keys definition */ ALTER TABLE TBCONTA ADD CONSTRAINT FK_TBCONTA FOREIGN KEY (CON_BANCODIGO) REFERENCES TBBANCO (BAN_CODIGO); /* Indices definition */ CREATE INDEX FK_TBCONTA ON TBCONTA (CON_BANCODIGO); SET TERM ^ ; /* Triggers definition */ /* Trigger: AI_TBCONTA_CON_CODIGO */ CREATE TRIGGER AI_TBCONTA_CON_CODIGO FOR TBCONTA ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CON_CODIGO IS NULL) THEN NEW.CON_CODIGO = GEN_ID(CON_CODIGO_GEN, 1); END ^ SET TERM ; ^ /* Tabela: TBLANCAMENTO */ CREATE TABLE TBLANCAMENTO ( LAN_CODIGO INTEGER NOT NULL, LAN_NOME VARCHAR (40) CHARACTER SET WIN1252 COLLATE WIN1252); /* Primary keys definition */ ALTER TABLE TBLANCAMENTO ADD CONSTRAINT PK_TBLANCAMENTO PRIMARY KEY (LAN_CODIGO); SET TERM ^ ; /* Triggers definition */ /* Trigger: AI_TBLANCAMENTO_LAN_CODIGO */ CREATE TRIGGER AI_TBLANCAMENTO_LAN_CODIGO FOR TBLANCAMENTO ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.LAN_CODIGO IS NULL) THEN NEW.LAN_CODIGO = GEN_ID(LAN_CODIGO_GEN, 1); END ^ SET TERM ; ^ /* Tabela: TBTIPOPGTO */ CREATE TABLE TBTIPOPGTO ( TIP_CODIGO INTEGER NOT NULL, TIP_NOME VARCHAR (20) CHARACTER SET WIN1252 COLLATE WIN1252); /* Primary keys definition */ ALTER TABLE TBTIPOPGTO ADD CONSTRAINT PK_TBTIPOPGTO PRIMARY KEY (TIP_CODIGO); SET TERM ^ ; /* Triggers definition */ /* Trigger: AI_TBTIPOPGTO_TIP_CODIGO */ CREATE TRIGGER AI_TBTIPOPGTO_TIP_CODIGO FOR TBTIPOPGTO ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.TIP_CODIGO IS NULL) THEN NEW.TIP_CODIGO = GEN_ID(TIP_CODIGO_GEN, 1); END ^ SET TERM ; ^ /* Tabela: TBHISTORICO */ CREATE TABLE TBHISTORICO ( HIS_CODIGO INTEGER NOT NULL, HIS_DATA DATE, HIS_TIPO CHAR (1) CHARACTER SET WIN1252 COLLATE WIN1252, HIS_LANCODIGO INTEGER, HIS_TIPOCODIGO INTEGER, HIS_DESCRICAO VARCHAR (50) CHARACTER SET WIN1252 COLLATE WIN1252, HIS_VALOR DOUBLE PRECISION, HIS_CONCODIGO INTEGER); /* Primary keys definition */ ALTER TABLE TBHISTORICO ADD CONSTRAINT PK_TBHISTORICO PRIMARY KEY (HIS_CODIGO); /* Foreign keys definition */ ALTER TABLE TBHISTORICO ADD CONSTRAINT FK_TBHISTORICO FOREIGN KEY (HIS_LANCODIGO) REFERENCES TBLANCAMENTO (LAN_CODIGO); ALTER TABLE TBHISTORICO ADD CONSTRAINT FK_TBHISTORICO1 FOREIGN KEY (HIS_TIPOCODIGO) REFERENCES TBTIPOPGTO (TIP_CODIGO); ALTER TABLE TBHISTORICO ADD CONSTRAINT FK_TBHISTORICO2 FOREIGN KEY (HIS_CONCODIGO) REFERENCES TBCONTA (CON_CODIGO); /* Indices definition */ CREATE INDEX FK_TBHISTORICO ON TBHISTORICO (HIS_LANCODIGO); CREATE INDEX FK_TBHISTORICO1 ON TBHISTORICO (HIS_TIPOCODIGO); CREATE INDEX FK_TBHISTORICO2 ON TBHISTORICO (HIS_CONCODIGO); SET TERM ^ ; /* Triggers definition */ /* Trigger: AI_TBHISTORICO_HIS_CODIGO */ CREATE TRIGGER AI_TBHISTORICO_HIS_CODIGO FOR TBHISTORICO ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.HIS_CODIGO IS NULL) THEN NEW.HIS_CODIGO = GEN_ID(HIS_CODIGO_GEN, 1); END ^ SET TERM ; ^
×
×
  • Criar Novo...