Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Заполнение dataset  [new]
wsnet
Member

Откуда:
Сообщений: 995
Подскажите, как лучше сделать.

Есть DataSet (MemTableEh), прикрученный к таблице.

В odacQuery1 есть записи:
id_rec
name

В odacQuery2 есть записи:
id_rec
state - поле state (0-не определено; 1 - выполнено; 2 - не выполнено).

Задача заполнить DataSet (MemTableEh), в итоге каждая строка должна быть:
id_rec name state

А далее отсортировать его таким образом, чтобы сначала шли записи со статусом =0, потом 1, потом 2.

Сейчас просто делаю три прогона по odacQuery1, в каждом из них проверяю поле state, а затем по id_rec добавляю в
DataSet (MemTableEh).


try
while not odacQuery1.Eof do
begin
if odacQuery2.Locate('id_rec', odacQuery1.FieldByName('id_rec').AsInteger, [])
and odacQuery2.FieldByName('state').asInteger = 0 then
begin
memTable1.Append;
memTable1.FieldByName('id_rec').AsInteger := odacQuery1.FieldByName('id_rec').AsInteger;
memTable1.FieldByName('state').Value := odacQuery2.FieldByName('state').Value;
memTable1.Post;
end;
odacQuery1.Next;
end;
Далее циклы но уже для state = 1, далее для = 2

Как можно решить проблему более лаконичнее, без трех прогонов?
Возможно получить все в MemTableEh, а потом отсортировать?
1 авг 20, 19:16    [22176575]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение dataset  [new]
ъъъъъ
Member

Откуда:
Сообщений: 853
wsnet
Есть DataSet (MemTableEh), прикрученный к таблице.

"Прикрученный" - это что значит?
1 авг 20, 22:03    [22176609]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение dataset  [new]
DimaBr
Member

Откуда:
Сообщений: 11777
Зачем на клиенте искусственно объединять два таблицы ?
Не проще ли построить нужный запрос к серверу ?
2 авг 20, 00:01    [22176618]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение dataset  [new]
DimaBr
Member

Откуда:
Сообщений: 11777
-

Сообщение было отредактировано: 2 авг 20, 00:03
2 авг 20, 00:06    [22176619]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение dataset  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62785
Блог
wsnet
Как можно решить проблему более лаконичнее, без трех прогонов?

1. Либо "лаконичнее", либо "более лаконично".
2. select t1.id_rec, t1.name, t2.state from t1, t2 where t1.rec_id = t2.rec_id order by t2.state
2 авг 20, 13:57    [22176682]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение dataset  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31276
а МемТабля для зачем в вашей задаче?
просто интересно.
2 авг 20, 16:19    [22176721]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить