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
|
В некоторых условиях получение значения 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
|
ну-ну... кто-нибудь, только переходящий с Pascal, на пару десятков минут зависнет со свопом разбираться в этой строке
|
|
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. На мой взгляд он идеально подходит для вывода данных в виде выпадающего списка. |
Расскажи пожалуйста как им воспользоваться. У меня пока не получается. |
|