Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 30.08.2015
Сообщений: 75

Как открыть DataSet после запроса, не возвращающего результат?

21.10.2015, 22:58. Показов 1251. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здавствуйте форумчане
Знаю, что после пропихивания запроса, который не возвращает результат нужно юзать
C++
1
 ADOQuery1->ExecSQL();
У меня такой кусок...
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int i = 1; i <= Form1->ADOQuery1->RecordCount; i++)
    {
        //Form1->DataSource1->DataSet->Active = false;
        //Form1->DataSource1->DataSet->Cancel();
        Form1->DataSource1->DataSet->Close();
        Form1->ADOQuery1->Cancel();
        Form1->ADOQuery1->SQL->Strings[0] = "UPDATE things SET `ID`="+IntToStr(i)+";";
        Form1->ADOQuery1->ExecSQL();
        Form1->DataSource1->DataSet->Open();
        //Form1->DataSource1->DataSet->Active = true;
        Form1->ADOQuery1->FindNext();
    }
Проблема:
Так вот, если убрать от сюда Form1->DataSource1->DataSet->Close(); и Form1->DataSource1->DataSet->Open();, то при исполнении этого куска ... вылезает ошибка: "ADOQuery1: Cannot perform this operation on a closed dataset.". Если закрывать DataSource1->DataSet->Cancel();, то оно не открывается и при исполнении этого куска вылезает другая ошибка: "ADOQuery1: CommandText does not return a result set.". Жаль, что нету: DataSource1->DataSet->ExecSQL();
Я уже неделю в поисках решения. Нигде его так и не нашел. От безысходности сюда написал. Помогите, устранить эту ошибку, чтобы все проворачивалось хорошо
(Данный кусок кода должен "пересчитывать" первое поле ID, чтобы вместо: 1,3,4,6,8 (т.е. 5 строк в таблице), было: (1,2,3,4,5))
P.S. Использую БД Access
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2015, 22:58
Ответы с готовыми решениями:

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

Как передать параметр внутрь запроса в DataSet
Всем привет! Есть вот такой вот SQL запрос: SELECT dir.id_dir, dir.imya, dir.fam, dir.otch, dir.id_banka FROM (dir...

После повторной отправки Get-запроса и парсера выдается предыдущий результат
Есть IDHTTP,проходит процесс авторизации,далее идет get запрос, а с него идет парсер входящих сообщений,короче спарсил я...

4
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
22.10.2015, 04:40
C++
1
2
3
4
5
6
7
Form1->ADOQuery1->First();
while (!Form1->ADOQuery1->Eof)
 {Form1->ADOQuery2->SQL->Text = "UPDATE things SET `ID`= "+IntToStr(Form1->ADOQuery1->RecNo)+" where `ID`= " + Form1->ADOQuery1->FieldByName("ID")->AsString + ";";
  Form1->ADOQuery2->ExecSQL();
  Form1->ADOQuery2->Close();
  Form1->ADOQuery1->Next();
 }
Добавлено через 1 минуту
Цитата Сообщение от RomanChoCho Посмотреть сообщение
Данный кусок кода должен "пересчитывать" первое поле ID, чтобы вместо: 1,3,4,6,8 (т.е. 5 строк в таблице), было: (1,2,3,4,5)
таких кусков кода быть не должно для ID полей
1
0 / 0 / 0
Регистрация: 30.08.2015
Сообщений: 75
22.10.2015, 09:23  [ТС]
Спасибо. Все нормально пересчитывает
Цитата Сообщение от Bit_Man Посмотреть сообщение
таких кусков кода быть не должно для ID полей
А тогда как устранять пробелы в ID'шниках? Ведь в самих БД это не предусмотрено. А при частом добавлении и удалении записей, будут появляться и расти пробелы.
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
22.10.2015, 11:31
Цитата Сообщение от RomanChoCho Посмотреть сообщение
А тогда как устранять пробелы в ID'шниках?
Никак
Цитата Сообщение от RomanChoCho Посмотреть сообщение
Ведь в самих БД это не предусмотрено. А при частом добавлении и удалении записей, будут появляться и расти пробелы.
это есть нормальное функционирование и нет ничего в этом страшного.
0
0 / 0 / 0
Регистрация: 30.08.2015
Сообщений: 75
22.10.2015, 12:47  [ТС]
Ну ладно, спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2015, 12:47
Помогаю со студенческими работами здесь

Как записать в массив результат запроса если результат-массив данных а не 1 значение
Здравствуйте , подскажите пож-та как организовать в 2010-ом бэйсике работу с запросами, возвращающими большой массив данных из бд Access...

Как сохранить результат запроса?
Работает в IB формулировка SELECT поле AS имя_запроса FROM...? Или как-то по-другому надо, INTO какое-нибудь? Чтоб можно было этот...

Как записать результат запроса?
Добрый день! спрошу глупую вещь, но спрошу 2 справочника: ЗагруженныеБилеты (нужный мне реквизит - НомерТелефона (строковое значение)) и...

Как вывести результат запроса
Подскажите как выводить результат на форме (ну допустив в edit) во время выполнения запроса ? select S.NOM_ABON from SPR_ABON S

Как получить результат запроса к базе?
Итак... скрипт выполняется , никаких сообщений об ошибках... но есть маленькая проблема, я не могу получить результат запроса в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru