линк на обновление ушёл мыломAndrew Myalin писал(а): всё, разобралси, просто до сего момента никто о данной проблеме не заявлял, всем хватало секунд, сейчас оттестирую и дам ссылку на обновление
MAV Direct ODBC
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Обновление
Библиотека позволяет одновременно работать в разных соединениях, в форме редактирования в свойствах SaveButton шаблона введено было специальное свойство для переключения на определённое соединение - Connect Name. Теперь такое же свойство появилось и для BrowseBox шаблона.
Раньше при необходимости всё это приходилось делать руками.
Раньше при необходимости всё это приходилось делать руками.
а вот еще: ошибка No Matching Prototype avaliableAndrew Myalin писал(а):я так понимаю что это ШВС и в глобальных настройках приложения во всех DROP LISt'ах выбрать вместо рускоязычных соответсвующие англоязычные названияArseniy писал(а):При сборке выдается сообщение: Source file app_mav.clw not found. Что делать?
IF DbManager.Connect('SQL Server',GlobalConnectionString)
ну это твоя ошибка, GlobalConnectionString должна быть CSTRINGAnonymous писал(а):а вот еще: ошибка No Matching Prototype avaliableAndrew Myalin писал(а):я так понимаю что это ШВС и в глобальных настройках приложения во всех DROP LISt'ах выбрать вместо рускоязычных соответсвующие англоязычные названияArseniy писал(а):При сборке выдается сообщение: Source file app_mav.clw not found. Что делать?
IF DbManager.Connect('SQL Server',GlobalConnectionString)
BrowseBox
Тут прочитал в Clalist'е про неправильное позиционирование в штатном BrowseBox после выхода из формы редактирования с удачным завершением ввода.
До сих пор не могу понять тех кто в SQL ещё юзает данный BrowseBox, что происходит при выходе из формы, наглядно можно посмотреть с помощью драйверной трассировки, идёт попытка перезагрузки Browse начиная с текущей записи, при наличии в ключе больше одного поля, поглядите какой ужасный WHERE при этом генериться, то что такие запросы тормозять на клиенте не так ещё страшно, переживут, а вот то что в многопользовательском режиме сервак на такого рода запросов уходит просто в аут (100% загрузка) это ужасно, на других рабочих станциях при этом простые запросы к БД начинают тормозить.
а надо было по хорошему после выхода из формы просто проинициализировать соответсвукющую запись в Browse Queue и ВСЁ, т к вся инфо о записи уже поднята в форме редактирования, что в принципе и сделано в MAV, и на удаление, тоже без повторных перезагрузок, только удаление из Browse Queue, скажете, а вновь введённая запись не удовлетворяет условиям текущего фильтра Browse, ну и фиг с ним, ну появится этот документ в списке, он при желании при принудительном Refresh'е исчезнет, но если юзверь что то не то вбил в документ и хочет его подправить, получается даже удобно что он не исчезает сразу из списка. Время показало, что это правильное решеие, конечные юзвери довольны
и бессмысленные перезагрузки Browse при потере/получении фокуса окна тоже считаю бессмысленными.
До сих пор не могу понять тех кто в SQL ещё юзает данный BrowseBox, что происходит при выходе из формы, наглядно можно посмотреть с помощью драйверной трассировки, идёт попытка перезагрузки Browse начиная с текущей записи, при наличии в ключе больше одного поля, поглядите какой ужасный WHERE при этом генериться, то что такие запросы тормозять на клиенте не так ещё страшно, переживут, а вот то что в многопользовательском режиме сервак на такого рода запросов уходит просто в аут (100% загрузка) это ужасно, на других рабочих станциях при этом простые запросы к БД начинают тормозить.
а надо было по хорошему после выхода из формы просто проинициализировать соответсвукющую запись в Browse Queue и ВСЁ, т к вся инфо о записи уже поднята в форме редактирования, что в принципе и сделано в MAV, и на удаление, тоже без повторных перезагрузок, только удаление из Browse Queue, скажете, а вновь введённая запись не удовлетворяет условиям текущего фильтра Browse, ну и фиг с ним, ну появится этот документ в списке, он при желании при принудительном Refresh'е исчезнет, но если юзверь что то не то вбил в документ и хочет его подправить, получается даже удобно что он не исчезает сразу из списка. Время показало, что это правильное решеие, конечные юзвери довольны
и бессмысленные перезагрузки Browse при потере/получении фокуса окна тоже считаю бессмысленными.
- Admin
- Администратор
- Сообщения: 3961
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Вопрос!
Как делать сложные запросы типа:
Можешь дать наводку на свои примеры или описать подробно как это сделать в MAVBrowse. Как описать связи в словаре. Куда (в какой эмбед) вставлять код и т.д.
Также есть ли пример с вычисляемыми полями?
Как делать сложные запросы типа:
Код: Выделить всё
SELECT d.*,a.name,b,name FROM data d,users a, users b WHERE a.id = d.uid1 AND b.id = d.uid2
Также есть ли пример с вычисляемыми полями?
ну ребята Вы блин даёте, ЗВЁЗДОЧКИ не в коем случае не юзайте,Admin писал(а):Вопрос!
Как делать сложные запросы типа:
Можешь дать наводку на свои примеры или описать подробно как это сделать в MAVBrowse. Как описать связи в словаре. Куда (в какой эмбед) вставлять код и т.д.Код: Выделить всё
SELECT d.*,a.name,b,name FROM data d,users a, users b WHERE a.id = d.uid1 AND b.id = d.uid2
Также есть ли пример с вычисляемыми полями?
для этих целей есть соответсвующий метод у MAvSelect класса
Код: Выделить всё
tmp MAVSelect
CODE
tmp.Init(,0) ! читаетм всё
tmp.BindFields(data) ! забиндит все поля описанные в словаре в SELECT
tmp.BindField(users.Name)
tmp.BindField(AliasUsers.Name)
tmp.Relation(data.id,AliasUsers.uid1)
tmp.Relation(users.id,AliasUsers.uid2)
if tmp.Run()
MAVSHOWERROR
RETURN
end
LOOP
CASE tmp.Fetch()
OF 0
! Ok
OF 35
BREAK
ELSE
MAVSHOWERROR
BREAK
END
END
чтобы штатно вставлять как %Secondary в File Schematic для Browse
для того и написал, что для повторного использования одного и того же файла придётся сделать для него ALIAS и юзать егоAdmin писал(а):Звездочки для примера написаны. Я их нигде еще не применял.
И еще обрати внимание что USERS это один и тот же файл.
+ Мне нужно не ручной код. Мне по такому принципу нужно в бровзе отобразить данные!
в примерах вроде нет, но какие проблемыAdmin писал(а): + Повторю еще один вопрос: Также есть ли пример с вычисляемыми полями?
в .FillQueue PROCEDURE()
ЛокальнаяПеременнаяИзСтолбца = SELF.Rec.Field1 + SELF.Rec.Field2
или что то ещё
это делается до вызова PARENT'а
- Admin
- Администратор
- Сообщения: 3961
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Но это же криво!!! Очень криво.для того и написал, что для повторного использования одного и того же файла придётся сделать для него ALIAS и юзать его
Т.е. получается если я хочу выборку делать из 10-ти алиасов одного файла, то из за того что все привязано к словарю мне придется десять алиасов делать?
Где же гибкость тогда? Или получается вся гибкость только при ручном написании запроса? Да-а-а-с ...
Я может и не прав но хочу в шаблоне без ручного кодирования делать выборки такого вида:
Код: Выделить всё
SELECT d.*,a.name,b,name FROM data d,users a, users b WHERE a.id = d.uid1 AND b.id = d.uid2
Да. Что то меня SQL (в связке с Кларионом) начинает раздражать :-\
P.S. Не воспринимай как наезд ...
Всем привет. Хранимка возвращает единственное значение типа decimal , допустим (7,2). Нужно это значение положить в переменную кланиона. Делаю следующее:
Loc_Select.Init(1,1)
Loc_Select.BindField(loc_rezult)
IF loc_Select.Run('execute dbo.CalculateExpectedEventCoef '&LineEvent:EventId&', '&EventCoefView:EventCoefTypeId&', '&UpdateReceipt:SelectedPSValue&', 1')
MAVShowError
END
IF loc_Select.Fetch()
MAVShowError
UpdateReceipt:SelectedExpectedCoef = 0
ELSE
UpdateReceipt:SelectedExpectedCoef = loc_Rezult
END
получаю ошибку 'invalid cursor state'. Что делаю не так?
Loc_Select.Init(1,1)
Loc_Select.BindField(loc_rezult)
IF loc_Select.Run('execute dbo.CalculateExpectedEventCoef '&LineEvent:EventId&', '&EventCoefView:EventCoefTypeId&', '&UpdateReceipt:SelectedPSValue&', 1')
MAVShowError
END
IF loc_Select.Fetch()
MAVShowError
UpdateReceipt:SelectedExpectedCoef = 0
ELSE
UpdateReceipt:SelectedExpectedCoef = loc_Rezult
END
получаю ошибку 'invalid cursor state'. Что делаю не так?
не батенькаАрсений писал(а):Всем привет. Хранимка возвращает единственное значение типа decimal , допустим (7,2). Нужно это значение положить в переменную кланиона. Делаю следующее:
Loc_Select.Init(1,1)
Loc_Select.BindField(loc_rezult)
IF loc_Select.Run('execute dbo.CalculateExpectedEventCoef '&LineEvent:EventId&', '&EventCoefView:EventCoefTypeId&', '&UpdateReceipt:SelectedPSValue&', 1')
MAVShowError
END
IF loc_Select.Fetch()
MAVShowError
UpdateReceipt:SelectedExpectedCoef = 0
ELSE
UpdateReceipt:SelectedExpectedCoef = loc_Rezult
END
получаю ошибку 'invalid cursor state'. Что делаю не так?
Loc_Select.BindField(loc_rezult,SQL_PARAM_OUTPUT)
IF loc_Select.Run('{{? = call dbo.CalculateExpectedEventCoef( '&LineEvent:EventId&', '&EventCoefView:EventCoefTypeId&', '&UpdateReceipt:SelectedPSValue&', 1)}')
а по хорошему все параметры лучше пробиндить