powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
25 сообщений из 121, страница 1 из 5
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276211
dmr55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите осуществить Выборку из БД мужчин от 60 и старше, женщин от 55 и старше

Часть кода, где DATW - дата выписки, DATP-дата поступления, DATR - дата рождения


GOTO TOP
SELECT 1
USE kartwib
SET FILTER TO (DATW>=MINDAT.AND.DATW<=MAXDAT).AND.SRDOOP>0)
GOTO TOP
SELECT 2
USE operwib INDEXES inoperp
@ 21, 10 SAY 'ЋЎаaЎ®вa*® §aЇЁбҐ© - '+STR(OBRZAP,6)
SELECT 1
KODOPR = 0
UM = 0
ITOGO = 0
DO WHILE .NOT.EOF()
OBRZAP = OBRZAP+1
@ 21, 31 SAY STR(OBRZAP,6)
WOZR = INT((DATP-DATR)/365)
DSRAB = TRIM(DSSTAT)
IF EFFEKT=6
UM = UM+1
ENDIF
SELECT 2
SEEK (A->INDEF)
IF .NOT.FOUND()
SELECT 1
SKIP
LOOP
ENDIF
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276214
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выбери сначала select`ом нужное в курсор, а затем курсор выводи.
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276218
dmr55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно чуть по подробнее
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276224
Дед Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расчет возраста делается от даты рождения:
Vosrast = INT( ( DATE() - DATR )/365.25 ) )
А далее делай выборку относительно этого возраста.
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276227
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
select * from kartwib where <условие> into cursor tpens
sele tpens
scan
   ... вывод tpens
endscan
sele tpens
use


в <условие> надо написать "мужчин от 60 и старше, женщин от 55 и старше"
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276228
dmr55Помогите осуществить Выборку из БДИз какой БД? Из какой таблицы? Где структура этой таблицы? мужчин от 60 и старше, женщин от 55 и старше

Часть кодаКакого кода? Что он делает и зачем он тут приведен?, где DATW - дата выписки, DATP-дата поступления, DATR - дата рождения
А где что-то, определяющее пол? Или это всё надо угадать? Или прямо из вашей головы взять?
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276253
dmr55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
таблица kartwib

мужчин от 60 и старше, женщин от 55 и старше

Данный код осуществляет выборку всех людей которые внесены в базу, из этих пациентов нужно вывести мужчин от 60 и старше, женщин от 55 и старше

в таблице kartwib имеется поле Pol
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276270
dmr55таблица kartwibОчень информативно, учитывая отсутствие описания структуры.
мужчин от 60 и старше, женщин от 55 и старшеНа какой момент времени сей возраст считать? На дату выписки? На дату отчета? На текущую дату?
Данный код осуществляет выборку всех людей которые внесены в базу, из этих пациентов нужно вывести мужчин от 60 и старше, женщин от 55 и старшеДанный код никакой выборки не делает, он просто перебирает все записи, подпадающие под условие команды Set filter. Так что его назначение, особенно цикл, остаётся невыясненным.
в таблице kartwib имеется поле PolКакого типа? Строка? Логическое? Число? Опять надо гадать? Структуру таблицы же нельзя ни в коем случае давать, да? Небось жутко секретная?
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276316
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПомогите осуществить Выборку из БД мужчин от 60 и старше, женщин от 55 и старше
Часть кода, где DATW - дата выписки, DATP-дата поступления, DATR - дата рождения

Пол в каком поле хранится?
Как дата выписки и дата поступления влияет на результат запроса?
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276321
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторполе Pol
увидел.

А как в нем М от Ж отличается?
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276323
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ввбрать куда?
В курсор, в файл .. . .
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276340
dmr55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мужской - м
женский - ж

В программе есть меню - выбыр формы - в этой форме ставится допустим дата с 01.01.2016-02.01.2016 - выходят все данные людей, и в этих данных должны отбираться муж с 60лет и старше, жен с 55 и старше
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276374
dmr55мужской - м
женский - ж

В программе есть меню - выбыр формы - в этой форме ставится допустим дата с 01.01.2016-02.01.2016 - выходят все данные людей, и в этих данных должны отбираться муж с 60лет и старше, жен с 55 и старшеА можно не повторять мантры, понятные еще из первого сообщения, и отвечать только на поставленные вопросы? Кого надо выбрать мы уже знаем, вы пока не дали информации по другим условиям отбора. В частности, второй раз спрашиваю: на какой момент времени считается возраст? Или до вас не доходит, что возраст величина непостоянная и может меняться в зависимости от даты, на которую он считается?
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276394
dmr55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программа рабтает так, выбираем дату любую, например 01.02.2016 - 10.02.2016 и должны выходить нужные м и ж
Опираться на системную дату и время самого компа
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276399
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
ldReport = date() && дата на которую считаем
ld60 = ldReport - 60 * 365.25
ld55 = ldReport - 55 * 365.25
select * from kartwib where (DATR <= ld60 and Pol = 'М') or (DATR <= ld55 and Pol = 'Ж')  into cursor tpens
brow


Это на сегодня. Если надо конкретную дату - замени date() на переменную с этой датой.
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276421
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmr55в этой форме ставится допустим дата с 01.01.2016-02.01.2016 - выходят все данные людей, и в этих данных должны отбираться муж с 60лет и старше, жен с 55 и старше
Добавь это условие туда же в селект, как понимаю это то что у тебя в SET FILTER TO написано
Код: sql
1.
2.
...
select * from kartwib where (DATW>=MINDAT.AND.DATW<=MAXDAT.AND.SRDOOP>0) and ((DATR <= ld60 and Pol = 'М') or (DATR <= ld55 and Pol = 'Ж'))  into cursor tpens
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276434
dmr55Опираться на системную дату и время самого компа
Как вариант для размышлений:
[SRC sql][/* date() && дата на которую считаем
select * from kartwib where Date() < Ctod(Str(Day(DATR))+'.'+Str(Month(DATR))+'.'+Str(Year(DATR)+Iif(Pol = 'м', 60, 55))) into cursor tpens
brow
SRC]
Не проверял, писал на коленке.
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276437
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если твой код править, то можно просто это
dmr55 SET FILTER TO (DATW>=MINDAT.AND.DATW<=MAXDAT).AND.SRDOOP>0)

заменить на
Код: sql
1.
SET FILTER TO (DATW>=MINDAT.AND.DATW<=MAXDAT.AND.SRDOOP>0) and ((DATR <= date() - 60 * 365.25 and Pol = 'М') or (DATR <= date() - 55 * 365.25 and Pol = 'Ж'))


PS твой код не должен работать, т.к. скобки одной не хватает.
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276455
Dima TPS твой код не должен работать, т.к. скобки одной не хватает.Ну так может последнюю строку моего сообщения таки прочитать? :)

Мой метод работает с точными датами, умножение на 365.25 дает приблизительный результат.
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276482
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильный проходящий.Мой метод работает с точными датами, умножение на 365.25 дает приблизительный результат.
И что твой метод выдаст если запустить его 29.02 ?
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276488
Dima Tправильный проходящий.Мой метод работает с точными датами, умножение на 365.25 дает приблизительный результат.
И что твой метод выдаст если запустить его 29.02 ?А это уже вопрос к постановщикам задачи - как определять возраст тех, кто родился 29 февраля? При получении ответа внести соответствующие коррективы в код.
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276583
dmr55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите тогда эти два запроса можно sql сделать в один и включить в код, потому что у меня если и что-то выходит то выходит как отдельная форма типа запроса

SELECT * FROM kartwib WHERE Datr>=CTOD('01.01.1961') AND Pol=('ж')
SELECT * FROM kartwib WHERE Datr>=CTOD('01.01.1956') AND Pol=('м')
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276631
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmr55Скажите тогда эти два запроса можно sql сделать в один и включить в код, потому что у меня если и что-то выходит то выходит как отдельная форма типа запроса

SELECT * FROM kartwib WHERE Datr>=CTOD('01.01.1961') AND Pol=('ж')
SELECT * FROM kartwib WHERE Datr>=CTOD('01.01.1956') AND Pol=('м')
Код: sql
1.
SELECT * FROM kartwib WHERE (Datr>=CTOD('01.01.1961') AND Pol=('ж')) or (Datr>=CTOD('01.01.1956') AND Pol=('м'))
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276663
dmr55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так помоему будет верно

SELECT * FROM kartwib WHERE (Datr<=CTOD('01.01.1961') AND Pol=('ж')) or (Datr<=CTOD('01.01.1956') AND Pol=('м'))

Скажите сточку в командной строке работает, а можно ли ее в код вставить ни чего там не удаляя
...
Рейтинг: 0 / 0
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
    #39276666
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmr55вот так помоему будет верно

SELECT * FROM kartwib WHERE (Datr<=CTOD('01.01.1961') AND Pol=('ж')) or (Datr<=CTOD('01.01.1956') AND Pol=('м'))
Это тоже самое с небольшой оптимизацией, типа не зависимо от пола все пенсионеры в 60+

dmr55Скажите сточку в командной строке работает, а можно ли ее в код вставить ни чего там не удаляя
уже писал, твой исходный код изначально что-то фильтрует
Код: sql
1.
SET FILTER TO (DATW>=MINDAT.AND.DATW<=MAXDAT).AND.SRDOOP>0)


просто добавь туда фильтр по пенсионерам
Код: sql
1.
SET FILTER TO (DATW>=MINDAT.AND.DATW<=MAXDAT).AND.SRDOOP>0) and (Datr<=CTOD('01.01.1961') AND Pol=('ж')) or (Datr<=CTOD('01.01.1956') AND Pol=('м'))
...
Рейтинг: 0 / 0
25 сообщений из 121, страница 1 из 5
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]