|
|
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
Кэш получен в ДатаСете1 путём DataSet1.LoadFromFile ( или LoadFromStream; предварительно файл или стрим получены из точно такого же DataSet2, "привязанного" к таблице с точно такой же структурой, как и DataSet1 (select-ы и обе таблицы - идентичны, только первая таблица пустая, а вторая - полная). Я даже вижу содержимое кэша 1-го ДатаСета через Грид, НО!.. - никакими ухищрениями не получается отправить содержимое кэша в базу. Перепробовал что только можно - и Aplay, и AplayUpdates, и AplayUpdatesToBase (точно не помню название метода), и стартовал-коммитил транзакцию, и Edit-Post - результат нулевой. Ни одной записи в базу не попало. Подскажите выход... Краткая предыстория. Задачка возникла от необходимости "перегнать" данные из 1-го диалекта в 3-й (кол-во таблиц - немеренное). Хорош бы был гетерогенный запрос + БДЕ-шный БатчМув (метод компонента Table), но БДЕ к сожалению не понимает маленькие буквы. Вроде можно через файл или стрим, но никак не получается долбаный кэш отправить в базу.. Я просто в трансе.. SOS-SOS-SOS... Сергей Васильев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2003, 00:17 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
Aplay - как я понял это Apply :) >>Задачка возникла от необходимости "перегнать" данные из 1-го диалекта в 3-й (кол-во таблиц - немеренное) А через обычный backup/restore - "перегнать" базу уже не получается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2003, 10:44 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
>>А через обычный backup/restore - "перегнать" базу уже не получается? К сожалению это система реального времени, данные надо перегонять из проекта... Особенности русского Бэйс-Билда объяснять долго и больно... Вот фрагмент кода: ... dsetFrom.Last; dsetFrom.SaveToFile('C:\Base\CMM.txt'); dsetTo1.Transaction.StartTransaction; // так написано в хэлпе по фибам.. dsetTo1.LoadFromFile('C:\Base\CMM.txt'); dsetTo1.Last; dsetTo1.ApplyUpdToBase; dsetTo1.Transaction.Commit; //dsetTo1.CommitUpdToCach; После всего этого в гриде, прицепленном к dsetTo1 данные я вижу, но после переоткрытия dsetTo1 – они бесследно исчезают (т.е в базу - не попадают).. -------------------------------------------------------------------------- Свойства, прописанные в инспекторе объектов: dsetTo1.AllowedUpdateKinds := [ukModify,ukInsert,ukDelete]; dsetTo1.AutoCommit := true; dsetTo1.AutoUpdateOptions.UpdateOnlyModifiedFields := false; dsetTo1.UpdateRecordTypes := [cusUnmodified,cusModified,cusInserted]; dsetTo1.Transaction := trW3; dsetTo1.UpdateTransaction := trW3; trW3.TimeoutAction := TACommit; trW3.TPBMode := tpbReadCommitted; -------------------------------------------------------------------------- Время катострофически заканчивается, через несколько дней надо сдавать проект, а этот камень ну никак не объехать.. Чует моё сердце - скоро на земле одним базистом станет меньше... А может кто-то всё-таки поможет добрым советом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2003, 21:15 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
А время стремительно убегает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2003, 23:41 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
Эх... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2003, 21:41 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 01:51 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2003, 01:20 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
А цепочку edit-post-comit (без ApplyUpdata) пробовал? Или даже без post? В IBDataSet есть св-во CacheUpdates. От его состояния зависит необходимый набор в "цепочке". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2003, 09:49 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
>>1man Хоть одна живая душа отозвалась, сенькаю :). Без "CacheUpdates=true" данные в кэш просто не попадают. А "edit-post-comit" - перепробовал в разных комбинациях (чуть ли не полный перебор) - не помогает. Такое впечатление, что в данной версии pFIBPlus (4.4412) на этом месте просто заглушка стоит. Всё-таки хотелось бы услышать компетентное мнение, вопрос по-прежнему ещё актуален.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2003, 00:56 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
Похоже, что в 4.7.7 тот же эффект... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2003, 17:26 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
Так тебе данные нужно в кэш отправить (и любоваться ими), или в базу? Если все же в базу - попробуй отключить cash, как я уже писал. З.Ы. Извини за некомпетентное мнение - другого не имею :( а помочь хочу, т.к. сталкивался с подобной странностью, но досконально не разобрался - не хватило ни времени ни квалификации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2003, 12:00 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
Когда данные загружаются через LoadFromFile они и находятся в кэше... Интересно... Как это отключить кэш... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2003, 17:45 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
Когда данные загружаются через LoadFromFile они и находятся в кэше... Интересно... Как это отключить кэш... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2003, 17:54 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
>>1man "Если все же в базу - попробуй отключить cash, как я уже писал. "... Извини, имел в виду кого-нить из разработчиков фибов (про компетентное мнение)... Для чистоты эксперимента - завтра же попробую отключить CacheUpdates.. _______________________ >>MrAlex "...Как это отключить кэш..." Может в этом что-то и есть (отключить CacheUpdates) - по идее они (данные) должны и попасть в другую БД, минуя кэш (после LoadFromFile). Если так - останется только "запостировать"... В любом случае - надо проверить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2003, 22:44 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
мой тебе совет не пожалей времени и зайди сюда .......... почитай......... http://www.fibplus.com.ua/rus/articles/cache_xxx.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 10:39 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
Как попробуешь - пожалуйста, напиши что получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 10:42 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
>>Simai "Может в этом что-то и есть (отключить CacheUpdates) - по идее они (данные) должны и попасть в другую БД, минуя кэш (после LoadFromFile). Если так - останется только "запостировать"... В любом случае - надо проверить..." Выдержка из Help: procedure LoadFromFile(const FileName: string); Description Call LoadFromFile TO FILL THE LOCAL BUFFER by file data. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 10:51 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
>> Vovochka “ .......... почитай......... http://www.fibplus.com.ua/rus/articles/cache_xxx.shtml” Про LoadFromFile (SaveToFile) – там ничего не сказано.. ____________________________ >>MrAlex “ Выдержка из Help… Call LoadFromFile TO FILL THE LOCAL BUFFER by file data.” В том же хэлпе написано ~ для фиксации изменений применяйте ApplyUpdToBase. Включаешь – не работает. ____________________________ >>1man «Как попробуешь - пожалуйста, напиши что получилось.» Отвечаю – не получилось ничего: dsetTo1.Transaction := trW3; dsetTo1.AutoCommit := false; ... if not trW3.InTransaction then dsetTo1.Transaction.StartTransaction; dsetTo1.Edit; dsetTo1.LoadFromFile('Путь\файл'); //dsetTo1.Post; if trW3.Active then dsetTo1.Transaction.Commit; метод “dsetTo1.Post” закомментирован, т.к. в этом месте возникает ошибка – «датасет не находится в состоянии Edit или Insert». Так что LoadFromFile «выводит» датасет из режима Edit... Но и «dsetTo1.Transaction.Commit» ничего не даёт – псле переоткрытия dsetTo1 – пуст... Вообще-то Edit-Post в данной ситуации не совсем подходит, эта парочка ведь для редактирования одной записи.. В общем туман не рассеивается.. пока.. Наиболее вероятно, что здесь всё же должен работать метод dsetTo1.ApplyUpdToBase но почему-то не работает. Написано «Тэтчер», а на самом деле – «Ганди»… Есть, конечно же железобетонный способ (с Edit-Post кстати) – переприсваивание полей через FieldByName (FieldsValue). Но это тоскливый способ, - уж очень много таблиц и полей (работа больше для спинного мозга). Благо проект рухнул по вине более достойных членов команды. Но вопрос хотелось бы всё же «дотоптать» – не за горами вторая серия.. Кто прольёт свет, а-у?!?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2003, 02:22 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
А запрос на вставку во втором датасете прописан ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2003, 06:09 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
А пробовал ApplyUpdate при CachedUpdates (или что там в FIB-DataSet)=false ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2003, 09:47 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
>>1man Что-то я на ровном месте ошибаться стал. Ну конечно же dsetTo1.CacheUpdates := false в последнем примере, именно так я и пробовал (а не dsetTo1.AutoCommit := false ). ApplyUpdate пробовал при CachedUpdates=true и при CachedUpdates=false (и ApplyUpdToBase тоже пробовал и так и так) - не получилось... ______________________________ >>Alexandr K. "А запрос на вставку во втором датасете прописан ?" 1). А как он должен выглядеть? Пусть в обоих таблицах по 2 поля: F1 integer (Primary Key), F2 integer; ... dsetFrom.Last; dsetFrom.SaveToFile('C:\Base\CMM.txt'); dsetTo1.Transaction.StartTransaction; dsetTo1.LoadFromFile('C:\Base\CMM.txt'); dsetTo1.Last; // в этот момент все считанные данные видны в прицепленном к dsetTo1 гриду , 2). а дальше?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2003, 03:19 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
я имею в виду Insert SQL в Dataset1 типа insert into Table1 (F1,F2 ) values (:F1, :F2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2003, 04:34 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
Уехал в отпуск. Попробую позже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2003, 18:18 |
|
||
|
Как содержимое кэша отправить в базу? (в FIBPlus)
|
|||
|---|---|---|---|
|
#18+
а почему нельзя просто перебросить из одного датасета в другой путем Append - Post? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 16:32 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32219072&tid=1579629]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
198ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 578ms |

| 0 / 0 |
