1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[duvida]access

Discussão em 'Programação' iniciada por adolfo dias, 5 de Novembro de 2008. (Respostas: 8; Visualizações: 915)

  1. adolfo dias

    adolfo dias Power Member

    boas

    estou aqui a fazer umas tabelas, mas preciso de saber como ou se é possivel uma coisa.

    tenho 3 tabelas

    principal, campo A e campo B
    cada uma das tabelas campo tem apenas uma celula com a designação do campo
    na tabela principal tenho ID como chave principal e numeração auto e uma campo A ligado à tabela campo A e campo B ligado à tabela campo B

    precisava de uma forma de introduzir os dados na tabela principal e eles serem gravados nas tabelas de ligação

    isto nem a mim me faz sentido e é algo que poderia ser feito em 2 colunas de excel, mas preferia ter em access

    TIA
     
  2. soaked

    soaked Power Member

    Se estás a falar inserir automaticamente, não dá, pelo menos em Access. Pra isso precisavas de estar a trabalhar num motor de BD que usasse "Triggers" (Eventos que acontecem quando um registo é INSERIDO/ACTUALIZADO/APAGADO ) da tabela

    Cumps
     
  3. adolfo dias

    adolfo dias Power Member

    então n há forma de em access ao introduzir registos na bd eles ficarem disponiveis nas caixas de selecção? apenas com uma tabela ou gravando automaticamente nas "subtabelas"

    ok obrigado
     
  4. p3dro

    p3dro Power Member

    Se estiveres a inserir dados através dos formulários, podes sempre adicionar um controlo que é o sub-formulário.
    O Access irá fazer essa actualização automaticamente, desde que tenhas bem configurados os campos, basicamente a primary e foreign key.
     
    Última edição: 6 de Novembro de 2008
  5. adolfo dias

    adolfo dias Power Member

    sim, posso criar um formulário

    e isso vai-me gravar as entradas nas tabelas dos campos e dar as caixas de selecção no formulário?
    sou um bocado básico no access, onde posso encontrar esses subformulários?
     
  6. p3dro

    p3dro Power Member

    Se tiveres a estrutura e relações das tabelas bem feita, é fácil.
    No design do formulário tens a caixa de controlos, aí tens um controlo que se chama "subformulário/subrelatório", adicionas esse controlo.

    Depois terás de configurar pelo menos 3 propriedades:
    Objecto de Origem: pode ser outro formulário ou a própria Tabela "B"
    Ligar campos incorp.: (a foreign key da tabela "B")
    Ligar campos principais: (a primary key da tabela "A")

    Se tiver tudo ok, quando inserires um registo no Formulário, automaticamente será "propagado" no "subformulário/subrelatório".

    Acho que é algo deste tipo, senão conseguires fazer diz, que eu envio-te um exemplo simples.
     
  7. adolfo dias

    adolfo dias Power Member

    entretanto ja tinha encontrado os subforms, mas agr ao ler a tua dica abre-se um novo problema

    as minhas tabelas à excepção da principal n tem chaves definidas. consta apenas um campo em cada uma.

    basicamente tenho uma tabela "matriculas" e uma tabela "marcas" com os respectivos campos e dps tenho a principal com "ID", "marcas" e "matriculas"

    agr que vejo bem a coisa parece-me estupido, pois posso ter apenas a tabela principal ou n?
    mas ai tb n haveria hipotese de ter a caixa de seleccção certo?
     
  8. p3dro

    p3dro Power Member

    Deixa-me ver se percebi, tu tens uma tabela A (dados mestre), uma Tabela B (guarda matriculas) e uma tabela C (guarda marcas). Seguindo a lógica :p que a tua tabela A guarda dados de um carro, então a correspondência de A=>B e A=>C é 1->1? Ou seja um carro terá 1 e só 1 matricula, bem como 1 e só 1 marca.

    Se a tua tabela B tiver só a armazenar matriculas, para simplificar, poderás optar por adicionar esse campo na tabela principal, como um campo de texto, se bem que não está de todo errado criar uma tabela só para isso! Quando deres a normalização de tabelas vais perceber.


    A tua tabela C vai só conter marcas, partindo do principio que essas marcas, são as marcas "normais" de automoveis, Fiat, VW, Ford, etc, etc., esta tabela poderá conter 2 campos, um ID e um campo de texto para escreveres a marca.

    (vou utilizar o "pk" e "fk" como abreviaturas para "primary key" e "foreign key", respectivamente)

    A estrutura ficaria algo deste tipo:
    Automoveis(pk_automovel, matricula, fk_marca) (AutoNumber, Text, Number)
    Marcas (pk_marca, nome) (AutoNumber, Text)

    Sendo que no campo "fk_marca" vais guardar o valor correspondente da tabela Marcas (pk_marca), isto faz com que por ex. se tiveres de alterar/ adicionar o texto de uma Marca não precises de alterar nada na tabela Automoveis, pois ai só guardas o ID dessa marca (pk_marca).

    O teu formulário principal ficaria algo deste tipo:
    ID Automóvel => AutoNumber
    Matricula=> caixa de texto
    Marca => caixa de selecção

    E a caixa de selecção da Marca vai então ser preenchida pelo conteúdo da tabela Marcas, sendo que apenas guardas o respectivo ID (pk_marca) dessa opção, esse valor vai ficar guardado na tabela Automoveis no campo (fk_marca)

    Para a tal caixa de selecção adicionas o controlo respectivo, depois terás apenas de fazer algumas customizações:

    Tipo de Origem da Linha: Tabela/consulta
    Origem da Linha: Select nome, pk_marca From Marcas Order by nome asc;
    Coluna Dependente: 2 (isto vai indicar que só queres armazenar o valor de "pk_marca")
    Número de Colunas: 2
    Largura das Colunas: 10cm;0cm => O 0cm é só para esconder o campo pk_marca, para não ser visualizado o código das marcas, é só estético
    Nome: fk_marca
    Origem do Controlo: fk_marca

    Uma coisa engraçada que o Access tem é que se fizeres estas customizações quando estás a construir a tabela, depois ao adicionar o campo (arrastar directamente da "Lista de Campos"), o controlo "Caixa de Combinação" é logo criado automaticamente com todas estas definições.

    Espero não ter percebido o mal o que pretendes :bounce:, senão conseguires diz-me que eu envio-te 1 exemplo simples, mas claro que o teu objectivo será fazeres sozinho e perceberes! :)
     
    Última edição: 8 de Novembro de 2008
  9. adolfo dias

    adolfo dias Power Member

    agradeço-te imenso a explicação, mas confesso que n percebi metade :|
    já dei access há um par de anos e como n foi area que me interessasse particularmente fiz questão de ir esquecendo
    isto n é essencial, foi apenas algo que me ocorreu pra matar o tempo livre, mas já vi que tenho de ter pensamentos mais uteis :lol:

    acho que será mais fácil introduzir dd logo as marcas na tabela correspondente e dps usar uma caixa de selecção ou se calhar crio mas é uma tabela em excel que é mais fácil de consultar e manter

    mais uma vez obrigado pela ajuda, vou ver como consigo dar a volta a isto
     

Partilhar esta Página