|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Создание таблиц и связей
Здравствуйте! Как правильно создать таблицы и установить связи м/у ними для хранения данных. Т. е данные в таблицах должны храниться и по значениям вводимых данных браться нужные значения и этих таблиц.
Физически таблицы с данными имеют такой вид, столбцы alfa, Cy, Сx,Cm,Cn,Cp 0 значения 1 значения .. 8 значения таблицы отличаются друг от друга параметром который вводится в исходные данные , а по исходным данным должны определиться нужная таблица со своими alfa, Cy, Сx,Cm,Cn,Cp |
#2
|
||||
|
||||
Связи разные бывают... Какие именно нужны? И очень расплывчато поставлен вопрос в целом.
|
#3
|
|||
|
|||
Допустим есть таблица (она во вложении). Как осуществить поиск по заданным полям lambda и kappa и осуществить выбор значений из полей Cx, Cy,Cp (они заполнены все значениями)? Т. е выбор значений Cx, Cy,Cp для каждого (т. е для 0,5,10,15,20,25,30,35,40) из поля alfa.
Возможно таблицу нужно разбить на несколько? Главное извлечь нужные данные. Последний раз редактировалось Maks19, 04.07.2020 в 01:29. |
#4
|
||||
|
||||
Метод Locate в помощь для поиска. Может искать сразу по нескольким полям. Также можно использовать св-во Filter, или делать SQL-запрос по заданным условиям.
Код:
MyTable.Locate('lambda; kappa; alfa', VarArrayOf([VarLambda, VarKappa, VarAlfa]), [loCaseInsensitive]); Если нужно искать данные по одним полям, а извлекать данные из других - сначала находите нужную запись Locat-ом, затем, т.к. курсор-указатель в таблице установился на нужную Вам запись, получаете нужные данные: Код:
VarCx := MyTable.FieldByName('Cx').AsFloat; Последний раз редактировалось Guaho, 06.07.2020 в 20:45. |
#5
|
|||
|
|||
Записал такой код, но в массив записывается числа вообще не
из таблицы. Код:
ADOTAble1.First; while AdoTable1.Locate('lambda',lambda,[]) and AdoTable1.Locate('kappa',lkappa,[]) do begin for i:=0 to 8 do begin c[i]:=AdoTAble1.FieldByName('cy').Asstring; Adotable1.Next; end; end; |
#6
|
||||
|
||||
Команда "while" здесь ни к чему абсолютно. Она Вам и делает чудеса. Метод Locate возвращает true, если запись найдена. На это и нужно опираться:
Код:
if AdoTable1.Locate... then ... Последний раз редактировалось Guaho, 06.07.2020 в 23:54. |
#7
|
|||
|
|||
Цитата:
|
#8
|
||||
|
||||
И то, и другое можно использовать. Попадание в диапазон - всего два условия (если >= началу диапазона AND если <= концу диапазона), так что вполне можно использовать фильтрацию, это будет проще. Только не забудьте о приведении запятой к точке в числах.
|