C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как в PickList записать результат запроса SQL, или как записать в строковый массив
welcome
  Отправлено: 02.06.2004, 13:20


Ученик-кочегар

Группа: Участник
Сообщений: 8



Как в PickList записать результат запроса SQL или как записать результат запроса в строковый массив????
Valdemar
Отправлено: 02.06.2004, 15:14


Мастер участка

Группа: Участник
Сообщений: 433



В цикле пройдите по всем записям вашего запроса и записывайте значение нужного поля куда хотите.
Например, так
CODE
TStringList * list=new TStringList;
Query->First();
for (int i=0;i<Query->RecordCount;i++)
{
   list->Add(Query->FieldByName("name")->AsString);
   Query->Next();
}
olegenty
Отправлено: 02.06.2004, 15:20


Ветеран

Группа: Модератор
Сообщений: 2412



Нахожу это более правильным:
CODE

QryForPickList->Open();
Grid->Columns->Items[<Номер нужной колонки>]->PickList->Clear();
while (!QryForPickList->Eof)
{
  Grid->Columns->Items[<Номер нужной колонки>]->PickList->Add(QryForPickList->FieldByName("<Имя колонки для формирования выпадающего списка>")-AsString);
  QryForPickList->Next();
}

AVC
Отправлено: 02.06.2004, 15:42


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

iRecordCount

В некоторых условиях получение значения RecordCount может занимать кол-во времени сравнимое с проходом по запросу.

А еще можно так (вариант из предыдущей темы):
CODE

TDataSet *qry = Query1;
TField *fld = qry->FieldByName("???");
TStringList *lst = Grid->Columns->Items[<Номер нужной колонки>]->PickList;
// проверки на вашей совести
for (lst->Clear(), qry->First(); !qry->Eof; qry->Next()) lst->Add(fld->AsString);
olegenty
Отправлено: 02.06.2004, 15:47


Ветеран

Группа: Модератор
Сообщений: 2412



да, при большом наборе создание ссылки на поле на 1/3 (по старым наблюдениям) увеличивает скорость работы цикла, компенсируя потери на вызов FieldByName
AVC
Отправлено: 02.06.2004, 15:52


Ветеран

Группа: Модератор
Сообщений: 1583



А главное цикл красиво смотрится — в одну строку.
olegenty
Отправлено: 02.06.2004, 15:56


Ветеран

Группа: Модератор
Сообщений: 2412



biggrin.gif ну-ну... кто-нибудь, только переходящий с Pascal, на пару десятков минут зависнет со свопом разбираться в этой строке biggrin.gif
horseman
Отправлено: 02.06.2004, 22:41


Ученик-кочегар

Группа: Участник
Сообщений: 4



А не удобнее пользоватся DBLookupList. На мой взгляд он идеально подходит для вывода данных в виде выпадающего списка.
olegenty
Отправлено: 03.06.2004, 07:00


Ветеран

Группа: Модератор
Сообщений: 2412



Ты просто опоздал, речь идёт именно о том, чтобы заполнять PickList колонки DBGrid руками по результатам запроса, хотя я и не пойму, зачем сие действо понадобилось вопрошающему...
** welcome
  Отправлено: 03.06.2004, 09:46


Не зарегистрирован







QUOTE (horseman @ 02/06/2004, 23:43)
А не удобнее пользоватся DBLookupList. На мой взгляд он идеально подходит для вывода данных в виде выпадающего списка.

Расскажи пожалуйста как им воспользоваться. У меня пока не получается.

Вернуться в Работа с базами данных в C++Builder