![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Взять значение поля с другой таблицы [D6, dBase, FoxPro]
Bolat © (2004-09-16 13:53:00)Дорогие мастера!!!
есть две таблицы (dbase III) один из них справочник с несколькими сотен видов материалов. Поля: код, наименование материала, стоимость.
В другой таблице тоже несколько полей в том числе и код материала и вычисляемые поля.
Так вот для вычисление одного из полей нужно следующие данные:
потребность * на стоимость материала, код которого введен в этой таблице.
Sergey13 (2004-09-22 09:53:00) [1]2[9] RavenD (22.09.04 09:15)
1.А зачем нужны запросы возвращающие 150000 записей?
2.Если через лукап TTable связывать 2 таблицы по 150000 записей, то конца связывания можно и не дождаться. Тем более с ф/с системой по сети.
RavenD (2004-09-22 09:15:00) [2]>Sergey13
ну в 2 ни 2 но в в 1.5 это точно, становится заметно особенно на больших объемах, особенно при связках нескольких табл где в каждой больше 150 000 записей, а это уже кое что
Sergey13 (2004-09-16 16:52:00) [3]2[6] RavenD
Тебе бы хелпы писать.
Вот только утверждение
>но.. к сожалению с файл-серверной системой медленно (во всяком случае медленее чем 2 способ в 2 раза)
так скажем спорно, как минимум
Bolat (2004-09-16 16:35:00) [4]Ravend i Sergey bolshoe vam spasibo!!
RavenD (2004-09-16 16:18:00) [5]как было сказано есть 2 варианта решения данной проблемы
I) через TQuery при помоще запроса, очень гибко, удобно но.. к сожалению с файл-серверной системой медленно (во всяком случае медленее чем 2 способ в 2 раза)
a) select * from Рабочая, Справочник
where Справочник.Code = Рабочая.Code (но есть ньюансы объединения таблиц, читай help по SQL)
b) в TQuery создаешь поле Calculate и читай ниже.
II) через TTable (значительно быстрее, но менее гибко любые изменения в ТЗ потребую коренной переделки связки).
Для начинающего по шагам,
a) вешаешь 2 TTable (Справочник, Рабочая) и настраиваешь на свои таблицы
b) в Рабочей создаешь новое поле (контекстное меню -> New), тип поля Lookup, там 4 параметра (имя таблицы которую прикручиваем, 2 поля по которым вяжем, и поле которое вытаскиваем) наверху слева укажешь имя и тип, в результате ты имеешь в своей Рабочей табле значения из Справочника
c) если тебе ещё требуются какието расчеты с этими полями, создаешь в Рабочей ещё нужное количество полей, только теперь ставишь Calculate, имя и тип
d) на TTable выбираешь событие OnCalculate (не помню транскрипцию), и там уже пишишь свою арифметику типа:
fieldCalc.AsFloat := fieldLookup.AsFloat * 10;
Sergey13 (2004-09-16 15:33:00) [6]Так и ты протяни чего нибудь. 8-)
Например компоненты доступа.
Или расшифруй
>Так вот для вычисление одного из полей
Bolat (2004-09-16 15:23:00) [7]:))
net serezno pomogite nachinayushemu, protyanite ruku tak skazat'
Sergey13 (2004-09-16 15:05:00) [8]Там сначала 2 строки по русски от себя (от меня в смысле), а потом 3 стоки на SQL.
8-)
Bolat (2004-09-16 14:59:00) [9]ya kajetsya nemnogo ne ponyal etogo zaprosa chto est chto tut?
:))
Sergey13 (2004-09-16 14:18:00) [10]Либо насторить лукап поле "стоимость", либо (лучше) написать запрос с этим полем
типа
select m.*,s.stoim
from main_table m,sprav_table s
where m.id_mat=s.id