Форум: "Базы";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c