Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка - Dataset Open. Interbase 7.5 C++ Builder 
:(
    Опции темы
SAnatoliy
Дата 15.5.2009, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Что делаю не так?

Ошибка: сообщение: www.Amyulet.narod.ru/222.JPG

user posted image

Код

AnsiString aB1,aB2;
DataModule1->IBDataSet2->Open();


  for(DataModule1->IBDataSet2->First(); !DataModule1->IBDataSet2->Eof;
      DataModule1->IBDataSet2->Next()) {

      aB1 = DataModule1->IBDataSet2->FieldByName("TEL_OLD")->AsString.c_str();
      aB2 = DataModule1->IBDataSet2->FieldByName("TEL_NEW")->AsString.c_str();

        DataModule1->IBDataSet1->Open();
        DataModule1->IBDataSet1->Edit();
        DataModule1->IBDataSet1->ModifySQL->Clear();
        DataModule1->IBDataSet1->ModifySQL->Add((AnsiString)"update tabl_main set NUM_ABON2=\'"+aB2+"\' where NUM_ABON2=\'"+aB1+"\' and DATA_IMP=\'"+SDate+"\'");
        DataModule1->IBDataSet1->Post();
  }





Это сообщение отредактировал(а) SAnatoliy - 15.5.2009, 11:00
PM MAIL   Вверх
jonie
Дата 15.5.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 4
Всего: 118



мне кажется что вы используете пессиместическую блокировку и в рамках открытой блокировки, пытаетесь обновить эту же запись... Нет? Нужно либо использовать IBDataSet2 объекты для изменения, либо убирать блокировки (читай закрывать IBDataSet2).....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
SAnatoliy
Дата 15.5.2009, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



у меня есть таблица1 в ней порядка 50 000 записей. С полями Abon1 и Abon2.
            есть таблица2 в ней порядка 10 записей с полями: N_Old и N_New.

Нужно найти в таблице1 в поле Abon2 одинаковые значения с Таблица2 -> N_Old, если найдено то заменить значением N_New->Таблица2. Искать в записях за определенное число (DATA_IMP=\'"+SDate).
 
Как это реализовать?

PM MAIL   Вверх
jonie
Дата 25.5.2009, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 4
Всего: 118



постараюсь ответить, хотя могу велосипедить... мб кто поправит.
выполнить на базе примерно такой запрос:
Код

update t1
set N_Old=t2.N_New
from table1 t1
inner join table2 t2 on t1.Abon2 = t2.N_Old AND t1.DATA_IMP=@sDate
?
правда я не знаю как это будет в диалекте IB....

а для вашего случая (руками делать join и чета там обновлять) очевидно придется сначала найти все ID, затем отключить ResultSet (rs.close() вызвав), и начать обновлять таблицу1 по этим ID ... как-то так, насколько я знаю IB не поддерживает MARS-like (http://technet.microsoft.com/en-us/library/ms345109(SQL.90).aspx) запросы....

Это сообщение отредактировал(а) jonie - 25.5.2009, 22:11


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.