Esse artigo faz parte da revista Clube Delphi Edição 88. Clique aqui para ler todos os artigos desta edição

lass=Corpo style="MARGIN: 0cm 0cm 0pt 64.35pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; tab-stops: list 64.35pt; mso-list: l16 level1 lfo20" align=left>·         Cadastro de Clientes;

·         Cadastro de Fornecedores;

·         Cadastro de Contas Correntes;

·         Data Module principal;

Daremos continuidade ao curso desenvolvendo o cadastro de contas a pagar como mencionado anteriormente, para isso, precisamos alterar o banco de dados, incluindo mais uma tabela.

Alterando o banco de dados de exemplo

Inicie o IBExpert e vamos criar a tabela Contas_Pagar. Após conectar ao banco de dados no IBExpert, clique com o botão direito sobre o item Tables e escolha a opção New Table. No alto da janela, aparecerá o nome da tabela sugerido, troque-o para “Contas_Pagar”.

Em seguida para criar um campo, digite o nome em Field Name, selecione seu tipo em Field Type e marque o item Not Null (caso seja necessário). Caso prefira, execute o script da Listagem 1.

 

Listagem 1. Criação da tabela e índices Contas_Pagar

CREATE TABLE CONTAS_PAGAR (

    CODIGO        VARCHAR(20) NOT NULL,

    CNPJ          VARCHAR(18) NOT NULL,

    DESCRICAO     VARCHAR(60) NOT NULL,

    VLR_REAL      NUMERIC(15,2),

    VLR_PAGO      NUMERIC(15,2),

    JUROS         NUMERIC(15,2),

    MORA          NUMERIC(15,2),

    DT_CADASTRO   TIMESTAMP,

    DT_VECTO      TIMESTAMP,

    DT_PAGTO      TIMESTAMP,

    BANCO         INTEGER,

    AGENCIA       VARCHAR(10),

    CONTA         VARCHAR(10),

    STATUS        VARCHAR(1),

    DT_ALTERACAO  TIMESTAMP);

ALTER TABLE CONTAS_PAGAR

ADD CONSTRAINT PK_CONTAS_PAGAR

PRIMARY KEY (CODIGO, CNPJ);

 

ALTER TABLE CONTAS_PAGAR

ADD CONSTRAINT FK_CONTAS_PAGAR_BANCO

FOREIGN KEY (BANCO, AGENCIA, CONTA)

REFERENCES CONTAS (BANCO, AGENCIA, CONTA)

ON UPDATE CASCADE;

 

ALTER TABLE CONTAS_PAGAR

ADD CONSTRAINT FK_CONTAS_PAGAR_CNPJ

FOREIGN KEY (CNPJ) REFERENCES FORNECEDORES (CNPJ)

ON UPDATE CASCADE;

 

Nota: O campo CODIGO é do tipo VarChar para armazenar o número da conta a pagar. No caso, pode ser o número de uma nota fiscal, número de referência da conta de água etc. Caso deseje, crie um campo CODIGO como auto-incremento da tabela e crie um campo NUMERO_DOCUMENTO, por exemplo.

 

O interessante e mais importante nesse momento é que criaremos chaves estrangeiras para um maior controle de integridade dos dados manipulados pelo sistema. Note que na nova tabela temos os campos CNPJ, Banco, Agencia e Conta. O primeiro campo deverá conter o mesmo conteúdo do campo de mesmo nome, da tabela Fornecedores, isso porque obrigaremos o usuário final a escolher um fornecedor válido para inclusão do lançamento de contas a pagar.

Também nesses mesmos moldes, será necessário que o usuário informe o banco, agência e conta que o lançamento foi pago no ato da baixa. Feito isso, teremos que atentar ao seguinte detalhe: e se houver a necessidade de alterar o CNPJ do fornecedor, embora chave primária, ou mesmo alterar o número da conta corrente? Como ficarão nossos lançamentos no contas a pagar?

Pensando nisso usaremos um recurso bastante útil no banco de dados: Foreing Key, ou, Chave Estrangeira. As chaves estrangeiras informam para o banco, que determinado campo está associado a outro campo de outra tabela. Sendo assim, toda vez que um registro origem é alterado ou apagado, os mesmo são refletidos nas tabelas que contém essas chaves estrangeiras, mantendo a integridade dos dados.

A criação de chaves estrangeiras no banco é muito simples. Após criada a tabela Contas_Pagar, clique duas vezes nela e note que ao abrir, o IBExpert mostra algumas abas. Uma delas é a Constraints. Primeiramente criaremos uma chave primária para a base de dados usando a aba Primary Key (siga os passos a seguir, se não usou o código da Listagem 1).

Clique com o botão direito na área em branco e selecione New primary key. Em Contraint Name digite “PK_CONTAS_PAGAR”. Clique em On Field e na tela que se abre, selecione os campos Codigo e CNPJ movendo-os para a direita e depois clicando no “X” no canto esquerdo inferior da caixa de diálogo. Repita o nome do índice em Index Name e marque como Ascending em Index Sorting. Por fim clique no botão com o símbolo de um raio para confirmar a criação do índice primário.

Agora criaremos nossas chaves estrangeiras. Para isso, clique na aba Foreing Key e em seguida clique com o botão direito em uma área em branco. Selecione o item New Foreing Key. Em Constraint Name digite “FK_CONTAS_PAGAR_BANCO”. Na coluna On Field selecione o campo CNPJ. Em FK Table devemos escolher a tabela que possui o campo que estamos fazendo referência, nesse caso Fornecedores. Em seguida, em FK Field devemos escolher os campos da tabela origem que fazem vínculo com os campos escolhidos em On Field.

Escolha CNPJ, e logo em seguida teremos que configurar apenas mais duas colunas: Update Mode e Delete Mode. Em ambas, encontramos os valores No Action, Cascade, Set Null e Set Default. Para Update Mode usaremos Cascade, pois toda vez que tivermos alterações na tabela origem, as mesmas devem ser refletidas nas tabelas filhas automaticamente.

em Delete Mode deixaremos como No Action, para que nenhuma ação seja executada caso excluirmos o registro origem. Lembre-se que em nosso sistema não faremos exclusão definitiva no banco de dados, apenas alteramos o Status para “I” de inativo.

Feitas essas alterações basta clicar no item do raio. Repita esses passos incluindo mais uma ...

Quer ler esse conteúdo completo? Tenha acesso completo