Главная страница
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.015 c
8-8067
MJH
2002-06-01 16:44
2002.10.03
MJHF-EQ-DLL version 0.3


1-7914
kalliopiy
2002-09-23 17:30
2002.10.03
Вопрос по разного рода Grid ам


14-8158
Smiths
2002-09-08 17:40
2002.10.03
Шахматы - чья игра?


14-8128
Esu
2002-09-08 20:00
2002.10.03
Я фигею, дорогая передача...


1-7991
Metotrone
2002-09-21 00:35
2002.10.03
Закрытие программы