Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Вниз

Вычисляемое поле ADOQuery   Найти похожие ветки 

 
Tornado ©   (2006-10-10 10:37) [0]

Есть у меня ADOQuery который выбирает данные из dbf-файла. Есть два вычисляемых поля. Мне необходимо сделать еще одну выборку из результатов первого запроса. Как осуществить?


 
Sergey13 ©   (2006-10-10 10:40) [1]

Модифицировать запрос - сделать первичный запрос подзапросом или просто наложить дополнитеотные условия.


 
Tornado ©   (2006-10-10 10:57) [2]

Sergey13 ©   (10.10.06 10:40) [1]

Если можно поподробнее. Надо еще один ADOQuery? А как же вычисляемые поля которые присутствуют в ADOQuery1? И обрабатываются в OnCalcFields


 
Sergey13 ©   (2006-10-10 11:02) [3]

> [2] Tornado ©   (10.10.06 10:57)
> Если можно поподробнее.
Ты бы и спрашивал поподробнее. Может тебе просто отфильтровать результат надо?


 
sniknik ©   (2006-10-10 11:03) [4]

> А как же вычисляемые поля которые присутствуют в ADOQuery1
забудь про них, все что есть на клиенте серверу недоступно, можно передать, но формирование и передача с клиента на сервер длинных списков (/всего рекордсета) будет медленнее чем вычисление их на месте. (т.е. см. [1] запрос + дополнительный подзапрос, ну и + вычисления того же что "в OnCalcFields")


 
Tornado ©   (2006-10-10 12:35) [5]

Помогите составить запрос. Исходные данные: есть две таблицы dbf, kadr.dbf и kart.dbf. В первой таблице нужные поля: KADR.FIO, KART.POL, во второй: KART.DROJD, KART.SRCP.

FIO -фамилия, POL - пол, DROJD - дата рождения, SRCP - дата принятия на работу, ну и поле TAB в обоих таблицах это табельный номер.

Связаны по полю TAB, присутствует в обоих таблицах: SELECT KADR.FIO, KART.POL, KART.DROJD, KART.SRCP FROM KADR.DBF, KART.DBF WHERE KADR.TAB=KART.TAB
Это запрос просто на выборку из двух таблиц. Дополнительно надо сделать запрос таким образом чтобы были выбраны: лица мужского пола которым больше 50 лет и стаж работы не менее 5 лет, лица женского пола которым больше 45 лет и стаж работы не менее 5 лет

Убей не соображу как сделать...


 
Sergey13 ©   (2006-10-10 13:03) [6]

> [5] Tornado ©   (10.10.06 12:35)

Первое и самое простое что приходит на ум - динамически формировать уловие отбора (секция where). Можно попробовать сделать это с параметрами. Типа
and ((:flag_sex=1 and sex="M") or (:flag_sex=0))
и потом просто устанавливать значения параметрам. Для серверов БД второй вариант предпочтительнее, для DBF-ки пофиг.


 
Виталий Панасенко   (2006-10-10 16:09) [7]

а

select * from where условие для женщин
union all
select * from where условие для мужчин

не подходит


 
Tornado ©   (2006-10-10 16:25) [8]

Виталий Панасенко   (10.10.06 16:09) [7]

впринципе наверно подходит, вот условие отбора не знаю как написать...


 
Виталий Панасенко   (2006-10-10 17:33) [9]

where (Текущая_Дата - Дата_Рождения)/365,25>50 - для мужчин
where (Текущая_Дата - Дата_Рождения)/365,25>45 - для женщин

аналогично со стажем


 
Tornado ©   (2006-10-11 08:31) [10]

Виталий Панасенко   (10.10.06 17:33) [9]

Спасибо, придется использовать параметры?


 
Виталий Панасенко   (2006-10-11 09:15) [11]


> Tornado ©   (11.10.06 08:31) [10]

Я так и не понял, кто из нас пишет эту программу(или что там еще) ? Ты или я? Тебе решать, параметры или строить динамически текст запроса...


 
Tornado ©   (2006-10-11 10:09) [12]

Виталий Панасенко   (11.10.06 09:15) [11]

:))) Спасибо!


 
Johnmen ©   (2006-10-11 10:27) [13]


> Виталий Панасенко   (10.10.06 17:33) [9]
> (Текущая_Дата - Дата_Рождения)/365,25


Так делать, наверное, не стОит...:)


 
Tornado ©   (2006-10-11 11:31) [14]

Johnmen ©   (11.10.06 10:27) [13]

почему?


 
Johnmen ©   (2006-10-11 11:56) [15]


> Tornado ©   (11.10.06 11:31) [14]
> почему?


Потому, что в году не 365.25 дней :)
Для некоторых дат результат будет неверным...


 
Виталий Панасенко   (2006-10-11 15:55) [16]

Астрономических дней как раз 365,25. Потому и високосный раз в 4 года - 0,25+0,25+0,25+0,25 (почти)


 
Johnmen ©   (2006-10-11 16:53) [17]

А 1900 год был високосным? А 2000-й?
:)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.042 c
3-1160402974
YuRock
2006-10-09 18:09
2006.12.17
Отмена долгого запроса


3-1160222126
Kley
2006-10-07 15:55
2006.12.17
подключится к БД Pervasive.SQL из Delphi 7.0


15-1164366898
WhiteBarin
2006-11-24 14:14
2006.12.17
Как сделать Setup одним файлом в InstalShield 8.0?


15-1164569116
Piter
2006-11-26 22:25
2006.12.17
Забавный глюк миранды


2-1164974851
_Gemini_
2006-12-01 15:07
2006.12.17
Динамическое создание ComboBox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский