Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2011, 17:07   #1
Rymbil
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 38
По умолчанию Builder ADOQuery

Програмирую в c++ Builder 6
Если можно сделать не на sql то могу и по другому написать
Здравствуйте. Помогите написать запрос.
Задача такая: есть студенты у них есть оценки и мне нужно назначать стипендию, не знаю точно как ее назначают.
2 таблицы студенты и оценки
Код:
 UPDATE Students INNER JOIN Ocenki ON Students.ID = Ocenki.ID_ST SET Students.Stipendia = 1000
WHERE (((Ocenki.Ocenki)>3));

Последний раз редактировалось Stilet; 19.01.2011 в 18:14.
Rymbil вне форума Ответить с цитированием
Старый 19.01.2011, 17:12   #2
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

Try-catch =)
dosha вне форума Ответить с цитированием
Старый 19.01.2011, 18:02   #3
Rymbil
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 38
По умолчанию

Спасибо, я правда пока не понял как мне это использовать и что это такое, но щас поищу.
Че то не пойму как это писать и куда, наишите подробнее пожалуйста

Последний раз редактировалось Rymbil; 19.01.2011 в 18:16.
Rymbil вне форума Ответить с цитированием
Старый 19.01.2011, 18:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Rymbil
А ты этот запрос небось методом Open выполнить пытаешся? А надо ExecSQL, если конечно речь идет о ADO.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2011, 18:19   #5
Rymbil
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 38
По умолчанию

Ну у меня есть кнопка в которой ADOQuery1->Active=true;
И ADOQuery в свойстве SQL тот запрос.
Ну и конечно дбгриды, датасоурсы, адотэйблы, и адоконнекшн
Цитата:
Сообщение от Stilet Посмотреть сообщение
А ты этот запрос небось методом Open выполнить пытаешся? А надо ExecSQL, если конечно речь идет о ADO.
Даже не знаю наверно не то и не другое

Последний раз редактировалось Rymbil; 19.01.2011 в 18:23.
Rymbil вне форума Ответить с цитированием
Старый 19.01.2011, 18:39   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
ADOQuery в свойстве SQL тот запрос
ну Вам сразу правильный ответ дали.
Для запросов, где выбираются данные (SELECT .... FROM)
выполняете открытие датасета: ADOQuery1->Active=true; (или, что тоже самое, только лучше выглядит: ADOQuery1->Open;

в случае изменения данных (это запросы INSERT INTO... / DELETE FROM ... / UPDATE ... FROM /)
нужно выполнять код:
Код:
ADOQuery1->ExecSQL;
p.s. не помню, в билдере нужны круглые скобки после имени метода или нет... ну, если нужны, поставьте их:
ADOQuery1->ExecSQL();
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2011, 19:10   #7
Rymbil
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 38
По умолчанию

Спасибо всем все понял ADOQuery1->ExecSQL(); заработало, только есть небольшая проблема, данные отображаются только после перезапуска программы
Rymbil вне форума Ответить с цитированием
Старый 19.01.2011, 20:07   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
данные отображаются только после перезапуска программы
сделайте две простых вещи:
1) для отображения данных и для изменения используйте РАЗЛИЧНЫЕ AdoQuery

2) после внесения изменений, тот ADOQuery, который у Вас служит для отображения данных (select..)
либо сделайте ему обновление: ADOQuery0->Refresh();
либо, если не поможет - тогда сделайте переоткрытие датасета:
ADOQuery0->Close();
ADOQuery0->Open();
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.01.2011, 10:31   #9
Rymbil
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
сделайте две простых вещи:
1) для отображения данных и для изменения используйте РАЗЛИЧНЫЕ AdoQuery

2) после внесения изменений, тот ADOQuery, который у Вас служит для отображения данных (select..)
либо сделайте ему обновление: ADOQuery0->Refresh();
либо, если не поможет - тогда сделайте переоткрытие датасета:
ADOQuery0->Close();
ADOQuery0->Open();
У меня не получилось как вы написали.
Вот так у меня сработало
ADOTable1->Active=false;
ADOTable1->Active=true;

Осталось только запрос переделать а то он всем у кого есть четверка дает стипендию, ну наверно я сам справлюсь с этим
Rymbil вне форума Ответить с цитированием
Старый 22.01.2011, 19:51   #10
Rymbil
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 38
По умолчанию

Снова здравствуйте, у меня возникла еще одна проблема,
Код:
SELECT Students.FIO, Students.Gruppa, Students.Stipendia
FROM Students
WHERE (((Students.Gruppa)="ComboBox1->Text") AND ((Students.Stipendia)>0));
Запрос не работает, как нормально указать чтоб значение бралось из ComboBox? Мне нужно выводить на печать студентов выбранной группы и у которых есть стипендия

Последний раз редактировалось Stilet; 22.01.2011 в 21:18.
Rymbil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синтаксис Delphi Builder --> C++ Builder KingBelt C++ Builder 2 28.11.2010 16:25
AdoQuery lenuxoid БД в Delphi 6 25.03.2010 18:24
Перенести код из C++ Builder 5 в C++ Builder 2009 Kreadlling C++ Builder 2 13.09.2009 14:00
AdoQuery Stanislav БД в Delphi 34 26.06.2009 22:09
ADOQuery Roof БД в Delphi 2 12.07.2008 18:08