Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.008 c
3-7799
BlackTiger
2002-09-11 14:18
2002.10.03
Отформатировать значение ячейки в стандартном DBGrid?


3-7842
Nikolai_S
2002-09-12 15:54
2002.10.03
Общий доступ к БД


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


3-7813
REA
2002-09-09 12:53
2002.10.03
А как отличить Append от Insert?


1-7965
kingdom
2002-09-24 10:48
2002.10.03
Есть указатель на интерфейс, как определить его GUID ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский