Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с запросом
 
 автор: verba0   (21.09.2010 в 11:16)   личное сообщение
8 Кб.
 
 

Подскажите пожалуйста как получить данные:

Дата Белок Холестерин Тромбоциты
27.04.2010 0,00 7,31 0,00
09.06.2010 0,00 6,15 0,00
08.07.2010 0,00 5,94 0,00
19.08.2010 0,00 6,01 0,00


IIf([тБиохим]![Белок]<=[тPAR]![БелокMin];[тБиохим]![Белок];IIf([тБиохим]![Белок]>=[тPAR]![БелокMax];[тБиохим]![Белок]; IIf([тPAR]![БелокMax]=Noll;Noll;0)))

  Ответить  
 
 автор: snipe   (21.09.2010 в 11:48)   личное сообщение
 
 

SELECT тБиохим.Дата, тБиохим.Белок, тБиохим.Холестерин, тБиохим.Тромбоциты, DFirst("[БелокMax]","[тPAR]") AS MaxБелок, DFirst("[БелокMin]","[тPAR]") AS MinБелок, IIf([белок]<=[MinБелок],[белок],IIf([белок]>=[MaxБелок],[белок],IIf(IsNull([белок]),Null,0))) AS результат
FROM тБиохим;

  Ответить  
 
 автор: Explorer   (21.09.2010 в 11:54)   личное сообщение
 
 

схема кривая

  Ответить  
 
 автор: verba0   (21.09.2010 в 12:26)   личное сообщение
17 Кб.
 
 

[Белок] работает, подскажите, как чтобы выполнилось условие и для [Холестерин] и [Тромбоциты]
Извините, едущего в танке.

  Ответить  
 
 автор: Explorer   (21.09.2010 в 12:32)   личное сообщение
 
 

что должно быть в результате - скажите русским языком

например

вывести результаты измерений каждого показателя в случае если он выходит за установленные пределы, сгруппировать по дням

  Ответить  
 
 автор: snipe   (21.09.2010 в 12:58)   личное сообщение
 
 

SELECT тБиохим.Дата, тБиохим.Белок, тБиохим.Холестерин, тБиохим.Тромбоциты, IIf([белок]<=DFirst("[БелокMin]","[тPAR]"),[белок],IIf([белок]>=DFirst("[БелокMax]","[тPAR]"),[белок],IIf(IsNull([белок]),Null,0))) AS БелокРезультат,IIf([Холестерин]<=DFirst("[ХолестеринMin]","[тPAR]"),[Холестерин],IIf([Холестерин]>=DFirst("[ХолестеринMax]","[тPAR]"),[Холестерин],IIf(IsNull([Холестерин]),Null,0))) AS ХолестеринРезультат,IIf([Тромбоциты]<=DFirst("[ТромбоцитыMin]","[тPAR]"),[Тромбоциты],IIf([Тромбоциты]>=DFirst("[ТромбоцитыMax]","[тPAR]"),[Тромбоциты],IIf(IsNull([Тромбоциты]),Null,0))) AS ТромбоцитыРезультат
FROM тБиохим;

  Ответить  
 
 автор: verba0   (21.09.2010 в 13:06)   личное сообщение
 
 

Explorer , Вы правы,
в таблице «тPAR» указаны интервал нормы анализов, в «тБиохим» указаны сами анализы.
Нужно так чтобы, выводились данные по датам не входящие в интервал нормы анализов.

Snipe , Большое Вам спасибо, все работает.

  Ответить  
 
 автор: snipe   (21.09.2010 в 13:10)   личное сообщение
 
 

Я бы в запросе отказался бы от функции DFirst и проставил бы значения порогов напрямую
например вот так

SELECT тБиохим.Дата, тБиохим.Белок, тБиохим.Холестерин, тБиохим.Тромбоциты, IIf([белок]<=64,[белок],IIf([белок]>=85,[белок],IIf(IsNull([белок]),Null,0))) AS БелокРезультат, IIf([Холестерин]<=2.3,[Холестерин],IIf([Холестерин]>=5.7,[Холестерин],IIf(IsNull([Холестерин]),Null,0))) AS ХолестеринРезультат, IIf([Тромбоциты]<=180,[Тромбоциты],IIf([Тромбоциты]>=320,[Тромбоциты],IIf(IsNull([Тромбоциты]),Null,0))) AS ТромбоцитыРезультат
FROM тБиохим;

сдается мне что пороги эти не скоро изменят, а так побыстрее работать будет

  Ответить  
 
 автор: verba0   (21.09.2010 в 13:21)   личное сообщение
 
 

OK

  Ответить  
 
 автор: ГлазастыйМышь   (21.09.2010 в 14:56)   личное сообщение
 
 

точно.
на вскидку
1. для добавлении нового параметра анализа (эритроциты, эозинофилы и т.д.) необходимо менять структуру базы и переписывать все запросы
2. в реалии мин/мах границы некоторых анализов зависят от пола и возраста пациента
...

  Ответить  
 
 автор: Explorer   (21.09.2010 в 20:43)   личное сообщение
 
 


2. в реалии мин/мах границы некоторых анализов зависят от пола и возраста пациента



http://www.mamashka.com.ua/content/view/11949/80/

  Ответить  
 
 автор: verba0   (23.09.2010 в 11:22)   личное сообщение
15 Кб.
 
 

С темы запрос плавно перехожу в отчет, да в танке глухо.

Подскажите, как сделать, чтобы в отчете не отражались поля с 0(ноль),
оставшиеся поля сдвинуть, чтобы отчет выглядел без пустых промежутков.
Заранее благодарен.

  Ответить  
 
 автор: Анатолий (Киев)   (23.09.2010 в 18:34)   личное сообщение
13 Кб.
 
 

В прицепе вариант отчета с использованием UNION запроса.
Несколько замечаний:
1. В вашем отчете Textbox "ТромбоцитыРезультат" возвращает #Ошибка. Это потому, что в запросе- источнике есть одноименное поле. Это допускается, если поле запроса связано с Textbox-ом, а у вас Textbox - вычисляемый. Надо либо переименовать его, либо связать с полем в источнике и скрывать 0 с помощью его св-ва "Формат".
2. Если в таблице "тPAR" всегда одна запись, то можно включить ее в запрос "зКровь" и ссылаться на ее поля напрямую, без функций DFirst. На большом массиве данных будет работать заметно быстрее, да и текст запроса более читабельный.

Все примеры - в файле.
Удачи!

  Ответить  
 
 автор: verba0   (23.09.2010 в 19:19)   личное сообщение
 
 

Большое спасибо Вам.

  Ответить  
 
 автор: verba0   (24.09.2010 в 10:53)   личное сообщение
38 Кб.
 
 

Подскажите, как привязать поля параметров (норма) анализов.
ОбщийБелокMin
ОбщийБелокMax
Холестерин ОбщийMin
Холестерин ОбщийMax
ТромбоцитыMin
ТромбоцитыMax

SELECT зКровь.Дата, 1 As НомерПоказателя, "Общий белок :" As Наименование, зКровь.ОбщийБелокРезультат As Результат
FROM зКровь WHERE (((зКровь.ОбщийБелокРезультат)>0));
UNION All
SELECT зКровь.Дата, 2, "Холестерин общий :" As Наименование, зКровь.ХолестеринОбщийРезультат
FROM зКровь WHERE (((зКровь.ХолестеринОбщийРезультат)>0));
UNION All
SELECT зКровь.Дата, 3, "Тромбоциты :", зКровь.ТромбоцитыРезультат
FROM зКровь WHERE (((зКровь.ТромбоцитыРезультат)>0));

Не пойму, почему «Тромбоциты» за 27.04.2010 не попали в отчет.

Заранее благодарен.

  Ответить  
 
 автор: Анатолий (Киев)   (24.09.2010 в 11:12)   личное сообщение
 
 

Потому, что у вас норма от ТромбоцитыMin=180 до ТромбоцитыMax=320. Запрос отбирает все, что не входит в этот диапазон, а 27.04.2010 у вас 190, т.е. нотма.

  Ответить  
 
 автор: verba0   (24.09.2010 в 11:22)   личное сообщение
38 Кб.
 
 

Извините, не правильно выразил мысль.
Подскажите, как привязать в запросе поля параметров (норма) анализов
для отображения их так же в отчете.

[ОбщийБелокMin]
[ОбщийБелокMax]
[Холестерин ОбщийMin]
[Холестерин ОбщийMax]
[ТромбоцитыMin]
[ТромбоцитыMax]

SELECT зКровь.Дата, 1 As НомерПоказателя, "Общий белок :" As Наименование, зКровь.ОбщийБелокРезультат As Результат
FROM зКровь WHERE (((зКровь.ОбщийБелокРезультат)>0));
UNION All
SELECT зКровь.Дата, 2, "Холестерин общий :" As Наименование, зКровь.ХолестеринОбщийРезультат
FROM зКровь WHERE (((зКровь.ХолестеринОбщийРезультат)>0));
UNION All
SELECT зКровь.Дата, 3, "Тромбоциты :", зКровь.ТромбоцитыРезультат
FROM зКровь WHERE (((зКровь.ТромбоцитыРезультат)>0));


Заранее благодарен.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList