Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.03;
Скачать: CL | DM;

Вниз

BatchMove   Найти похожие ветки 

 
REA   (2002-09-11 16:52) [0]

Задача: скопировать часть таблицы без ключевых полей на диск (файл либо парадокс таблица) и загрузить с диска, заполнив значения ключевых полей сгенерированными (некими текущими).
Очевидно для сохранения можно применить BatchMove.
Вопрос: нельзя ли использовать BatchMove для второй операции (загрузки) и, если можно, то как вмешаться в процесс и генерировать недостающие ключевые поля?


 
MsGuns ©   (2002-09-11 18:37) [1]

Схема манипулирования пачками (Batch - от англ. "Пакет", "Пачка")
такова.
1. С рабочей таблы снимается запросом часть записей (SELECT *)
2. С использованием TBatchMove (Mode:=batCopy) рез.НД сохраняется во временной таблице xxTemp (если такая табла уже физ.существует, лучше ее убить)
3. С таблой xxTemp выполняется все что надо
4. Этим же TBatchMove записи из xxTemp добавляются или заменяют старые или и то и другое в рабочую.
5. Если нет уверенности, что все записи пропишутся в раб.таб, надо кинуть 2 TTable и сослаться на них в св-вах ChangedTableName и KeyViolTableName. Ну и потом их анализировать..


 
REA   (2002-09-12 10:25) [2]

Чем через временную таблицу, проще уж рукам перебрать, если записей немного...


 
Mike Kouzmine   (2002-09-12 11:13) [3]

Просто в map TBatchMove указывай какие поля из исходной таблицы (NAME) будут копироваться в поля результирующей таблицы


 
REA   (2002-09-12 11:30) [4]

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


 
MsGuns ©   (2002-09-12 13:03) [5]

>REA (12.09.02 10:25)
>Чем через временную таблицу, проще уж рукам перебрать, если записей немного...

Можно, конечно, но вместо 4 строчек кода для BatchMove, надо писать цикл с перебором всех полей, да и работать такой "ручной" вариант будет на пару порядков медленнее

>Как вариант: можно ли написать SQL запрос, который загрузит таблицу, а недостающие поля одновременно установит в заданное значение и из него уже сделать BatchMove?


Можно, конечно, и утром стулья, а вечером деньги. Т.е. дал запрос, получил НД, модифицировал в нем все, что надо (если он (BDE) даст это сделать), а потом сохранил в tmpTable (BatchMove), затем уже оттуда его впихнуть назад в базовую таблу, предварительно удалив из нее то, что уже не надо

Но я не вижу разницы..


 
REA   (2002-09-13 10:57) [6]

>Можно, конечно, и утром стулья, а вечером деньги. Т.е. дал запрос, получил НД, модифицировал в нем все, что надо (если он (BDE) даст это сделать), а потом сохранил в tmpTable (BatchMove), затем уже оттуда его впихнуть назад в базовую таблу, предварительно удалив из нее то, что уже не надо

(если он (BDE) даст это сделать) - не даст вроде, если не TClientDataSet.
А зачем в TmpTable? Я думал с диска в TQuery, добавить значения полей (долго и нудно. а как новые поля создать? - никак) и BatchMove в основную таблицу.

Я имел ввиду запрос: Select Fld1, Fld2 from SavedTable, при этом set Fld3 = 25 например.


 
VAleksey ©   (2002-09-13 13:28) [7]

В самом запросе можно делать все что угодо. Только СashedUpdates = true.



Страницы: 1 вся ветка

Текущий архив: 2002.10.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
7-8184
harismatik
2002-07-25 15:36
2002.10.03
Как сделать?


6-8081
Deuss
2002-08-02 00:01
2002.10.03
TServerSocket и ReceiveText


4-8233
Lamer86
2002-08-16 11:07
2002.10.03
Как убрать программу с Toolbar


1-7891
Eva
2002-09-23 12:31
2002.10.03
перекачка данных по расписанию


4-8225
anod
2002-08-15 18:51
2002.10.03
Дочернее окно