| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Проблема в одноврем-ой работе с 2-мя БД InterBase |
| Автор: Delphist 19.10.2005, 18:09 |
| Есть две БД под Firebird:db1.gdb и db2.gdb в db1.gdb есть табличка table1_db1 с полями field1_tbl1 и field2_tbl1. Нужно данные из этих полей загнать в db2.gdb в таблицу table2_db2 в поля field1_tbl2 и field2_tbl2. Как это сделать. |
| Автор: Alex 20.10.2005, 00:52 |
| Подключиться к одной и ко второй БД с помощью разных компонентов и перегнать данные |
| Автор: Delphist 20.10.2005, 16:26 | ||
Пример не мог бы привести |
| Автор: Alex 20.10.2005, 16:30 | ||
Какие компоненты используешь для работы? Добавлено @ 16:32 а еще лучше пришли два своих файла базы и напишу пример, что бы мне эти базы для теста сейчас не создавать |
| Автор: Delphist 20.10.2005, 16:51 | ||
Использую FIBPlus. Файл с БД прилагаю (БД сделаны под FireBird 1.0 - т.е. без проблем должны работать на любой версии InterBase). |
| Автор: Alex 20.10.2005, 20:47 |
| Если что-то не понятно - спрашивай |
| Автор: Delphist 21.10.2005, 12:28 | ||
У меня нет класса TpFIBDatabase и TpFIBTransaction есть только TFIBDatabase и TFIBTransaction поделись своими. Они лучше обычного TFIBDatabase и TFIBTransaction? |
| Автор: Alex 21.10.2005, 21:32 | ||
У меня версия 6.25 и это ее стандартные классы |
| Автор: Delphist 25.10.2005, 17:47 | ||||
Поделись ими пожалуйста. P.S. Кидай на мой e-mail: delphi71@yandex.ru |
| Автор: Alex 25.10.2005, 19:00 | ||
Я конечно все понимаю, но библиотека вроде бы как платная я покупал лицензию на одного человека |
| Автор: YurikGL 25.10.2005, 20:05 | ||
кидаешь на форму два коннекшена, две транзакции и два датасета. Цепляешь первый к первому и второй ко второму транзакции к коннекшену и т.д. Первый коннекш настраиваешь на первую базу а датасет на table1_db1 вторую на вторую базу и таблицу соответсвенно код пишу прямо здесь - за ошибки извиняйте если что напутал - исправить будет легко самый тупой вариант dataset1.first repeat dataset2.insert; dataset2.fieldbaname('field1_tbl2').value:=dataset1.fieldbaname('field1_tbl1').value dataset2.fieldbaname('field2_tbl2').value:=dataset1.fieldbaname('field2_tbl1').value dataset2.post dataset1.next until dataset1.eof; Вариант похитрее и ошибок у меня может быть больше: Ко второму коннекшену цепляем IBSQL2 тогда dataset1.first repeat IBSQL2.sql.text:='Insert into table2_db2 (field1_tbl2, field2_tbl2) values ('+dataset1.fieldbaname('field1_tbl1').asstring+','+dataset1.fieldbaname('field1_tbl1).asstring+')'; dataset1.next until dataset1.eof; Во втором случае, если значения полей в датасете1 строковые то нужно будет сделать типа IBSQL2.sql.text:='Insert into table2_db2 (field1_tbl2, field2_tbl2) values ('+#39+dataset1.fieldbaname('field1_tbl1').asstring+#39+','+#39+dataset1.fieldbaname('field1_tbl2).asstring+#39+')'; |