Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IBClientDataSet - не загружает данные, не обновляет записи [D6, IB6.x, MSSQL]


Siv Soft ©   (2003-11-20 17:50:00) 

Доброго всем времени суток!
Необходимо из базы данных - Аццесса копировать таблицы в Firebird, использую для этого IBClientDataSet - если данные вбить, то все сохраняется, но пробую загрузить ничего пустой датасет - если ставить заранее имя файла в свойстве FileName, то все грузит на ОК, а если методом - нет. Приведу участок кода:

String file="e:\\DataBase\\emitents.xml";
IBClientDataSet1->FileName=file;
IBClientDataSet1->LoadFromFile(file);

Другая проблемма возникает при попытке обновить данные в таблице Файербед методом ApplyUpdates (таблица пустая) - ругается, что не найдет такой записи. Вот код:

IBClientDataSet1->ApplyUpdates(-1);

Понятно, что такой записи нет в принципе - таблица то пустая, но как тогда можно занести эти данные в таблицу Файербеда?
И как пофиксить с загрузкой этих данных по методу?

Заранее благодарен!


Siv Soft   (2003-11-27 15:21:00) [1]

HELP! HELP! HELP!


Siv Soft   (2003-11-27 10:54:00) [2]

Познакомился. Интересно, однако вопрос остался открытым. В конце этой дискуссии так на него и не ответили.
А именно: как программно реализовать файл трансформации? Ведь в той же утилите ХМЛМаппере это делается с помощью компонентов и кода. А в той дискуссии незнайка2003 говорил о компонентах на torry, с помощью которых хмл файл можно загрузить в датасет.


sokohigh   (2003-11-26 16:57:00) [3]

Была в начале этого месяца дискуссия в этом форуме, называлась "загрузка XML в DataSet" - она уже ушла в архив. Мне кажется, Вам стоит с ней ознакомиться.


Romkin   (2003-11-26 16:55:00) [4]

Трансформационный файл делается один раз и именно XMLMapper. А потом юзаешь его через TXMLTransform и др. со вкладки Data Access


Siv Soft   (2003-11-26 16:37:00) [5]

Удалено модератором
Примечание: Создание пустых сообщений


Siv Soft   (2003-11-26 16:09:00) [6]

Хороший ответ. Логично. Если бы я знал как, то наверняка вопросов бы не задавал.
Кто-то разобрался? Может кто-то более конкретное подсказать?


Sandman25   (2003-11-26 15:53:00) [7]

>Что такое трасформационный файл(xtr) и как его сделать самому, не используя XMLMapper?

Надо разобраться в его формате и сделать файл самому


Siv Soft   (2003-11-26 15:51:00) [8]

Ой...
Извиняюсь за дубль.


Siv Soft   (2003-11-26 15:49:00) [9]

ApplyUpdates пофиксил - ошибся в именах полей - надо было большими буквами.
Возник вопрос с трансформацией из XML в DataPacket от Borland.
Что такое трасформационный файл(xtr) и как его сделать самому, не используя XMLMapper?


Siv Soft   (2003-11-26 15:48:00) [10]

ApplyUpdates пофиксил - ошибся в именах полей - надо было большими буквами.
Возник вопрос с трансформацией из XML в DataPacket от Borland.
Что такое трасформационный файл(xtr) и как его сделать самому, не используя XMLMapper?


Siv Soft   (2003-11-24 17:24:00) [11]

Переделал с использованием ClientDataSet, заработало нармально чтение из файла, ApplyUpdates все равно не работает. При изменении записи - и пробе последующего применения изменений - ругается, что
Record not found or changed by another user.
Как сие фиксить?


Siv Soft   (2003-11-24 16:07:00) [12]

Так вся прелесть IBClientDataSet теряется, хотелось бы, чтобы загрузил и все обновилось. Можно ли так?
И как быть с ЛоадФром?


sokohigh   (2003-11-21 18:01:00) [13]

Нужно, чтобы перед ApplyUpdate в ClientDataSet были записи, помеченные как новые, т.е. чтобы у него ChangeCount был > 0 (имелась Delta). При загрузке из файла (cds) Вы получите точно то же состояние ClientDataSet-а, которое было при выгрузке.
Простое решение - загрузить данные во вспомогательный ClientDataSet, затем из него добавить по одной в ClientDataSet, привязанный к базе и сделать ему ApplyUpdates.


Siv Soft   (2003-11-21 16:45:00) [14]

Очень интересная штука получается - если использовать метод LoadFromFiles - то в набор почему-то попадают не данные из файла, а данные из таблицы БД Файербед, с которой он связан. Это если указать имя файла в вызове метода.
А если указывать просто пустую строку "" - как советуется, чтобы он брал имя из FileName свойства, то ругается, что не может открыть файл.
Как можно сделать, чтобы считавалось именно из файла , который и указан?
И как все-таки сделать, чтобы после считывания файла он переносил данные в таблицу Файербеда, т.к. (см. выше) методом который я использовал ничего не получается?


Sandman25   (2003-11-21 11:33:00) [15]

Советую откомпилировать с Use Debug DCU, программно присвоить FileName (я так понял, что это у Вас работает) и посмотреть, как именно вызывается LoadFromFile из SetFileName. Если он вообще вызывается в этом случае :)


Siv Soft   (2003-11-21 11:17:00) [16]

Одновременно и не делаю - пробовал разные возможности, просто не грузится с помощью LoadFromFile.


Sandman25   (2003-11-21 11:12:00) [17]

Нужно либо CreateDataSet и LoadFromFile, либо FileName :=.
Делать и то, и другое одновременно не имеет смысла ИМХО.

PS. С IBClientDataSet не работал, сужу по ClientDataSet.


Zacho   (2003-11-21 11:08:00) [18]

Да похоже, просто никто не использует IBClientDataSet, поэтому и подсказать никто ничего не может.


Siv Soft   (2003-11-21 10:52:00) [19]

Народ, где вы???!!!


Siv Soft   (2003-11-20 18:13:00) [20]

Удалено модератором
Примечание: Создание пустых сообщений


Наверх

Титульная страница Поиск, карта сайта Написать письмо