|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.10.2011, 22:57 | #1 |
Форумчанин
Регистрация: 24.06.2009
Сообщений: 216
|
Копирование данных из одной таблицы в другую, где ошибка
Привет всем.
Использую компоненты FIBplus и базу Firebird В общем суть проблемы такова. При формировании отчета делаю выборку данных из одной таблицы (к примеру после выполнения скрипта количество записей = 10) и пытаюсь записать их в другую таблицу. В итоге, во вторую таблицу записывается 10 первых записей из первой таблицы. К примеру в первой таблице после выполнения запроса присутствуют следующие записи: 1. Иванов 2. Петров 3. Сидоров После записи их в другую таблицу, итог следующий: 1. Иванов 1. Иванов 1. Иванов т.е. такое ощущение что весь цикл курсор стоял на первой записи первой таблицы. Вот код (первая таблица - это ABSJournal из нее копируются данные во вторую таблицу ABSReport): Код:
Буду признателен за помощь. Кстати, нет, не всегда только первая запись добавляется, бывает и последняя или предпоследняя. В общем я вообще в ступоре, подскажите пожалуйста, в чем проблема? Переводите на русский регистр то окно, из которого копируете текст - тогда не будет "крякозябров". И разбивайте длинные строки, чтобы в браузере не появлялся горизонтальный скролл...
Водку мы пьем для запаха - а дури нам своей хватает!
Последний раз редактировалось mihali4; 26.10.2011 в 15:45. |
26.10.2011, 09:53 | #2 |
Форумчанин
Регистрация: 17.11.2010
Сообщений: 262
|
По-моему в ABSReport тоже надо переводить курсор на следующую запись. А вообще выдели интересующие поля и прогони пошагово (Breakepoint слева от поля ставишь и при нажатии на кнопку, на F8 прогоняешь). Сразу увидишь, где не так.
|
26.10.2011, 18:40 | #3 |
Форумчанин
Регистрация: 24.06.2009
Сообщений: 216
|
Нет в ABSReport переводить курсор не надо. Там идет Append, он сам переводит на новую строку после Post.
Я понял какой кусочек кода изменяет эти данные. Вот он: Код:
В общем у меня такое ощущение что Firebird вообще своей жизнью живет. Так как точно такой же код работал и под MS Acces и под Absolute Database. Подскажите, в чем проблема. Просто очень нужно перевести все это дело под Firebird. Или может как то можно запретить изменять некоторые поля в записи?
Водку мы пьем для запаха - а дури нам своей хватает!
Последний раз редактировалось Vit@L; 26.10.2011 в 22:16. |
27.10.2011, 03:25 | #4 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
При переходе на другую СУБД и использовании другие компонентов доступа к ее базам данных, логика и стиль мышления программера должны тоже меняться.
В этом и проблема. То что проходило в связке ADO+Access, может запросто не понравиться тандему IBX (FIBPlus)+Firebird. Отсюда недоумения типа: "...Firebird вообще своей жизнью живет". Живет, разумеется, именно своей жизнью, а не жизнью Access. В нашем случае записывать данные в другую таблицу надо никак иначе, а через запрос INSERT. Это совсем не сложно. Но обязательно прочитать про транзакции (например, здесь). Пожелание. При работе с Firebird употреблять не все приемы заученные при использовании Access. |
06.12.2011, 01:01 | #5 |
Пользователь
Регистрация: 10.10.2011
Сообщений: 11
|
чтобы не пладить темы. помогите решить такой вопрос. имеем 2 таблицы. 1-табель, 2-время. в таблице "табель" находятся 4 кнопки. при нажатии на кнопку 1, должно открытся таблица "время". выбрать интересующие данные, и вставить из даблицы "время" значение первой колонки в таблицу табель в колонку нажатой кнопки. т.е. если нажали кнопку 1, то в первую колонку, если 2, то во вторую. для большей наглядности прикреплю исходники.
|
06.12.2011, 10:47 | #6 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
Надо автору еще сообразить как добавлять новую строку в таблицу "табель".
Иначе непонятно в какую строку табеля данные из т. "время" должны вставляться: в новую или существующую. |
06.12.2011, 19:56 | #7 |
Пользователь
Регистрация: 10.10.2011
Сообщений: 11
|
|
06.12.2011, 21:47 | #8 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
В БД data.mdb таблица "табель" пустая. О какой "существующей" строке речь?
|
06.12.2011, 22:06 | #9 |
Пользователь
Регистрация: 10.10.2011
Сообщений: 11
|
|
06.12.2011, 22:20 | #10 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
1. ADOConnection не нужно плодить. Одна база - один компонент.
2. ConnectionString в ADOConnection содержит путь до базы на своем компе. Отсюда получается, что на другом компе надо менять путь в ConnectionString. Не хорошо это. В ответном проекте этот путь вообще не указан и, прежде чем запускать прогу, надо его указать. 3. Дополнительные формы, которые нужны только время от времени необходимо оформлять как диалоги. Т.е. незачем создавать форму TChooseTime при запуске проги. В переделанном проекте показано что и как. Четыре кнопки используют один и тот же обработчик события OnClick. Чтобы отличать одну кнопку от других используется свойство Tag. Последний раз редактировалось Прик; 06.12.2011 в 22:22. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Копирование строк из одной таблицы в другую база данных paradox в делфи | igi3 | Помощь студентам | 1 | 20.06.2011 08:39 |
Копирование части данных из одной таблицы в другую | SAM77777 | Microsoft Office Excel | 3 | 12.04.2011 19:24 |
Копирование таблицы из одной базы в другую | Sanprof | БД в Delphi | 4 | 24.09.2010 14:50 |
Копирование данных из одной таблицы Paradox в другую | Zuzya | БД в Delphi | 3 | 16.05.2009 19:11 |
Копирование данных из одной таблицы в другую! | фЁдОр | БД в Delphi | 18 | 06.01.2008 19:27 |