|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
помогите пожалуйста с SELECTами с последующим использованием результатов в СА (у самой даже близко ничего не получается) структура таблицы-источника: код_врача дата_дежурства4 02/01/134 02/05/134 02/15/134 02/22/137 02/03/137 02/05/137 02/11/139 02/20/1311 02/05/1311 02/28/13 нужно 1. код_врача02/01/1302/03/1302/05/1302/11/1302/15/1302/20/1302/22/1302/28/134 .T..T..T..T.7.T..T..T.9.T.11.T..T. нужно 2. дата_деж4791102/01/13.T.02/03/13.T.02/05/13.T..T..T.02/11/13.T.02/15/13.T.02/20/13.T.02/22/13.T.02/28/13.T. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 16:43 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
Кросс-таблицы (CrossTable) через CursorAdapter не делаются. Точнее, в отдельном конкретном случае - можно, но общего решения именно для Select-SQL не существует. В принципе, подобные запросы можно сконструировать через макроподстановку. Должен сформироваться запрос вида Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Ну, или обратный запрос вида Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Понятно, что ограничивающим фактором выступает количество полей. Если в качестве дат взять, например, один календарный месяц или ровно 30 дней от некой фиксированной даты, то можно сконструировать запрос и в общем случае. Однако лично я в подобных случаях формирую итоговую таблицу "вручную". Без запросов. Простым сканированием исходной таблицы и копированием данных в итоговый курсор. Перенос обратно (из итогового курсора в исходные таблицы) - несколько более трудоемок, но, в принципе, ничего сложного. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 17:51 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
Ой, извиняюсь, "по современному" то, что Вам нужно теперь называют не CrossTable, а PivotTable. В остальном, все правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 17:57 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
PIVOT (сводная) вам, по идее, излишней будет. Как я и говорил, можно, например, воспользоваться имеющимся Cross-Table ( vfpxtab.prg ) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Именование столбцов можно затем заменить, а можно и просто использовать собственную модифицированную копию vfpxtab ... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 19:39 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
Может на основании исходной таблицы создать представления (CreateView) и уже с них СА? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 20:02 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
Так вы хотите использовать КА для того, чтобы править данные в таком "кроссовом" виде? А смысл в КА? Может, проще иметь представление такое, как вам надо (оба этих вышеприведенных кросса), а на изменение ячейки "кросса" повесить только "декодирование" исходных ключей (и накопление изменений). И затем уже разом, по подтверждению окончания изменений - обновить источник. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 20:16 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
AndreTM, гдето именно так и хочу, а может и нет. немного отойду-отдышусь (не подумайте плхого) Пока нахожусь в лёгком! недоумении - после использования вашего кода каким-то Волшебным образом вижу нужные результаты! Как это сработало!? Что и откуда!? Волшебники! А задумка такая: в гриде с конечным результатом встаем на поле с непустой датой_дежурства врача, а рядом на форме отобразятся все запланированные мероприятия на этот день по данному врачу (операции,осмотры и пр.) так вот полученные Волшебным образом таблицы меняться не будут (их на месяц вперед составляют), они лиш служат связкой между таблицей с мероприятиями, которые меняются часто. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 20:53 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
А, ну тогда да: - в качестве источника грида используете сформированный курсор - при выборе ячейки грида вычисляете "код_врача" и "дата_дежурства", и передаете их для формирования выборки мероприятий Кстати, и планировать дежурства (тот график, что составляете заранее) ведь можно тоже в такой же форме кросс-таблицы - только щёлкай по ячейкам... По идее, у вас и должна быть только одна форма, работающая в нескольких режимах: "планирование дежурств", "планирование мероприятий", "только просмотр"... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 21:27 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
Именно так. Но чтобы для себя и потомков было понятней всё размещу на отдельных владках. Вроде в голове всё выстраивается в Ёлочку! Распечатала vfpxtab - изучаю для дальнейшей модернизации и переселения в свой проект. Огромаднейшее СПАСИБО! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 22:48 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
VFPXTAB изучать и переделывать - не обязательно. Тут просто надо знать кое-что (если меняем дефолтные значения): - в качестве источника используются данные из текущей рабочей области - на выходе формируется курсор с указанным именем (param1), этот курсор становится текущим - param3 позволяет не закрывать таблицу-источник после формирования результата - param5,6,7 указывают соответственно на порядковые номера полей источника с данными для строк, столбцов и данных внутри таблицы - param10 позволяет убрать из вывода значения .NULL. - при формировании имен полей в результирующем курсоре перед "именем" добавляется символ, означающий тип (C,D,T,N...) и знак подчеркивания Таким образом, кросс-таблицу можно сформировать и без предварительной выборки нужных полей в отдельный курсор, НО лучше всё-таки это проделать. Кроме того, имеет смысл (если вы будете использовать один курсор-источник для нескольких отображений) привести значения полей-ключей к одному формату, например, к символьному. Возьмём ваш вариант: Код: sql 1. 2. 3.
Код: sql 1.
Мы не только получим верную сортировку полей, но и сможем однозначно получать дату по имени поля (впрочем, XTAB и сам такое преобразование выполняет, поскольку точек и слэшей в имени не поставишь). Код: sql 1. 2.
То же самое, но только для кода врача. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 00:45 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
AndreTM- при формировании имен полей в результирующем курсоре перед "именем" добавляется символ, означающий тип (C,D,T,N...) и знак подчеркиванияТут я немного загнул, MAPNAME() немного по другому все формирует... Но общий принцип примерно таков и есть. Для наших целей удобно приводить значения ключей к такому виду, чтобы XTAB их однозначно итерпретировал (да и мы тоже). Например, к символьному виду из одних цифр. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 01:00 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
to AndreTM +1000000500! Красава! Респект за подсказку!!! Пойду у себя теперь кое чего переделаю... Класс! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 09:44 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
не мудрствуя лукаво изобразила форму с PageFrame из 3-х страниц. При открытии формы попадаем в грид на Рage1 с расписанием дежурств текущего месяца по всем врачам. Ячейки назначенных дежурств отличаются насыщенностью цвета от кол-ва уже назначенных мероприятий (навороты) При переходе на Р2 попадаем в грид по-врачу (который остался активным на Р1) с его днями дежурств. попадая на эти ячейки видим в сторонке назначенные мероприятия на этот день (с возможностью их редактирования, добавления, удаления). Тут же на Р2 можно выбрать др. врача и поменять диапазон. Р3 - грид для составления плана дежурств ВСЁ -15 часов работы, до косоглазия и движок от "Andre" работает! Малость отдохну, соберусь с мыслями займусь дизайном и может еще что надумаю с апгрейдом или вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 14:53 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
Не ясно только одно. Если я возьму в проект vfpxtab.prg (ведь на клиентских машинах Фох может отсутствовать) приложению как обращаться к нему, также - DO (_GENXTAB) WITH ......??? извините, пока Нет возможности проверить данный момент по причине присутствия Лиса. Везде! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 16:58 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
vfpxtab.prg (как и любой другой PRG) это просто исходник, который надо включить в свой проект. Никаких фоксов ставить клиентам не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 17:00 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
возможно он какие-то библиотеки (VCX/VCT) использует. Их тоже надо включить в проект. Скорее всего это все произойдет автоматом, т.к. при сборке EXE в проект добавляются все программные модули используемые в коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 17:03 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
Людмila, DO (_GENXTAB) был использован as is просто потому, что при установленном Фоксе системная переменная _GENXTAB инициализируется им самим. Вам никто не запрещает в любой момент записать своё значение в эту переменную. Либо, как и было сказано, включить исходник в проект и вызывать как обычную процедуру. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 18:20 |
|
Select >> CAdapter
|
|||
---|---|---|---|
#18+
Включив xtab в проект и скомпелировав в .ехе с последующим его запуском, дествительно при обращении _GENXTAB ругается, пишет, что файл не найден! но при обращении к нему по имени (vfpxtab.prg) всё ОК! по RDP пробралась не сервер, с него по radminy на машину клиента (Фокса.нэт), установила прогу всё Гут! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 18:54 |
|
|
start [/forum/topic.php?desktop=1&fid=41&tid=1583154]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 163ms |
0 / 0 |