На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела C/C++: Базы данных
Модераторы: B.V.
  
    > Доступ к значениям полей строки, найденной TADOQuery , Не могу найти а Help и книжках нужных свойств или методов для получения значений полей в выбранной в компоненте TADOQuery строке таблицы MySQL
      :wall: При работе с базой данных через компоненты 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, рался в разных руководствах - ничего полезного не нашел. Кто знает - сообщите.
        Вот кусок кода из моей программы. Если я правильно понял суть вопроса, то возможно поможет.
        ExpandedWrap disabled
          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;
                  ...
              }
          }
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0183 ]   [ 16 queries used ]   [ Generated: 26.04.24, 17:07 GMT ]