[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 594: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 650: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1110: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1110: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1110: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5277: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5277: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5277: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
Fórum Xmaker • Mais de uma referëncia para a mesma tabela
Página 1 de 1

Mais de uma referëncia para a mesma tabela

Enviado: Junho 25th, 2011, 11:45 pm
por joelmva
Olá pessoal.

Estou testando XMAKER e estas são minhas primeiras dúvidas.
Tenho uma tabela chamada CADASTRO e nela tenho registros correspondente a dados diferentes. Ao invés de ter uma tabela para departamentos, outra para gerentes e outra para setores. Tenho isso em uma única tabela e o que diferencia um registro do outro é o campo CLASSE:
Tabela CLASSE
ID_CLASSE NOME
1 DEPARTAMENTOS
2 GERENTES
3 SETORES

Tabela CADASTRO
ID_CADASTRO ID_CLASSE NOME
1 1 DEPARTAMENTO 1
2 2 GERENTE 1
3 3 SETOR 1
4 1 DEPARTAMENTO 2
5 1 DEPARTAMENTO 3
6 3 SETOR 2
7 2 GERENTE 2

Tabela FUNCIONARIO
ID_FUNCIONARIO NOME DEPARTAMENTO GERENTE SETOR
1 JOAO 1 2 6
2 JOSE 4 7 3

1) Como eu faço a referência e integridade referencial no momento da definição da tabela "FUNCIONARIO"?
2) Quando eu criar o formulário de entrada de dados, como eu aplico filtros para pegar apenas os registros
correpondentes a cada classe?
3) E nos relatórios? Como exibir apenas os registros da classe escolhida?

Re: Mais de uma referëncia para a mesma tabela

Enviado: Junho 27th, 2011, 9:59 am
por Suporte
Olá,

Poderia exemplificar melhor(com dados) o que cada tabela tem, para entendermos melhor?
Nos parece um relacionamento simples e ref. ao relatório... o que for feito para a tabela é herdado no Rel. assim
você não precisa se preocupar...

Popule com exemplo de como você quer e informe os nomes de campos e chaves de acesso de suas tabelas para que possamos montar seu relacionamento.

Se você quiser pode nos enviar seu projeto de testes para montarmos para você.

Não esqueça porém de exemplificar para podermos entender melhor.

Re: Mais de uma referëncia para a mesma tabela

Enviado: Junho 27th, 2011, 11:09 am
por joelmva
Olá,

Estou detalhando melhor.
Na verdade, a grande dúvida é como estabelecer os filtros no formulário para quando o usuário estiver escolhendo "departamentos", não parecer registros de "setores" e "gerentes".
E se essa seleção não é onerosa para o banco causando lentidão no processo.

TABELA "CLASSE"
id_classe -> 1
nome -> DEPARTAMENTOS

id_classe -> 2
nome -> GERENTES

id_classe -> 3
nome -> SETORES


TABELA "CADASTRO"
id_cadastro -> 100
id_classe -> 1
nome -> DEPARTAMENTO 1

id_cadastro -> 101
id_classe -> 2
nome -> GERENTE 1

id_cadastro -> 102
id_classe -> 3
nome -> SETOR 1

id_cadastro -> 103
id_classe -> 1
nome -> DEPARTAMENTO 2

id_cadastro -> 104
id_classe -> 1
nome -> DEPARTAMENTO 3

id_cadastro -> 105
id_classe -> 3
nome -> SETOR 2

id_cadastro -> 106
id_classe -> 2
nome -> GERENTE 2

TABELA "FUNCIONARIO"
id_funcionario -> 1001
nome -> JOAO
departamento -> 100
gerente -> 101
setor -> 102

id_funcionario -> 1002
nome -> JOSE
departamento -> 103
gerente -> 106
setor -> 105

Re: Mais de uma referëncia para a mesma tabela

Enviado: Junho 28th, 2011, 11:36 am
por Gustavo
Olá,

o seu caso é semelhante ao um exmplo que postamos no forum.


Você terá que criar tabelas virtuais da tabela CADASTRO para poder relacionar com a tabela de FUNCIONARIO, visto que é necessário "puxar" os dados dos campos "gerente" e "setor" da tabela CLASSE

Re: Mais de uma referëncia para a mesma tabela

Enviado: Junho 29th, 2011, 8:39 am
por joelmva
Olá Gustavo,

No exemplo indicado, há uma duplicação da tabela "Fornecedores". Não sei como ela foi criada mas se tivermos que repetir todos os campos para criar uma tabela virtual, a possibilidade de erros é grande.
Eu fiz o seguinte e corrija-me se estiver errado:
- Na tabela 'FUNCIONARIOS' eu fui em HERDAR e selecionei o campo "id_classe' da tabela CADASTRO.
- No campo ID_CADASTRO eu alterei o "nome do objeto" para "ID_CADASTRO_DEPARTAMENTO' e criei as integridades referenciais.
- Repeti a operação e rebatizei o campo para "ID_CADASTRO_GERENTE"
- Repeti a operação e rebatizei o campo para "ID_CADASTRO_SETOR"

Desse modo eu fiquei com três campos referenciando a mesma tabela.
Minha dúvida agora é como estabelecer um filtro no formulário para que cada campo só mostre os registros da tabela CADASTRO que lhe são particulares (usando o campo ID_CLASSE como elemento de filtro).

Re: Mais de uma referëncia para a mesma tabela

Enviado: Junho 29th, 2011, 4:11 pm
por Gilberto
Eu acredito que a solução seira usar tabelas virtuais.
Nos relacionamentos usar filtragem fixa.

Re: Mais de uma referëncia para a mesma tabela

Enviado: Junho 29th, 2011, 6:20 pm
por joelmva
Olá Gilberto,

Existem uma maneira de se criar tabelas virtuais a partir de uma tabela existente, copiando todos os seus campos e relacionamentos? Ou é no braço mesmo?
Nesse caso, se eu tiver quatro tabelas virtuais e criar um novo campo, tenho que replicar isso para as outras tabelas?

Não entendi como é criado esse tipo de tabela.

Re: Mais de uma referëncia para a mesma tabela

Enviado: Junho 30th, 2011, 8:56 am
por Gustavo
O que você tem que fazer é criar a tabela virtual e na propriedade "Nome Físico" escolher qual tabela já existente a virtual irá pertencer.

Para não criar no braço todos os campos da tabela existente, selecione a tabela virtual criada e depois é só clicar no botão "Herdar" e escolher os campos de qual tabela quer herdar.

tabela_virtual.jpg

Re: Mais de uma referëncia para a mesma tabela

Enviado: Junho 30th, 2011, 12:05 pm
por megafsem
Gustavo
parabéns, eu estava com um problema parecido e a solução foi perfeita

Re: Mais de uma referëncia para a mesma tabela

Enviado: Junho 30th, 2011, 11:48 pm
por joelmva
Olá Gustavo.

Bom, se não tem outro jeito...
No meu caso, por padrão, tabelas básicas de apoio que contém geralmente somente os campos código e nome, eu agrupo numa uma única tabela chamada "CADASTRO". eX: CATEGORIA, GRUPO, SUBGRUPO, DEPARTAMENTO, GERENTES, UNIDADES DE MEDIDA, etc.
Imaginem então a quantidade de tabelas virtuais que terei que criar. Já tive sistemas com mais de 20 dessas tabelas.

Se alguém tiver alguma outra dica que não seja criando as tabelas virtuais...

Abraços.