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

Форум: MS ACCESS

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

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

 
 

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

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

тема: rst.Open strSQL, cnn,
 
 автор: ser60   (02.04.2011 в 14:41)   личное сообщение
 
 

Ребята! Толкните меня, а топчусь уже сутки с адошными рекордсетами. Не вижу, где туплю…
В форме «Функционал» при нажатии на кнопку «Создать строку ШР ADO» алгоритм доходит до строки «rst.Open strSQL, cnn, adOpenKeyset, adLockOptimistic» подпрограммы AddNewZapisIntoStatStroka и дальше не идет, а возвращается назад.
http://zalil.ru/30784712
Что не так??

  Ответить  
 
 автор: kot_k_k   (02.04.2011 в 23:07)   личное сообщение
 
 

а можно человеческий формат базы ХР 2003 даже 97-й

  Ответить  
 
 автор: ser60   (03.04.2011 в 05:04)   личное сообщение
 
 

http://zalil.ru/30787951

  Ответить  
 
 автор: shanemac51   (03.04.2011 в 05:25)   личное сообщение
 
 


IIf(сШН.[ВидМП]=1,
...
IIf(сШН.[ВидМП]=2,
...
IIf(сШН.[ВидМП]=3
....
 сШН.ВидМП, сПравилШН.ВидМП

КАКОЙ ВАМ НУЖЕН ВИД В IF

  Ответить  
 
 автор: ser60   (03.04.2011 в 15:40)   личное сообщение
 
 

когда я наворотил в построителе выражений первые фразы типа

КоличДолжн: Round(IIf([ВидМП]=1;IIf([Алгоритм]=1;[ПланОбъемДеят]/[УдНорм]*[ДолжнУдНорм];IIf([Алгоритм]=2;IIf([ПланОбъемДеят]/[УдНорм]<2;0,5;1);IIf([Алгоритм]=3;[ДолжнУдНорм];IIf([Алгоритм]=4;IIf([ПланОбъемДеят]/[УдНорм]*[ДолжнУдНорм]<1;1;[ПланОбъемДеят]/[УдНорм]*[ДолжнУдНорм])))));IIf([ВидМП]=2;IIf([Алгоритм]=1;[ПланОбъемДеят]/[УдНорм]*[ДолжнУдНорм];IIf([Алгоритм]=3;[УдНорм]*[ДолжнУдНорм];IIf([Алгоритм]=5;[ПланОбъемДеят]/[УдНорм]*[ДолжнУдНорм]/8;IIf([Алгоритм]=6;[ПланОбъемДеят]/[УдНорм]*[ДолжнУдНорм]/2))));IIf([ВидМП]=3;0)))*4;0)/4

то понял, что далее будет еще хуже и проще перейти на VBA. К тому же это к этому толкали и другие условия. Поэтому хочу сразу на VBA написать. а почему VBA не проходит с адошными рекордсетами не понимаю, т.к. только-только их начал осваивать...

  Ответить  
 
 автор: Гоблин   (03.04.2011 в 16:53)   личное сообщение
 
 

Наворочено нехило. Первое, что бросается в глаза - разорванная база с неопределенными связями. Формула непонятная. Округлить до неизвестного знака что-то, что вычисляется по формуле если ВидМП=1,то Если Алгоритм=1, то формула, в противном случае, если алгоритм=2, то если (одно/другое)<2, равно0,5,в остальном равно1) В противном если....
Дальше мысль теряется что от чего пляшет. Похоже отсутствуют закрывающие скобки. Конца не видно.
Попробуй через select case. с выводом некоторых условий в отдельное поле. Т.е. разбей формулу на несколько частей.

  Ответить  
 
 автор: ser60   (03.04.2011 в 22:06)   личное сообщение
 
 


Формула непонятная. Округлить до неизвестного знака что-то


У медиков ставки (должности) округляются до ближайшего, кратного о,25
Поэтому такая странная формула

Разорванная база: пытаюсь сделать отдельные куски (модули) как поисковые алгоритмы пока

  Ответить  
 
 автор: ser60   (03.04.2011 в 22:10)   личное сообщение
 
 

сейчас в VBA сделал через select case. Нормально работает и ясен алгоритм. Он пока неполный, но сложнее чем показано в построителе выражений, хотя еще не полный (Правила построения штатного расписания сложные)

Вот чего-то не понимаю в адошном рекордсете

  Ответить  
 
 автор: ser60   (04.04.2011 в 05:55)   личное сообщение
52 Кб.
 
 

сорри, т.к. прилинкованные таблы были. вот схемка

  Ответить  
 
 автор: shanemac51   (03.04.2011 в 19:11)   личное сообщение
 
 

-для чего данный запрос --видимо отчет
-деление , а вы гарантируете что /[УдНорм]*[ДолжнУдНорм] не ноль, не говоря в нулях

запросы много могут, но не надо делать из них слона
запрос это
-выборка из нескольких таблиц
-если нет умножений\делений по строке -суммировка
-расчет суммы=количество*цена с округлением при наличии суммировки

остальное в отчетах с проверками при делении

  Ответить  
 
 автор: ser60   (03.04.2011 в 22:15)   личное сообщение
 
 


деление , а вы гарантируете что /[УдНорм]*[ДолжнУдНорм] не ноль, не говоря в нулях



Там специально перед запуском вручную проверяю нули или пустые данные в самой таблице
Вопрос был по рекордсету

  Ответить  
 
 автор: Гоблин   (03.04.2011 в 23:04)   личное сообщение
 
 

Я не спец в рекордсетах, тем более в DAO, ADO и прочем. Посмотри пример осмора http://hiprog.com/forum/read.php?id_forum=1&id_theme=8518&page=1 по дереву. Как понимаю, надо создать запрос с условиями и таблицами, после чего вставить его в рекордсет и собирать (складывать) в определенное место результаты.
С другой стороны, а зачем вам этот рекордсет, когда обычные запросы сделают свое дело.

  Ответить  
 
 автор: ser60   (03.04.2011 в 23:14)   личное сообщение
 
 


С другой стороны, а зачем вам этот рекордсет, когда обычные запросы сделают свое дело


Любая даже простая больничка имеет врачей разных специальностей, медсестер, санитарок и прочих разных. У каждой медиц специальности свои правила формирования штатного расписания. СЛожные очень. КОличество одних специальностей (лаборантов, рентгенологов, узистов, ЭКГ) зависит от количество других. А этих других зависит от количества коек, населения и проч. Хотелось бы забить количество коек разных специальностей и на выходе посмотреть штатное расписание не ттолько отделений с койками, но и по всем другим.

Поэтому VBA, поэтому и рекордсеты. А Адошные - планирую куда нить потом вывесить, чтобы люди сверялись. А за адресок спс, обязательно посмотрю. А... TreeView - это вообще для меня высший пилотаж, еще не освоил, как то обходился, хотя понимаю, что удобно

  Ответить  
 
 автор: Аноним   (03.04.2011 в 23:32)   личное сообщение
 
 

>>>Поэтому VBA, поэтому и рекордсеты

задачи касающиеся здравоохранения не поддаются формализации

>.<

  Ответить  
 
 автор: ser60   (04.04.2011 в 05:57)   личное сообщение
 
 

попытка не пытка
ну а потом, кто-то должон пытаться

  Ответить  
 
 автор: ДрЮня   (04.04.2011 в 00:43)   личное сообщение
 
 

ИМХО
начинать подобную работу нужно с проектирования структуры БД: таблицы, связи и проч.,
иначе потом можно иметь большой геморрой с простыми казалось бы запросами.
То, что Вам приходится сейчас ломать голову говорит о том, что структура Вашей БД не корректна.
Возможно, еще не поздно ...

  Ответить  
 
 автор: ser60   (04.04.2011 в 06:02)   личное сообщение
 
 

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

  Ответить  
 
 автор: Гоблин   (04.04.2011 в 18:12)   личное сообщение
 
 

Медиалог вам в помощь.

Не надо привязывать количество коек к количеству штатов. Штаты меняются каждый год, загруженность отделений будет чисто сезонная, нормативы меняют как перчатки.

Попробуй просто составить схему из 2-3 таблиц:
Филиал(если есть) - Отделение - штаты.
Обрасти ее телефонами, окладами, датами. После этого усложняй дальше.

  Ответить  
 
 автор: ser60   (04.04.2011 в 19:08)   личное сообщение
 
 

количество штатов - это функция количества коек, а койки меняются редко. Некоторые нормативы не меняются десятилетиями. Проблема в другом, Гоблин:
мне нужна помощь, почему со строки:
rst.Open strSQL, cnn, adOpenKeyset, adLockOptimistic
меня отбрасывает назад, а не идет алгоритм дальше. Что я не так написал?

  Ответить  
 
 автор: Аноним   (04.04.2011 в 18:17)   личное сообщение
 
 

>> что из себя здравоохранение представляет

по меду, кстати, есть гигантская куча нормативной первички - налопачено примерно так, как традиционное законодательство Великобритании

есть и в доступе, сейчас, правда, сайт уже не вспомню :(

  Ответить  
 
 автор: ser60   (05.04.2011 в 19:45)   личное сообщение
 
 

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

  Ответить  
 
 автор: Гоблин   (05.04.2011 в 21:43)   личное сообщение
 
 

не мучайся. Не совсем понятна цель такого наворота. Впечатление - будто бы планирование штатного расписания делается. Ввели количество коек, и по какому-то немыслимому алгоритму разбрасывается количество штатов по отделениям.
Может разбить такое на несколько частей, запросами на создание таблиц, и вычислять в них нечто, теми же рекордсетами, и занесением результата в таблицу, затем создать еще таблицу с другими вычислениями, и снова... Потом уже групповым запросом из получившегося в таблице...
Это мысли вслух и моя алхимия с опытами на аксом.

  Ответить  
 
 автор: ser60   (05.04.2011 в 22:26)   личное сообщение
 
 

Чего то накропал. Оказывается я использовал параметрический запрос на выборку, а обычный адошный рекордсет его не понимает что-ли. Так вот rst.command.execute отрабатывает параметрические запросы, но совместить с редактированием рекордсета оказалось в один этап невозможно. Поэтому видимо параметрическим запросом сначала создам таблицу, а потом на ее основе обычный адошный рекордсет, позволяющий редактировать количество должностей по функции. Т.е. задача решается не в лоб, а частями.
А то что планирование штатного расписания делается как функция - в этом как раз и фишка.
Все равно всем спасибо. Иногда мысли вслух к чему то приводят.

  Ответить  
 
 автор: Гоблин   (06.04.2011 в 20:24)   личное сообщение
 
 

Ну так надо взять нормы и типа: Если от ... до ... то.... и так далее. Инфу брать из таблиц отделение - количество коек. И рекордсет вроде не нужен.
Во всех случаях удачи.

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