Аватар для Mihay
0 / 0 / 0
Регистрация: 21.03.2012
Сообщений: 13

Как получить доступ к ячейкам DBGrid после SQL-запроса ADOQuery

21.03.2012, 20:19. Показов 5654. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Я на C++ Builder-е программирую давно но с Базами данных столкнулся впервые, т.к. решаю моделирую математические модели.
На этот надо было вытащить некоторые числа заложенные в БД, которые в ней динамически меняются. В принципе подключение к БД было выполнено по ADO-технологии. Послав SQL-запросы при помощи ADOQuery, я получил сетку чисел в DBGRid-е. Дальше я не знаю или недопонимаю как получить доступ к этим числам, чтоб я ими мог в дальнейшем оперировать уже отдельно от DBGrid. Перечитал много форумов, но там сказано вроде бы, что доступ к ячейкам ощуществляется при поомощи метода ADOQuery: Parameters, т.е.
ADOQueryDB->Parameters->ParamByName("Numb")->Value или другие модификации Parameters.
Но тут начинается непонятки: При запуске программы - она говорит что такого стобца "Numb" - не существует (хотя он есть), а в модификациях не существует такого элемента массива.
Помогите мне пожалуйста, ведь осталось только получить доступ к этим ячейкам DBGrid
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.03.2012, 20:19
Ответы с готовыми решениями:

Как получить доступ к ячейкам DBGrid?
Здравствуйте! Мне нужна помощь. Тут вот какое дело, у меня есть база данных в Access, к которой я подключился из Delphi, и отобразил...

Как содержимое запроса вывести в Excel? (базы данных, DBGrid, ADOQuery)
Ребята, всем привет! нужна помощь. у меня есть БД которую я вывожу в DBGrid через ADOQuery и мне надо содержимое запроса вывести в Excel. ...

Как получить доступ к ячейкам табличной части?
Всем привет. Есть табличная часть с реквизитом "Сумма". Как получить доступ к ячейке текущей строки реквизита "Сумма"?.

10
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.03.2012, 21:21
C++
1
int i = ADOQueryDB->FieldByName("Numb")->Integer;
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
21.03.2012, 21:22
Насколько я понимаю, DBGrid - это фактически массив ссылок на конкретные значения в базе данных которые отображаются в DBGrid. Т.е. , если вы что-то меняете в DBGrid и база данных из которой отображаются данные находится в состоянии Edit или Append, то после выполнения команды Post в базе данных сохраняться новые значения.
0
 Аватар для Mihay
0 / 0 / 0
Регистрация: 21.03.2012
Сообщений: 13
22.03.2012, 10:15  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
C++
1
int i = ADOQueryDB->FieldByName("Numb")->Integer;
Спасибо за ответ, очень помогло, но не все: ADOQueryDB->FieldByName("Numb")->Integer - указывает на только на 1-ую строку столбца. А как получить доступ ко всем строкам (числам) столбца???

Заранее благодарю

Добавлено через 6 минут
Цитата Сообщение от Kabak Посмотреть сообщение
Насколько я понимаю, DBGrid - это фактически массив ссылок на конкретные значения в базе данных которые отображаются в DBGrid. Т.е. , если вы что-то меняете в DBGrid и база данных из которой отображаются данные находится в состоянии Edit или Append, то после выполнения команды Post в базе данных сохраняться новые значения.
База меняется в ручную, и в совсем другим человеком. Я же не собираюсь менять программно что-то в базе, я только хочу получить нужную мне информацию (числа), послав SQL-запрос. Благодарю за внимание!
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.03.2012, 10:23
Цитата Сообщение от Mihay Посмотреть сообщение
А как получить доступ ко всем строкам (числам) столбца
Формируй цикл и пробижись по столбику и получишь данные
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
22.03.2012, 10:35
Цитата Сообщение от Mihay Посмотреть сообщение
...
Добавлено через 6 минут
База меняется в ручную, и в совсем другим человеком. Я же не собираюсь менять программно что-то в базе, я только хочу получить нужную мне информацию (числа), послав SQL-запрос. Благодарю за внимание!
Доступ делают не к DBGrid а непосредственно к базе или таблице которая отображается в DBGrid. Если вам нужен доступ к конкретному элементу , например , выбранному сейчас в DBGrid, то как-то так делается :

C++
1
2
3
4
5
ИмяТаблицыОтображаемой в DBGrid->GotoBookmark( (TBookmark)DBGrid1->SelectedRows->Items[0]);
 
ИмяТаблицыОтображаемой в DBGrid->FieldByName("Название поля/ячейки в базе данных/таблице из 
которого нужно получить значение")->Тип данных в котором хотите получить или хранятся 
в таблице//(например: AsString или AsInteger или AsBoolean)
0
 Аватар для Mihay
0 / 0 / 0
Регистрация: 21.03.2012
Сообщений: 13
22.03.2012, 11:52  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Формируй цикл и пробижись по столбику и получишь данные
for (int i=0; i<ADOQueryDB->FieldCount; i++)
{
а здесь совершенно не понятно что писать (помечено ?????)
Mas[i] = ADOQueryDB->?????[i]:
}

Заранее спасибо

Добавлено через 13 минут
Цитата Сообщение от Kabak Посмотреть сообщение
Доступ делают не к DBGrid а непосредственно к базе или таблице которая отображается в DBGrid. Если вам нужен доступ к конкретному элементу , например , выбранному сейчас в DBGrid, то как-то так делается :

C++
1
2
3
4
5
ИмяТаблицыОтображаемой в DBGrid->GotoBookmark( (TBookmark)DBGrid1->SelectedRows->Items[0]);
 
ИмяТаблицыОтображаемой в DBGrid->FieldByName("Название поля/ячейки в базе данных/таблице из 
которого нужно получить значение")->Тип данных в котором хотите получить или хранятся 
в таблице//(например: AsString или AsInteger или AsBoolean)
Спасибо обязательно попробую и этот вариант
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.03.2012, 12:18
А что ты хочешь потом сделать с этими цифрами? И зачем там тебе массив?
0
 Аватар для Mihay
0 / 0 / 0
Регистрация: 21.03.2012
Сообщений: 13
22.03.2012, 12:47  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
А что ты хочешь потом сделать с этими цифрами? И зачем там тебе массив?
Применить их в формулах! вообще массив создан для удобства считывания.

Ну а как выйти из проблемы (насчет вопросов ??????)?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.03.2012, 14:33
Я бы просто пораспихивал в переменные значения столбцов и подставлял в формулу прямо в цикле

Добавлено через 4 минуты
Цитата Сообщение от Mihay Посмотреть сообщение
for (int i=0; i<ADOQueryDB->FieldCount; i++)
{
а здесь совершенно не понятно что писать (помечено ?????)
Mas[i] = ADOQueryDB->?????[i]:
}
C++
1
2
3
4
5
6
7
8
int i = 0;
ADOQueryDB->First();
while(!ADOQueryDB->Eof)
{
Mas[i] = ADOQueryDB->Fields->Fields[i]->AsInteger;
i++;
ADOQueryDB->Next();
}
Добавлено через 38 минут
0
 Аватар для Mihay
0 / 0 / 0
Регистрация: 21.03.2012
Сообщений: 13
22.03.2012, 15:18  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Я бы просто пораспихивал в переменные значения столбцов и подставлял в формулу прямо в цикле

Добавлено через 4 минуты


C++
1
2
3
4
5
6
7
8
int i = 0;
ADOQueryDB->First();
while(!ADOQueryDB->Eof)
{
Mas[i] = ADOQueryDB->Fields->Fields[i]->AsInteger;
i++;
ADOQueryDB->Next();
}
Добавлено через 38 минут
Спасибо большое!! Тема исчерпана
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2012, 15:18
Помогаю со студенческими работами здесь

Как получить доступ к ячейкам Excel через C#?
Делаю один проэкт на C# в конце различных вычислений куча результатов, есть идея вывести их всех в Excel, чтобы было красиво, так вот как...

Как получить программный доступ ко всем зависимым ячейкам на листе Excel
Как при обновлении всех зависимых ячеек в Excel все их переформатировать? Видимо, на событии Worksheet1_Calculate, но как получить...

Как получить доступ к данным в ADODataSet (или ADOQuery)?
Добрый день. Не могу понять, как получить доступ к конкретной ячейке результирующей таблицы ADOQuery (или ADODataSet). Например, к ячейке,...

Dbgrid adoquery sql
Доброго времени суток. Не понимаю как сделать (ведомость к оплате по заданому цеху с подсчетом общей суммы) тоесть я ввожу цех программа...

Как занести результат SQL запроса в dbgrid?
Подскажите пожалуйста, как занести результат SQL запроса в dbgrid? Мне нужно в БД найти товар по его коду и занести в таблицу название и...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru