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

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

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


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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

Код: plaintext
DBgrid1->DataSource->DataSet->FieldByName("my_field")->AsString;
- работает, но берет только первое значение в столбце. А как брать остальные?
...
Рейтинг: 0 / 0
21.11.2004, 12:38
    #32792877
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добраться до значений ячеек в DBGrid?
Может это ?!
Код: 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
22.11.2004, 00:41
    #32793146
_Tyler Durden
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добраться до значений ячеек в DBGrid?
Спасибо, это работает!
Жаль только, что там идет обращение по имени поля - если список полей изменится, то придется переписывать код. Но для моей задачи список полей вроде бы постоянен.
Если не затруднит, то есть еще один небольшой вопрос: какой функцией писать в файл полученные значения (тип string)?
...
Рейтинг: 0 / 0
22.11.2004, 07:13
    #32793212
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добраться до значений ячеек в DBGrid?
_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
23.11.2004, 02:37
    #32795075
_Tyler Durden
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добраться до значений ячеек в DBGrid?
Спасибо Станислав! Необходимо было создать текстовый файл (html), так что Ваш пример подошел отлично.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как добраться до значений ячеек в DBGrid? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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