Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизВзять значение поля с другой таблицы Найти похожие ветки
← →
Bolat (2004-09-16 13:53) [0]Дорогие мастера!!!
есть две таблицы (dbase III) один из них справочник с несколькими сотен видов материалов. Поля: код, наименование материала, стоимость.
В другой таблице тоже несколько полей в том числе и код материала и вычисляемые поля.
Так вот для вычисление одного из полей нужно следующие данные:
потребность * на стоимость материала, код которого введен в этой таблице.
← →
Sergey13 © (2004-09-16 14:18) [1]Либо насторить лукап поле "стоимость", либо (лучше) написать запрос с этим полем
типа
select m.*,s.stoim
from main_table m,sprav_table s
where m.id_mat=s.id
← →
Bolat (2004-09-16 14:59) [2]ya kajetsya nemnogo ne ponyal etogo zaprosa chto est chto tut?
:))
← →
Sergey13 © (2004-09-16 15:05) [3]Там сначала 2 строки по русски от себя (от меня в смысле), а потом 3 стоки на SQL.
8-)
← →
Bolat (2004-09-16 15:23) [4]:))
net serezno pomogite nachinayushemu, protyanite ruku tak skazat"
← →
Sergey13 © (2004-09-16 15:33) [5]Так и ты протяни чего нибудь. 8-)
Например компоненты доступа.
Или расшифруй
>Так вот для вычисление одного из полей
← →
RavenD (2004-09-16 16:18) [6]как было сказано есть 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;
← →
Bolat (2004-09-16 16:35) [7]Ravend i Sergey bolshoe vam spasibo!!
← →
Sergey13 © (2004-09-16 16:52) [8]2[6] RavenD
Тебе бы хелпы писать.
Вот только утверждение
>но.. к сожалению с файл-серверной системой медленно (во всяком случае медленее чем 2 способ в 2 раза)
так скажем спорно, как минимум
← →
RavenD (2004-09-22 09:15) [9]>Sergey13
ну в 2 ни 2 но в в 1.5 это точно, становится заметно особенно на больших объемах, особенно при связках нескольких табл где в каждой больше 150 000 записей, а это уже кое что
← →
Sergey13 © (2004-09-22 09:53) [10]2[9] RavenD (22.09.04 09:15)
1.А зачем нужны запросы возвращающие 150000 записей?
2.Если через лукап TTable связывать 2 таблицы по 150000 записей, то конца связывания можно и не дождаться. Тем более с ф/с системой по сети.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c