powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как добраться до значений ячеек в DBGrid?
20 сообщений из 20, страница 1 из 1
Как добраться до значений ячеек в DBGrid?
    #32742405
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собсно сабж...
Язык: Билдер 6.0
БД: Oracle (компонент: TOracleDataSet)

Код: plaintext
6epkyT
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32742416
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может так ?!

DBgrid1->DataSource->DataSet->FieldByName("my_field")->AsString;//AsInteger ;


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32743865
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, не так.

Я имел в виду, что надо добраться к конкретнной ячейке в заполненной таблице, а не через DataSource. (типа DBGrid1->Columns-> ... и т.д. по строкам)

И еще. Как очистить потом DBGrid?

Код: plaintext
6epkyT
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32744210
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BDGrid только отображает данные ,
сами данные не находятся в DBGrid-e


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32744523
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, а как, например, тогда получить значение ячейки в 4-ой строке и во 2-ом столбце, затем в 5-ой строке и 3-ем столбце...
Код: plaintext
6epkyT
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32744557
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BerkutХорошо, а как, например, тогда получить значение ячейки в 4-ой строке и во 2-ом столбце, затем в 5-ой строке и 3-ем столбце...
На самом деле можно. Но проблема в том, что это заведомо бессмысленная операция. Я практически уверен в том, что ты не сможешь придумать задачу, решать которую стоит именно таким способом.
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32744784
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНа самом деле можно. Но проблема в том, что это заведомо бессмысленная операция. Я практически уверен в том, что ты не сможешь придумать задачу, решать которую стоит именно таким способом.


А если придется выводить на принтер содержимое ДБГрида (и при этом значение отдельных строк/столбцов/ячеек)? Или все делается гораздо проще?

Код: plaintext
6epkyT
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32745199
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BerkutА если придется выводить на принтер содержимое ДБГрида (и при этом значение отдельных строк/столбцов/ячеек)?
То вот код, который это делает. Печатает выделенные строки и те колонки, которые есть в гриде (надеюсь, понятно, что в датасете их может быть больше). Печатать, скажем, первые три колонки грида - добавляется за пару минут.
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32746467
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer На самом деле можно. Но проблема в том, что это заведомо бессмысленная операция. Я практически уверен в том, что ты не сможешь придумать задачу, решать которую стоит именно таким способом

Вот кажется придумал:

Такой пример:

пусть имеется таблица следующего вида:

Код: plaintext
1.
2.
3.
4.
5.
code          name
 ----------------- 
 01              Вася
 02              Петя
 03              ...

Требуется по выбранной записи из таблицы сформировать еще какой-то запрос к БД. Фильтром для следующего SQL-запроса служит поле code .

Удобнее было бы для юзеров выбирать записи из таблицы (DBGrid) просто двойным нажатием мыши, а для этого надо определять значения ячеек в первом столбце (code) и выделенной строке. После этого передавать это значение в другую форму...

Тогда как все ето сделать?

Код: plaintext
6epkyT
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32746633
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BerkutТребуется по выбранной записи из таблицы сформировать еще какой-то запрос к БД. Фильтром для следующего SQL-запроса служит поле code .
Обратите внимание. Вы совершенно правильно сформулировали решение поставленной Вами задачи.

BerkutУдобнее было бы для юзеров выбирать записи из таблицы (DBGrid) просто двойным нажатием мыши,
Вполне

Berkutа для этого надо определять значения ячеек в первом столбце (code) и выделенной строке.
Хм. А теперь представьте на минуту, что пользователь воспользовался стандартной функциональностью грида и переставил колонки местами. Так и будете формировать запрос с "Петя" вместо "01"?

А делается это просто, буквально, в одну строчку

Код: plaintext
1.
SecondaryQuery.ParamByName ( 'filter' ).AsInteger := GridQuery.FieldByName ( 'code' ).AsInteger ;

GridQuery - датасет, питающий грид. SecondaryQuery - датасет, который требуется фильтровать. Конверсия OP -> C, надеюсь, понятна. Варианты "возвращать выбранное поле из функции" итп, надеюсь, тоже особых вопросов не вызовут ;)
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32746685
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerGridQuery - датасет, питающий грид. SecondaryQuery - датасет, который требуется фильтровать. Конверсия OP -> C, надеюсь, понятна. Варианты "возвращать выбранное поле из функции" итп, надеюсь, тоже особых вопросов не вызовут ;)

Я может не совсем правильно понял последнюю мысль, НО у меня ситуация такая:

имеется 2 ДБГрида (при этом один ДатаСет - главный, другой - подчиненный) в главной форме (вызывающая форма),
еще 1 StringGrid в вспомогательной форме. Вспомогательная форма служит для сужения области поиска к БД.

как раз по выбранной строке из первой колонки выбирается code и передается в вызывающую форму: в поле Edit1->Text выводится имя name , а фильтром и служит как раз этот code .
Юзер может в другие Editы еще ввести какие-то параметры для поиска.

1. Хотелось бы вместо StringGrid использовать DBGrid
2. Сохранить тот принцип работы (не знаю понятно объяснил или нет :) ), к-ый уже есть


Код: plaintext
6epkyT
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32746756
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть имеются ввиду lookup поля ?!

 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32747121
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Berkut(не знаю понятно объяснил или нет :) )
Думаю, знаете :) Или догадываетесь :)

Попробую дать универсальный ответ.

Сейчас, похоже, у Вас есть некий DataSet, из которого Вы заполняете StringGrid. Далее по клику Вы берете Cells[1,row] и используете его.

Теперь - сделайте DBGrid вместо StringGrid, а в качестве значения берите DataSet.FieldByName ( 'code' ).AsInteger
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32747566
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerСейчас, похоже, у Вас есть некий DataSet, из которого Вы заполняете StringGrid. Далее по клику Вы берете Cells[1,row] и используете его.


Имено так и есть, только вместо ДатаСет использую TOracleQuery. А насчет вашего совета я попробую.

JibSkeartможет быть имеются ввиду lookup поля ?!

Честно говоря я пока не знаю, что такое lookup поля.

Код: plaintext
6epkyT
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32748706
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thaks a lot to JibSkeart & softwarer!

Код: plaintext
6epkyT
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32792830
_Tyler Durden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Очень похожий вопрос:
Мне надо сделать в html таблицу со значениями из DBGrid. Я думал, что просто буду идти по ячейкам и писать значения вперемешку с тэгами в файл. Есть ли какой-то более изящный (правильный) выход?

Код: plaintext
DBgrid1->DataSource->DataSet->FieldByName("my_field")->AsString;
- работает, но берет только первое значение в столбце. А как брать остальные?
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32792877
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может это ?!
Код: plaintext
1.
2.
3.
4.
5.
6.
DBgrid1->DataSource->DataSet->First();
for(int i =  0 ;i<DBgrid1->DataSource->DataSet->RecordCount;i++)
{
   DBgrid1->DataSource->DataSet->FieldByName("my_field")->AsString;
   DBgrid1->DataSource->DataSet->Next();
}


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32793146
_Tyler Durden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, это работает!
Жаль только, что там идет обращение по имени поля - если список полей изменится, то придется переписывать код. Но для моей задачи список полей вроде бы постоянен.
Если не затруднит, то есть еще один небольшой вопрос: какой функцией писать в файл полученные значения (тип string)?
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32793212
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Tyler Durden...есть еще один небольшой вопрос: какой функцией писать в файл полученные значения (тип string)?
В какой файл? Если в текстовый, то есть функции для работы с текстовыми файлами. Эти функции есть как в старом стиле (fopen(...) и т.д.), так и в новом (FileOpen(...) и т.д.).

Так вот, примерный список действий следующий (C++Builder):
....
AnsiString OutputText;
...
if (!FileExists(<filename>))
oFileHandle=FileCreate(<filename>);
else
<some operations>;
OutputText="Some text strings...";
FileWrite(oFileHandle,OutputText.c_str(),OutputText.Length());
...
FileClose(oFileHandle);
...
...
Рейтинг: 0 / 0
Как добраться до значений ячеек в DBGrid?
    #32795075
_Tyler Durden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Станислав! Необходимо было создать текстовый файл (html), так что Ваш пример подошел отлично.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как добраться до значений ячеек в DBGrid?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]