Поиск

Андрей8989
Дата: 13.09.2012 18:17:21
как сделать так чтобы при открытии формы, если на форме check.value=0 в грид1 выводились записи из таблицы pacient отфильтрованные следующим образом: выбираются те записи поля ser и polis которых совпадают с полями ser и polis таблицы obsled И NOM_REG КОТОРЫХ СОВПАДАЕТ С СООТВЕТСТВУЮЩЕМ ПОЛЕМ В OBSLED. а в грид2 выводятся записи из таблицы obsled которые относятся к пациенту на котором стоит курсор в верхнем грид1?
Написал такой код чтобы выводились в верхний грид1 но не знаю как продолжить. Еще при при открытии формы выбираются в курсор те записи которые входят в определенный интервал времени и уже эти записи фильтруются

автор
SELECT * DISTINCT FROM obsled o WHERE !EMPTY(o.polis) AND BETWEEN(o.dat_obs,startDate,endDate) AND INLIST(o.pri_zak,0,2) AND o.nom_reg=vnom_reg INTO CURSOR tmpObsled
SELECT * FROM pacient INTO CURSOR curs1
SELECT curs1
IF thisform.check1.value=0
SET FILTER TO ser=tmpobsled.ser AND polis=tmpobsled.polis AND nom_reg=personal.nom_reg
ELSE
SET FILTER TO ser=tmpobsled.ser AND polis=tmpobsled.polis AND nom_reg=personal.nom_reg AND EMPTY(curs1.smocod)
ENDIF
AndreTM
Дата: 13.09.2012 19:06:03
Андрей8989, вам еще не надоело переливать один и тот же вопрос?..
Используйте либо курсоры, либо фильтрацию - зачем вам одновременно-то всё использовать?
И ещё - стало понятно, что у вас поля ser, polis, nom_reg есть и в таблице pacient, и в таблице obsled. Зачем? Если описывать предметную область, то, например, ser (как я понимаю, серия) и polis (как я понимаю, номер) относятся только к пациенту, зачем же они дублируются в obsled? Врачи принимают пациента по данным полиса? Тогда зачем существует nom_reg (как я понимаю, регистрационный идентификатор пациента внутри поликлиники)?
Андрей8989
Дата: 13.09.2012 19:29:51
по талонам принимают а nom_reg есть и у пациента и в таблице где хранятся данные врачах personal врач вводит пароль и нужно отобразить тех пациентов которых он обслуживал в определенный интервал времени. т.е. еси nom_reg совпадают получается этот врач обслужил этого пациента, а поля Ser и polis в обеих таблицах чтобы при выборе записи в первом грид во втором выводить его талоны кажется как я понял. Только устроился на работу и мне дали такую прогу оптимизировать она медленно работает.
AndreTM
Дата: 13.09.2012 19:34:50
Ага... То есть имеющуюся структуру таблиц и связи - вы не трогаете. Но можете наращивать структуру - например, ввести дополнительные поля, индексы... и можете модифицировать исходный код проекта с полным доступом.
?
Андрей8989
Дата: 13.09.2012 19:59:19
AndreTM, да
Станислав С...кий
Дата: 15.09.2012 00:15:33
Андрей8989
Только устроился на работу и мне дали такую прогу оптимизировать она медленно работает.

Оптимизация - процесс непростой даже для профессионала. По сути - это реинжиниринг ПО. Поэтому, этапы процесса должны быть следующими:
- сначала надо понять инструмент "как есть",
- потом собрать с пользователей их видение процесса (или поднять существующее ТехЗадание),
- определить для себя "как должно быть",
- найти (в соответствии со своим видением вопроса) в инструменте "узкие места"
- оптимизировать найденные проблемы.

Для начала было бы неплохо составить логическую схему базы данных, нарисовать взаимосвязи между таблицами; посмотреть, есть ли необходимые индексы, используются ли они и т.д.

Как я понял, у Вас нет опыта проектирования БД. Для начала, рекомендую почитать книгу Попова А.А. по FoxPro 2.0 или 2.5/2.6. Там вы не найдете работу с гридами, зато на простых примерах будет разжевано то, что здешние гуру пытаются Вам донести: использование Set Relation для фильтрации данных в связанных таблицах. Да, там используется Browse и достаточно примитивный интерфейс. Но принцип-то остается...

Как говорят мудрые люди: незнание некоторых фактов нам компенсируется знанием основных принципов... И логикой...