Pergunta

Na esta questão, perguntei sobre quebrar um conjunto de dados em subconjuntos, e tem uma boa resposta. Agora eu tenho o problema oposto. Eu tenho dois conjuntos de dados diferentes, representando objetos de duas subclasses diferentes de um ancestral comum, e eu preciso ter procurar o mesmo TDBLookupComboBox ambos ao mesmo tempo, usando duas propriedades, ID # e nome, que existem no pais classe.

A pesquisa de campo permite-lhe olhar as coisas a partir de vários campos de origem, mas apenas no mesmo conjunto de dados, e não dois diferentes. E um controle de pesquisa só permite que você especifique um campo de pesquisa para procurar. Alguém sabe como eu poderia obter os dados de ambos os conjuntos de dados que aparecem juntos na caixa de combinação?

Foi útil?

Solução

Crie a sua própria TDBLookupComboBox que leva múltiplas fontes de dados. . . . Criei DB controles conscientes antes (especificamente suspensa caixas de combinação). Eles são muito fácil de fazer e dar-lhe todo o controle que você precisa.

Outras dicas

Você pode clonar os registros de ambos os conjuntos de dados em um novo conjunto de dados que contém a união de ambos.

A resposta está na pergunta original seu você vinculado. Você diz que os membros de ambos os conjuntos de dados têm um ancestral comum. Então coloque todos os registros de objetos em na única TClientDataset, e, em seguida, para os seus dois conjuntos de dados descendentes apenas tê-los usar um cursor clonado a partir desse conjunto de dados de base. Assim, você pode acessá-los a conjuntos distintos, ou como seu único conjunto combinado.

Claro que o busílis vem em quaisquer dados que são adicionados nas classes descidos que não é compartilhada a classe base, supondo que você tem qualquer. . .

Criar um TDataSource ou um descendente de TDataSet que é realmente uma união de outros TDataSets. Em seguida, na inserção que você quer sempre inserir um TDataSet específica, ou ter regras com base no valor de um determinado campo que determina quais TDataSet para inserir. . . .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top