![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заполнение таблицы(TADOTable) информацие из потока(TADOQuery) [D7, MSSQL]
tramp © (2003-06-11 17:22:00)В BDE есть компонент TBathMove перемещающий информацию из одной таблицы (или потока на выходе TQuery) в другую. Как сделать это в через ADO? Добавлени по сторокам не рассаматривается. Имеется в виду что-то более быстое и элегантное :)
tramp (2003-06-14 12:31:00) [1]Имелось в виду, что Q:TADOQuery? Спасибо:-)
Shaman (2003-06-11 17:40:00) [2]Думаю, кроме как по строкам перегонять, ничего и не придумаешь (TBathMove тоже так поступает). Только передавать значения нужно без использования вариантных преобразований, тогда код будет быстро работать. Ниже приведен кусок из процедуры, делающий нечто подобное.
var
i: Integer;
j: Integer;
Q: TSQLQuery;
aDS: TClientDataSet;
F: TField;
P: Pointer;
...
j := aDS.DataSize;
GetMem(P, j);
try
while not Q.Eof do
begin
aDS.Append;
for i := 0 to Q.FieldCount - 1 do
if Q.Fields[i].GetData(P, True) then aDS.Fields[i].SetData(P, True);
aDS.Post;
Q.Next;
end;
Q.Active := False;
finally
if P <> nil then FreeMem(P);
end;
...
З.Ы. Поля двух таблиц должны быть строго идентичными