Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

Взять значение поля с другой таблицы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
3-1095335493
analyser
2004-09-16 15:51
2004.10.17
Наследуемые формы и ADOCommand на форме-предке


14-1096254807
Soft
2004-09-27 07:13
2004.10.17
Лохотрон форева: Антенный Усилитель


14-1096229816
Gero
2004-09-27 00:16
2004.10.17
Музыка апокалипсиса


4-1094634349
TeNY
2004-09-08 13:05
2004.10.17
Как получить список анимации у Анимированного персонажа Microsoft


1-1096898854
redlord
2004-10-04 18:07
2004.10.17
запись в начало файла