Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не изменяются данные, ADO 
V
    Опции темы
TaNK
  Дата 6.11.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не могу понять - вроде добавление, удаление в базе работает (ADO), а вот изменение текущей записи не происходит - ниже приведен код, может кто подскажет в чем дело!

Код

код C++ Builder 

 try
 {
 ADOTable1->Edit(); // первый спосод
 ADOTable1ID->AsInteger = StrToInt(Edit5->Text);
 ADOTable1Fam->AsString = Edit6->Text;
 ADOTable1Name->AsString = Edit7->Text;
 ADOTable1Year_b->AsInteger = StrToInt(Edit8->Text);
/* ADOTable1->FieldByName("ID")->AsString = Edit5->Text; // второй способ
 ADOTable1->FieldByName("Fam")->AsString = Edit6->Text;
 ADOTable1->FieldByName("Name")->AsString = Edit7->Text;
 ADOTable1->FieldByName("Year_b")->AsString = Edit8->Text;*/
 ADOTable1->Post();
 }
 catch(...)
 {
  ShowMessage("Не удалось изменить данные в БД \n"
               "Проверте правильность\n"
               "изменений");
 }


не через первый, ни через втрой способ изменение не происходит, подскажите плиз! 

Это сообщение отредактировал(а) TaNK - 6.11.2006, 20:31


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Rodman
Дата 8.11.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Используй ADOQuery - наверняка...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
TaNK
Дата 8.11.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Rodman @ 8.11.2006,  11:29)
Используй ADOQuery - наверняка...

а зачем, если есть табл....


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Rodman
Дата 8.11.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(TaNK @  8.11.2006,  14:15 Найти цитируемый пост)
а зачем, если есть табл.... 

ну так не работает же...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
TaNK
Дата 8.11.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Rodman @ 8.11.2006,  14:40)
Цитата(TaNK @  8.11.2006,  14:15 Найти цитируемый пост)
а зачем, если есть табл.... 

ну так не работает же...

а если через query то как подскажи.. smile 


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Rodman
Дата 8.11.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



В ADOQuery пишешь запрос типа
Код

UPDATE TableName SET Fam=:PrmF, Name=:PrmN, Year_b=:PrmY WHERE IDTable=:PrmID;


а в билдере пишешь
Код

 ADOQuery->ParamByName('PrmID')->Value=StrToInt(Edit5->Text); 
 ADOQuery->ParamByName('PrmF')->Value=Edit6->Text;
 ADOQuery->ParamByName('PrmN')->Value=Edit7->Text;
 ADOQuery->ParamByName('PrmY')->Value=StrToInt(Edit8->Text);
 ADOQuery->ExecSQL;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
TaNK
Дата 8.11.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Rodman @ 8.11.2006,  14:54)
В ADOQuery пишешь запрос типа
Код

UPDATE TableName SET Fam=:PrmF, Name=:PrmN, Year_b=:PrmY WHERE IDTable=:PrmID;


а в билдере пишешь
Код

 ADOQuery->ParamByName('PrmID')->Value=StrToInt(Edit5->Text); 
 ADOQuery->ParamByName('PrmF')->Value=Edit6->Text;
 ADOQuery->ParamByName('PrmN')->Value=Edit7->Text;
 ADOQuery->ParamByName('PrmY')->Value=StrToInt(Edit8->Text);
 ADOQuery->ExecSQL;

счас попробую...


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
TaNK
Дата 8.11.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

UPDATE Pers SET Fam=:PrmF, Name=:PrmN, Year_b=:PrmY WHERE IDPers=:PrmID;

только не пойму что такое Fam=:PrmF откудо оно взялось?
а в билдере написал так
Код

ADOQuery1->Parameters->ParamByName("PrmID")->Value=StrToInt(Edit5->Text);
 ADOQuery1->Parameters->ParamByName("PrmF")->Value=Edit6->Text;
 ADOQuery1->Parameters->ParamByName("PrmN")->Value=Edit7->Text;
 ADOQuery1->Parameters->ParamByName("PrmY")->Value=StrToInt(Edit8->Text);
 ADOQuery1->ExecSQL();

добавил в параметры PrmN правильно?
так как без параметров не хочет компилится....но все равно выдает ошибку...
напиши надо ли в параметры добавлять PrnF и другие, а то что не получается!


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Rodman
Дата 8.11.2006, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(TaNK @  8.11.2006,  15:35 Найти цитируемый пост)
только не пойму что такое Fam=:PrmF откудо оно взялось?

это ты через параметр значение передаешь...

а не компилилось потому что я ординарные кавычки поставил, а необходимо было двойные

PM MAIL WWW Skype GTalk YIM MSN   Вверх
TaNK
Дата 8.11.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Rodman @ 8.11.2006,  16:47)
Цитата(TaNK @  8.11.2006,  15:35 Найти цитируемый пост)
только не пойму что такое Fam=:PrmF откудо оно взялось?

это ты через параметр значение передаешь...

а не компилилось потому что я ординарные кавычки поставил, а необходимо было двойные

смотри как я сделал у меня есть одно поля ID - один стандартный счетчик акцесса, называется он по умолчанию Код, а ID это я ввел нужно просто - это не ключ...так вот...я изменил кавычки на двойные, задал в query->parametrs PrmID,PrmF,PrmN и PrmY, а SQL - написал 
Код

UPDATE Pers SET ID=:PrmID,Fam=:PrmF, Name=:PrmN, Year_b=:PrmY WHERE Код=:PrmK;

а в билдере так - 
Код

ADOQuery1->Parameters->ParamByName("PrmID")->Value=StrToInt(Edit5->Text);
 ADOQuery1->Parameters->ParamByName("PrmF")->Value=Edit6->Text;
 ADOQuery1->Parameters->ParamByName("PrmN")->Value=Edit7->Text;
 ADOQuery1->Parameters->ParamByName("PrmY")->Value=StrToInt(Edit8->Text);
 ADOQuery1->ExecSQL();

но теперь никаких ошибок не выдает...просто не изменяет данные...что делать..подскажи..плиз!


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Rodman
Дата 8.11.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



а где ты 
Цитата(TaNK @  8.11.2006,  17:05 Найти цитируемый пост)
Код=:PrmK;

передаешь???

PM MAIL WWW Skype GTalk YIM MSN   Вверх
TaNK
Дата 8.11.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Rodman @ 8.11.2006,  18:29)
а где ты 
Цитата(TaNK @  8.11.2006,  17:05 Найти цитируемый пост)
Код=:PrmK;

передаешь???

получается что нигде..а как его передать....тогда...?

Добавлено @ 18:42 
я же код не ввожу..и не должен его изменять..это же счетчик...но как передать тогда не пойму...подскажи!


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Rodman
Дата 8.11.2006, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



тебе же надо обновить данные в таблице, но тебе необходимо обновлять по какому нить полю...

как я понимаю это поле ID - это же первичный ключ???

если да, то запрос
Код

UPDATE Pers SET Fam=:PrmF, Name=:PrmN, Year_b=:PrmY WHERE ID=:PrmID;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Rodman
Дата 8.11.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



напиши причину обновления данных и те данные которые ты выбираешь, и которые хочешь обновить
PM MAIL WWW Skype GTalk YIM MSN   Вверх
TaNK
Дата 8.11.2006, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Rodman @ 8.11.2006,  19:07)
напиши причину обновления данных и те данные которые ты выбираешь, и которые хочешь обновить

у меня первичный ключ называет "Код", а ID - просто поле не удачно его назвал.так вот SQL выглядит так - 
Код

UPDATE Pers SET ID=:PrmID-это не первичный ключ,Fam=:PrmF, Name=:PrmN, Year_b=:PrmY WHERE Код=:PrmK-это первичный ключ;

а в билдере так...
Код

 //эти четыре параметра я хочу изменять
 ADOQuery1->Parameters->ParamByName("PrmID")->Value=StrToInt(Edit5->Text);// - это не первичный ключ
 ADOQuery1->Parameters->ParamByName("PrmF")->Value=Edit6->Text;
 ADOQuery1->Parameters->ParamByName("PrmN")->Value=Edit7->Text;
 ADOQuery1->Parameters->ParamByName("PrmY")->Value=StrToInt(Edit8->Text);
 ADOQuery1->ExecSQL();

но все равно не изменяет данные. но и ошибку не выдает!


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

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

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


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

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


 




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


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

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