• Nenhum resultado encontrado

Ficha prática nº 8. SGBD Microsoft SQL Server e projecto do Microsoft Access

N/A
N/A
Protected

Academic year: 2021

Share "Ficha prática nº 8. SGBD Microsoft SQL Server e projecto do Microsoft Access"

Copied!
6
0
0

Texto

(1)

I

I

n

n

s

s

t

t

i

i

t

t

u

u

t

t

o

o

S

S

u

u

p

p

e

e

r

r

i

i

o

o

r

r

P

P

o

o

l

l

i

i

t

t

é

é

c

c

n

n

i

i

c

c

o

o

d

d

e

e

V

V

i

i

s

s

e

e

u

u

E

E

s

s

c

c

o

o

l

l

a

a

S

S

u

u

p

p

e

e

r

r

i

i

o

o

r

r

d

d

e

e

T

T

e

e

c

c

n

n

o

o

l

l

o

o

g

g

i

i

a

a

D

D

e

e

p

p

a

a

r

r

t

t

a

a

m

m

e

e

n

n

t

t

o

o

d

d

e

e

I

I

n

n

f

f

o

o

r

r

m

m

á

á

t

t

i

i

c

c

a

a

Ficha prática nº 8

SGBD Microsoft SQL Server e projecto do Microsoft Access

Objectivos: Continuação do desenvolvimento de uma aplicação em ambiente cliente servidor:

Exploração de capacidades de ferramentas cliente (tratamento de eventos, utilização de recordsets e execução de operações de manipulação de registos via ADO); Utilização de procedimentos armazenados e triggers.

I

1. Teste os diferentes tipos de (cursores de) recordsets, visualizando o conteúdo de um recordeset de cada tipo antes e depois de operações de alteração e inserção (ou remoção) de dados. Para tal crie o formulário apresentado na Figura 1.

Figura 1- Formulário frm_teste_recordsets

AJUDA:

Com o intuito de analisar o efeito (se algum) de operações de manipulação de dados, no conteúdo do recordset, associe as seguintes acções a cada um dos botões da Figura 1: A1- Criação de recordset do tipo especificado, que selecciona os registos de uma tabela

(e.g. N_ingrediente e Designação da tabela Ingredientes); A2- Visualização do conteúdo do recordset;

A3 - Alteração de registo(s) da tabela utilizada em A1; A4- Nova visualização do conteúdo do recordset;

A5 - Inserção de registo(s) na tabela utilizada em A1 e A3; A6 - Nova visualização do conteúdo do recordset;

Para facilitar a implementação das acções anteriores, considere as seguintes sugestões: a) Crie o seguinte subprograma, a usar na implementação das acções A2, A4 e A5:

Sub mostra (rst As Recordset)

Descrição: Percorre os registos do recordset, guardando numa variável local do tipo string

o conteúdo de cada registo, através de concatenações sucessivas; Recorra a espaços e mudanças de linha para tornar o conteúdo da variável local legível

(2)

a) Crie dois subprogramas em VBA, altera e insere, a usar na implementação das acções A3 e A5. Utilize o método Execute do objecto Connection para realizar as operações de manipulação de registos destes subprogramas. Consulte a ajuda do Access para obter mais informação sobre este método.

II

2. Para iniciar a implementação das operações de gestão de stocks, adicione ao formulário menup os controlos apresentados na Figura 2, utilizando os seguintes nomes:

Grupo de opções – og_stock;

Botões: Cmd_consultar_c, Cmd_Editar_c, Cmd_inserir_c, cmd_reabast;

Caixa de verificação – cb_filtrar_c.

Figura 2 - Formulário Menup

3- Crie os seguintes formulários:

3.1- Formulário frm_ing_forns e subformulário sub_ing_forns, de acordo com a Figura 3; 3.2- Formulário frm_fornecedores e subformulário sub_fornecedores, de acordo com a

Figura 4 e Figura 5; (utilize este formulário para actualizar os dados da tabela Ing_forn de acordo com os valores das figuras).

(3)

Figura 4 - Formulário frm_fornecedores (registo 1)

Figura 5 - Formulário frm_fornecedores (registo 2)

III

4. Implementação de reabastecimento automático.

A finalidade da operação de reabastecimento automático consiste em inserir automaticamente encomendas, para os ingredientes que necessitam de ser reabastecidos. Antes de inserir uma encomenda, é ainda necessário analisar as encomendas existentes, para garantir que não se inserem múltiplas encomendas do mesmo ingrediente. Sem esta verificação, corre-se o risco de inserir encomendas duplicadas, quando se repete a execução desta operação.

(4)

6.1- Crie a tabela Encomendas de acordo com as características ilustradas na Tabela 1. Adicionalmente, os atributos N_ingrediente e N_forn formam (em conjunto) uma chave estrangeira para a tabela Ing_forn.

Atributo Tipo de Dados Restrições de integridade Nencomenda N_ingrediente N_forn Estado Data Quantidade Quantidade_recebida Int Int Int Char(1) Datetime Float Float Chave primária Não nulo Não nulo

Valor por defeito ‘N’ e valores válidos ∈ [‘N’,’P’,’R’]1 Valor por defeito data corrente

Valor por defeito 0 Tabela 1- Tabela Encomendas

4.2- Crie o formulário frm_encomendas, baseado na tabela Encomendas, utilizando um

esquema de formulário em tabela;

Figura 6 – Formulário frm_encomendas

4.3- Elabore os seguintes subprogramas:

Function obter_elemento_rst(rst As Recordset) - devolve o valor do primeiro campo

do último registo do recordset rst ou 0 no caso de não existirem registos;

Function obter_fornecedor_por_defeito(N_ing As Long) - devolve o código do

fornecedor por defeito de um ingrediente (se este existir);

Sub Insere_encomenda(N_ing As Long, N_forn As Long, quant_enc As Double) -

obtém o próximo número sequencial de encomenda e insere uma nova encomenda na tabela encomendas.

4.4- Implemente gradualmente o código necessário para o tratamento do evento

cmd_reabastecer_Click(). Utilize os subprogramas anteriormente criados e tenha em

consideração os seguintes requisitos:

• O reabastecimento automático só se aplica aos ingredientes que necessitam de ser reabastecidos; Consequentemente, o processo de reabastecimento só deve incluir os ingredientes cujas existências sejam <= que a quantidade_alerta;

• É necessário analisar as encomendas existentes, antes de inserir uma nova encomenda de um ingrediente a reabastecer; Deve verificar se a quantidade das encomendas em curso (que ainda não foram totalmente recebidas ou sem entregas) cobre as necessidades de reabastecimento do ingrediente; Em caso afirmativo, não deve inserir uma nova encomenda. Deve ainda supor que o valor da quantidade_recebida, das encomendas parcialmente recebidas, já foi anteriormente adicionado às existências;

1 N - Normal, R - (totalmente) Recebida e P - Parcialmente recebida (quando quantidade_recebida <quantidade).

(5)

• Na inserção de uma encomenda deve utilizar o fornecedor por defeito e a quantidade_encomenda do ingrediente;

• Para terminar o processo de reabastecimento automático, deve mostrar os dados de todas as encomendas em curso ao utilizador, para que este possa alterar as novas encomendas (que entretanto gerou) e consultar as encomendas pendentes.

4.5- Substitua a invocação do subprograma Insere_encomenda (gerado no ponto 4.3) pela execução de um procedimento armazenado, sp_insere_encomenda, que realize as mesmas acções.

IV

5. Actualização automática de entradas de ingredientes.

A finalidade da operação de actualização automática de entradas de ingredientes consiste em facilitar o registo da recepção dos ingredientes encomendados, através das seguintes acções: preenchimento automático de alguns controlos do formulário de registo de entradas, validação de dados e actualização automática de atributos das tabelas ingredientes (e.g. existências) e encomendas (e.g. estado e quantidade_recebida).

5.1- Crie a tabela Entradas de acordo com as características ilustradas na Tabela 2. Atributo Tipo de Dados Restrições de integridade

N_entrada N_encomenda Data Quantidade Int Int Datetime Float Chave primária

Chave estrangeira da tabela Encomendas Valor por defeito data corrente

Tabela 2- Tabela Entradas

5.2- Crie o formulário frm_entradas, baseado na tabela Entradas e no atributo N_ingrediente da tabela Encomendas. Utilize ainda um esquema de formulário em tabela

5.3- Dado o valor do número de encomenda, trate o evento N_encomenda_After_update, do controlo N_encomenda do formulário frm_entradas, preenchendo automaticamente o valor da quantidade (da entrada); O valor por defeito da quantidade será determinado com base em atributos da tabela encomendas, subtraindo a quantidade_recebida à quantidade (encomendada);

5.4- Valide o valor da quantidade introduzida no formulário frm_entradas, de modo a não permitir que seja definido um valor maior do que a quantidade que falta receber;

5.5- Trate o evento Form_AfterInsert, do formulário frm_entradas, através da actualização dos valores das tabelas ingredientes e encomendas;

5.6- Substitua o tratamento do evento anterior (Form_AfterInsert do formulário frm_entradas) por um trigger que realize as mesmas acções.

(6)

V

6. Gere o código necessário para implementar as seguintes acções:

6.1- Garantir que um ingrediente só possui um fornecedor utilizado por defeito:

Cada ingrediente pode ser fornecido por vários fornecedores, mas só pode ter um fornecedor por defeito (Utilizado = true), para que as encomendas de ingredientes possam ser geradas automaticamente; Assim sendo, a selecção de um fornecedor a utilizar, através da caixa de verificação Utilizado, deve alterar o valor de Utilizado do fornecedor anterior para falso;

(Sugestão: Para implementar esta acção mais facilmente, garantindo que um ingrediente só tem um fornecedor utilizado, só devem ser permitidas alterações do campo utilizado de falso para verdadeiro. Em caso contrário, o utilizador deve ser avisado e a alteração deve ser anulada. Esta acção deve ser implementada para os dois sub-formulários criados no ponto 3);

6.2- Garantir que um ingrediente tem sempre um fornecedor utilizado associado:

• Criar um botão Ver fornecedores no formulário frm_ingredientes, que abre o formulário frm_ing_forns, para visualização, alteração e definição dos fornecedores de um dado ingrediente;

• Forçar a definição de um fornecedor utilizado após criação de um novo ingrediente, através das acções e tratamento dos eventos convenientes.

7- Filtragem de registos da tabela ingredientes:

7.1- Crie o Formulário frm_filtro_ingredientes para especificação de critérios de filtragem de registos a apresentar no formulário frm_ingredientes;

7.2- Gere o código necessário para tratar a opção ingredientes, tendo em consideração que deve ser implementada executando as tarefas equivalentes às apresentadas na ficha nº6 para a tabela receitas;

8- Implemente a filtragem de registos do formulário frm_fornecedores através do formulário frm_filtro_fornecedores, de forma equivalente ao ponto 7.

Referências

Documentos relacionados

Não é bem indigno de um homem nunca poder conciliar-se consigo mesmo, ter uma regra para suas ações, outra para seus sentimentos, pensar como se não tivesse corpo, agir como se

Tendo em vista que as características das compras compulsivas envolvem questões de or- dem cognitiva como preocupações mal-adaptati- vas, impulsos irresistíveis e repetitivos,

A cidade do Rio de Janeiro também era fundamental como centro abastecedor de produtos agrícolas para as Minas Gerais e para a exportação para Portugal, costa da África e Rio da

Situação diferente nas escolas municipais do município de Tabatinga, onde a merenda escolar é servida aos alunos antes do intervalo, pois os gestores da rede

MCITP: Business Intelligence Developer on SQL Server 2005 Microsoft Certified Database Administrator – SQL Server

- Você escolhe o seu nome, a sua marca, a sua imagem - Tem total liberdade e comando sobre as decisões na sua empresa - Pode desenvolver de forma imediata cursos certificados

Um Availability Group suporta failover para um conjunto de bancos de dados e aproveita a tecnologia de espelhamento de ban- co de dados (database mirroring) existente para

Para compreender a relação entre a competitividade e o planejamento urbano foram analisados os seguintes modelos de avaliação da competitividade de destinos turísticos: