Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1096617468
Pentium133
2004-10-01 11:57
2004.10.17
Скролинг


4-1095173143
surkis
2004-09-14 18:45
2004.10.17
ServiceApplication


1-1096953043
Phoenix
2004-10-05 09:10
2004.10.17
Проблема


3-1095868683
SH
2004-09-22 19:58
2004.10.17
Исталляция клиент-серверного приложения с БД Interbase


6-1092061764
Юрий Ж.
2004-08-09 18:29
2004.10.17
idTCPServer/idTCPClient





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский