Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Вниз

ClienDataSet в InterBase 


ruslan_as   (2002-04-02 18:08) [0]

Есть ClienDataSet и таблица InterBase. Нужно перегнать записи из
ClienDataSet в InterBase. Ести я делаю следующим кодом получается долго. Подскажите как быстрее.

while not DM.clTovar.Eof do
begin
DM.IBTTovar.Append;
DM.IBTTovar.FieldByName("KOD").Value:=DM.clTovar.FieldByName("KOD").AsString;
DM.IBTTovar.FieldByName("N_TOV").Value:=DM.clTovar.FieldByName("N_TOV").AsString;
DM.IBTTovar.Post;
DM.clTovar.Next;
end;



alexandervasjuk   (2002-04-02 19:47) [1]

Есть один способ. Это будет очень быстро. Но вряд ли ты захочешь возиться.
1) Сохраняем CDS как XML.
2) Пишем XSL трансформацию, чтоб на входе был наш XML, на выходе - данные с фиксированной длинной поля без всяких разделителей и возвратоы каретки
3) В базе создаем внешнюю таблицу на получившийся файл данных со строковыми полями соответствующей ширины
4) Запросом вставляем из нее данные в конечную таблицу



Deniz   (2002-04-03 08:03) [2]


TmpIBQuery.SQL.CLear;
TmpIBQuery.SQL.Add("insert into TableName(KOD, N_TOV)");
TmpIBQuery.SQL.Add("values(:vKod, :vN_Tov)");
TmpIBQuery.Prepare;
while not DM.clTovar.Eof do begin
TmpIBQuery.ParamByName("vKod").AsString:=DM.clTovar.FieldByName("KOD").AsString;
TmpIBQuery.ParamByName("vKod").AsString:=DM.clTovar.FieldByName("N_TOV").AsString;
TmpIBQuery.ExecSQL;
end;

Должно быть быстрее.



Deniz   (2002-04-03 08:17) [3]

Опечатка вышла:
...
TmpIBQuery.ParamByName( "vN_TOV").AsString:=DM.clTovar.FieldByName("N_TOV").AsString;
...



ruslan_as   (2002-04-03 12:20) [4]

Спасибо ребята! Работает.
>alexandervasjuk © Способ любопытный, потом разберусь...
>Deniz Действительно быстрее!




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.065 c
3-69759           AndrewK               2002-04-02 16:52  2002.04.22  
Как сформировать запрос...


6-69944           Andreich              2002-02-10 17:09  2002.04.22  
ICQ компонент


4-70066           Denis K. aKa Burjuy   2002-02-16 19:50  2002.04.22  
Работа с консолью


3-69735           Ежик                  2002-04-01 13:30  2002.04.22  
Как програмно посчитать кол-во записей в БД?


1-69883           pls                   2002-04-08 11:24  2002.04.22  
DLL или BPL?