![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Взять из таблицы записи со значениями из комбобокса.
John_Doe © (2006-02-11 11:02:00)Мне нужно,чтоб в комбобоксе,отображались названия всех складов из таблицы tblStocks.
И при выборе некотрого склада,выпадал список всех товаров данного склада,из другой таблицы tblWare.
Реализовал так:
1)Связал Stocks и Ware,по автоинкрементному полю таблицы Stocks.
2)В OnCreate'е главной формы,считываю названия складов в StringList.
3)В OnShow другой формы,присваиваю cbxStockName.Items:=StringList;
4)В OnChange'е комбобокса делаю: dmTables.tblWare.FindNearest([cbxStockName.Text]);
dmTables - модуль данных,содержащий таблицы.
Есть ли способ реализовать это оптимальней?
Если да,то прошу подскажите.
PS.Пробовал DBLookupCombobox,не получается.
Desdechado (2006-02-11 18:27:00) [1]датасеты все разные, у многих есть только однонаправленный доступ, у многих - подчитка с сервера по мере необходимости
поэтому только последовательный доступ к записям имеет смысл, имхо
John_Doe (2006-02-11 17:52:00) [2]До сих пор так и поступал.
Просто все дело в том,что вычитывать все записи по одной...
Думал может есть способ лучше,но очевидно его нет.
Desdechado (2006-02-11 17:50:00) [3]table - набор данных, в котором одновременно доступна только текущая строка
поэтому для запихивания в stringlist делается цикл из 3 строчек
with( table ) do
begin
first;
while( not eof ) do
stringlist.items.add(fields[0].asstring;
next;
end;
end;
John_Doe (2006-02-11 17:39:00) [4]Интереса ради...
А можно ли либо из грида,либо из самого ADOTable,взять значения ячеек некоторого поля одним махом и вписать их в StringList?
Ну что-то вроде:
StringList.Items:=ADOTable.Fields[1].Items;
Такая запсиь ес-нно неверна,но все же наверное что-то вроде этого должно быть.
Все что я нашел на эту тему,это GetData.
Но в эту процедуру,надо передавать Pointer,и как потом хранящуюся в Pointer информацию ввести в StringList.Items,не совсем ясно.
Видать эта процедура,служит скорее для обмена данными.
Desdechado (2006-02-11 17:05:00) [5]> BDE и PaRaDox: Вы обвиняетесь в глюках. Приговор привести в исполнение.
Утро вечера мудренее.
Просто вчера ты тормозил, а сегодня ручник сломался :)
John_Doe (2006-02-11 15:02:00) [6]
> получишь то самое Circular DataLinks
И почему же?
Вроде работает.
John_Doe (2006-02-11 14:56:00) [7]Ну реально ребята.
Ну так нельзя.
Я вчера где-то минут 45 просидел,так и не поняв где же ошибка.
Сегодня решил плюнуть на прихоти клиента,и перевести таблицу с PaRaDox'а на MsAccess,а BDE на ADO.
И все теперь работает.
Никаких: "Circular DataLinks are not allowed."
PS.BDE и PaRaDox:
Вы обвиняетесь в глюках.
Приговор привести в исполнение.
ЮЮ (2006-02-11 13:21:00) [8]
> Circular DataLinks are not allowed.
а в tblWare поле Stocks не с помощью Lookup поля отображается? Тогда и DataSet нужен другой, а не tblStocks, ибо получишь то самое Circular DataLinks
Ega23 (2006-02-11 11:38:00) [9]Это ты с настройками перемудрил. Что делал?
John_Doe (2006-02-11 11:22:00) [10]
> Что именно не получается? Он именно для таких вещей и предназначен.
Circular DataLinks are not allowed.
Хотя никаких обращений самого к себе нет.
Ega23 (2006-02-11 11:17:00) [11]
> Пробовал DBLookupCombobox,не получается.
Что именно не получается? Он именно для таких вещей и предназначен.