Несколько таблиц в TClientDataset?

Можно ли поместить результаты более чем одного запроса в более чем одну таблицу в TClientDataset?

Просто что-то вроде

SELECT * from t1;
SELECT * from t2;
SELECT * from t3;

Кажется, я не могу найти способ заставить поставщика данных (SetProvider) получать результаты из более чем одной таблицы за раз.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
1
0
4 872
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Невозможно иметь несколько табличных данных в одном и том же TClientDataSet, как вы указали. TClientDataSet содержит один курсор для одного набора данных.

Единственный способ - присоединиться к столам. Но тогда вы должны предоставить критерии соединения через соединенные внешние ключи.

select * from t1, t2, t3 where t1.key = t2.key and t2.key = t3.key;

Теперь предположим, что вы придумали ключ (например, LineNr), который позволяет такое соединение. Затем вы можете использовать полное внешнее соединение, чтобы включить все записи (важно, если не все таблицы имеют одинаковое количество строк). Но это как-то было бы взломом. Убедитесь, что в качестве ключа не используется auto_number, поскольку он не использует повторно ключи и, следовательно, имеет тенденцию оставлять пробелы в нумерации, в результате чего многие строки заполняются значениями лишь частично.

Если вы хотите заполнить набор клиентских данных из нескольких таблиц с одинаковым набором полей, вы можете использовать для этого оператор UNION. Это просто будет использовать одни и те же столбцы и объединить все строки в одну таблицу.

ClientDatasets может содержать поля, которые сами по себе являются другими наборами данных. Поэтому, если вы хотите создать три таблицы в одном наборе данных, создайте три ClientDatasets, содержащие три набора результатов, которые вы хотите, а затем вы можете поместить их в один ClientDataSet.

Эта статья:

http://dn.codegear.com/article/29001

показывает, как это сделать как во время выполнения, так и во время разработки. Обратите особое внимание на раздел, озаглавленный:

«Создание структуры ClientDataSet's во время выполнения с использованием TFields»

Также следует упомянуть эту другую статью: edn.embarcadero.com/article/29825

EMBarbosa 10.01.2014 23:18

Другие вопросы по теме