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);
Pergunta
alemoraes
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 */
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 */
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 */
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 ; ^
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 */
/* 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);
/* Triggers definition */
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 ; ^
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.