Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.116.62.45] |
|
Сообщ.
#1
,
|
|
|
При работе с базой данных через компоненты TADOTable->TDataSource->TDBGrid, выделив нужную строку в таблице фильтром или мышкой в окне TDBGrid, я имею несколько способов получить значение нужного поля выделенной строки, например просто <ИмяТаблицы><ИмяПоля>->Value (AsString, AsUnicodeString и т.д.), по индексу <ИмяТаблицы>->Fields[<ИндексПоля>]->Value или по имени <ИмяТаблицы>->FieldByName(<Имя поля>->Value. Все это многократно описано в куче книг.
При работе через компоненты TADOQuery->TDataSource->TDBGrid я могу выделить мышкой нужную строку в таблице и получить значение того поля, куда я ткнул мышкой, с помощью простого кода <ИмяDBGrid>->SelectedField->Value (AsString), также я могу текстом SQL запроса отобрать только одну строку, но вот как получить значения нужных полей данной строки, не ясно. Типичные для TADOTable сочетания имени таблицы с именем поля с заменой имени ADOTable на имя ADOQuery бракуется компилятором, обращение к полю по имени или по индексу также не признаются. Тем не менее, в списке переменных в отчете TfrxReport из гннератора отчетов Fast Reports все поля, вызываемые в запросе присутствуют и, если их использовать в заголовке или подножии отчета, то печатаются данные именно из выбранной мышкой в компоненте TDBGrid строки. Посмотрел в Help С++Builder 2010, рался в разных руководствах - ничего полезного не нашел. Кто знает - сообщите. |
Сообщ.
#2
,
|
|
|
Вот кусок кода из моей программы. Если я правильно понял суть вопроса, то возможно поможет.
void __fastcall TLoginForm::LoginButtonClick(TObject *Sender) { ADOQuery->Active = false; ADOQuery->SQL->Clear(); ADOQuery->SQL->Add("SELECT * FROM users WHERE login='" + LoginEdit->Text + "'"); ADOQuery->Active = true; if (ADOQuery->RecordCount > 0) { ADOQuery->First(); UnicodeString md5DBPassword = ADOQuery->FieldByName("password")->AsString; ... } } |