Circular datalinks are not allowed
Eu inseri um DBLookUpComboBox e um StringGrid em um Form. Relacionei os campos de duas tabelas e gostaria que, ao selecionar um ítem no DBLookUpComboBox, aparecesse somente os registros que possuíssem aquele campo selecionado, mas aparece a mensagem ´Circular datalinks are not allowed´ quando eu rodo o programa. O que pode ser?
Obrigado,
Gustavo.
Obrigado,
Gustavo.
The_gugs
Curtidas 0
Respostas
Edilcimar
30/01/2004
isto acontece quando vc tenta ligar uma tabela A a uma Tabela B e a tabela B na tabela A ou seja: vc está dizendo que A é dependente de B e que B é dependente de A, isto é uma informação circular, não importe se é uma tabela um dblookup ou qualquer outro componente, portanto verifique as conecções entre a tabela e o dblookup que vc está tentando fazer isto que eu expliquei
GOSTEI 0
The_gugs
30/01/2004
Significa, então, que eu estou tentando relacionar uma tabela que já está relacionada?
Explicando melhor o que eu fiz:
Criei uma tabela Área e uma tabela Curso, a tabela Curso possui um campo chamado área, no qual vai o campo código da tabela Área. No dblookup eu puz as áreas e num stringgrid eu puz os cursos. No dblookup eu relacionei o campo área da tabela Curso com o código da tabela Área e como resultado o nome das áreas. No table da tabela Curso, em MasterSource, eu puz o datasource da tabela Área e em MasterFields o código da tabela Área relacionado com o área da tabela Curso.[/b]
Explicando melhor o que eu fiz:
Criei uma tabela Área e uma tabela Curso, a tabela Curso possui um campo chamado área, no qual vai o campo código da tabela Área. No dblookup eu puz as áreas e num stringgrid eu puz os cursos. No dblookup eu relacionei o campo área da tabela Curso com o código da tabela Área e como resultado o nome das áreas. No table da tabela Curso, em MasterSource, eu puz o datasource da tabela Área e em MasterFields o código da tabela Área relacionado com o área da tabela Curso.[/b]
GOSTEI 0
Mordred
30/01/2004
Caraca! Não tô entendendo o que aconteceu aqui...
Tenho duas tabelas, uma se chama Funcionário e outra se chama Usuário. Todo usuário do sistema precisa ser funcionário cadastrado, ou seja, a tabela de Usuário tem uma chave estrangeira que aponta para a tabela de Funcionário. Até aí beleza.
Montei uma tela onde tenho um DBLookup Combo ligada com o campo CodFunc da tabela de Usuários que mostra o campo Nome da tabela de Funcionários. Não poderia ser diferente, poderia? Mas o que acontece é que quando chamo o comando tabFuncionarios.Open, o Delphi dá um erro de ´circular datalinks are not allowed´. Onde foi que eu errei?
Tenho duas tabelas, uma se chama Funcionário e outra se chama Usuário. Todo usuário do sistema precisa ser funcionário cadastrado, ou seja, a tabela de Usuário tem uma chave estrangeira que aponta para a tabela de Funcionário. Até aí beleza.
Montei uma tela onde tenho um DBLookup Combo ligada com o campo CodFunc da tabela de Usuários que mostra o campo Nome da tabela de Funcionários. Não poderia ser diferente, poderia? Mas o que acontece é que quando chamo o comando tabFuncionarios.Open, o Delphi dá um erro de ´circular datalinks are not allowed´. Onde foi que eu errei?
GOSTEI 0
Mordred
30/01/2004
Deixa eu especificar melhor...
Esta é a tabela de Funcionario
E esta é a tabela de Usuário
Esta é a tabela de Funcionario
SET SQL DIALECT 3; SET NAMES WIN1252; /**************************************************************************/ /**** Tables ****/ /**************************************************************************/ CREATE TABLE FUNCIONARIO ( CODFUNC INTEGER NOT NULL, RG TEXTOPEQ NOT NULL /* TEXTOPEQ = VARCHAR(20) */, CPF TEXTOPEQ NOT NULL /* TEXTOPEQ = VARCHAR(20) */, NOME TEXTOGDE NOT NULL /* TEXTOGDE = VARCHAR(60) */, DATANASC DATE NOT NULL, ENDERECO TEXTOGDE NOT NULL /* TEXTOGDE = VARCHAR(60) */, BAIRRO TEXTOMEDIO NOT NULL /* TEXTOMEDIO = VARCHAR(30) */, CIDADE TEXTOMEDIO NOT NULL /* TEXTOMEDIO = VARCHAR(30) */, ESTADO VARCHAR(2) NOT NULL, CEP TEXTOCURTO /* TEXTOCURTO = VARCHAR(15) */, COMPL TEXTOMEDIO /* TEXTOMEDIO = VARCHAR(30) */, TELEFONE TEXTOCURTO /* TEXTOCURTO = VARCHAR(15) */, RAMAL INTEGER, CELULAR TEXTOCURTO /* TEXTOCURTO = VARCHAR(15) */, EMAIL TEXTOGDE /* TEXTOGDE = VARCHAR(60) */, IDSETOR TEXTOPEQ NOT NULL /* TEXTOPEQ = VARCHAR(20) */, IDCARGO TEXTOPEQ NOT NULL /* TEXTOPEQ = VARCHAR(20) */, ADMISSAO DATE NOT NULL, FOTO IMAGEM /* IMAGEM = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */, INIEXPED TIME, INIALMOCO TIME, FIMALMOCO TIME, FIMEXPED TIME, BANCOHORAS TIME, DEMISSAO DATE, OBSERVACAO MEMORANDO /* MEMORANDO = VARCHAR(255) */, DTCADASTRO DATE DEFAULT CURRENT_DATE ); /**************************************************************************/ /**** Unique Constraints ****/ /**************************************************************************/ ALTER TABLE FUNCIONARIO ADD UNIQUE (RG); ALTER TABLE FUNCIONARIO ADD UNIQUE (CPF); /**************************************************************************/ /**** Primary Keys ****/ /**************************************************************************/ ALTER TABLE FUNCIONARIO ADD PRIMARY KEY (CODFUNC); /**************************************************************************/ /**** Foreign Keys ****/ /**************************************************************************/ ALTER TABLE FUNCIONARIO ADD FOREIGN KEY (IDCARGO) REFERENCES CARGO (IDCARGO) ON DELETE CASCADE ON UPDATE CASCADE;
E esta é a tabela de Usuário
/**************************************************************************/ /**** Generated by IBExpert 23/8/2005 16:39:41 ****/ /**************************************************************************/ SET SQL DIALECT 3; SET NAMES WIN1252; /**************************************************************************/ /**** Tables ****/ /**************************************************************************/ CREATE TABLE USUARIO ( USUARIO TEXTOPEQ NOT NULL /* TEXTOPEQ = VARCHAR(20) */, CODFUNC INTEGER NOT NULL, SENHA TEXTOPEQ NOT NULL /* TEXTOPEQ = VARCHAR(20) */, IDNVACESSO TEXTOPEQ NOT NULL /* TEXTOPEQ = VARCHAR(20) */ ); /**************************************************************************/ /**** Unique Constraints ****/ /**************************************************************************/ ALTER TABLE USUARIO ADD UNIQUE (CODFUNC); /**************************************************************************/ /**** Primary Keys ****/ /**************************************************************************/ ALTER TABLE USUARIO ADD PRIMARY KEY (USUARIO); /**************************************************************************/ /**** Foreign Keys ****/ /**************************************************************************/ ALTER TABLE USUARIO ADD FOREIGN KEY (CODFUNC) REFERENCES FUNCIONARIO (CODFUNC) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USUARIO ADD FOREIGN KEY (IDNVACESSO) REFERENCES NVACESSO (IDNVACESSO) ON DELETE CASCADE ON UPDATE CASCADE;
GOSTEI 0
Mordred
30/01/2004
OK, não precisam mais se preocupar comigo. Foi só eu desfazer o relacionamento mestre-detalhe que eu tinha criado entre Funcionário e Usuário. Não me perguntem o porquê.
GOSTEI 0
Vinicius Simoes
30/01/2004
Se liga, aparentemente é um Bug do Delphi (no meu caso, delphi 7). Exclui as DCU´s e compilei novamente e o problema persistiu.
Consegui resolver, excluindo o DblookupComboBox e o Datasource e adicionei novos no formulário e o problema foi resolvido.
Consegui resolver, excluindo o DblookupComboBox e o Datasource e adicionei novos no formulário e o problema foi resolvido.
GOSTEI 0