MAV Direct ODBC

Обсуждение MAV Direct ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Andrew Myalin писал(а): всё, разобралси, просто до сего момента никто о данной проблеме не заявлял, всем хватало секунд, сейчас оттестирую и дам ссылку на обновление
линк на обновление ушёл мылом
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Обновление

Сообщение Andrew™ »

Библиотека позволяет одновременно работать в разных соединениях, в форме редактирования в свойствах SaveButton шаблона введено было специальное свойство для переключения на определённое соединение - Connect Name. Теперь такое же свойство появилось и для BrowseBox шаблона.

Раньше при необходимости всё это приходилось делать руками.
Arseniy

Сообщение Arseniy »

При сборке выдается сообщение: Source file app_mav.clw not found. Что делать?
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Arseniy писал(а):При сборке выдается сообщение: Source file app_mav.clw not found. Что делать?
я так понимаю что это ШВС и в глобальных настройках приложения во всех DROP LISt'ах выбрать вместо рускоязычных соответсвующие англоязычные названия
Гость

Сообщение Гость »

Andrew Myalin писал(а):
Arseniy писал(а):При сборке выдается сообщение: Source file app_mav.clw not found. Что делать?
я так понимаю что это ШВС и в глобальных настройках приложения во всех DROP LISt'ах выбрать вместо рускоязычных соответсвующие англоязычные названия
а вот еще: ошибка No Matching Prototype avaliable
IF DbManager.Connect('SQL Server',GlobalConnectionString)
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Anonymous писал(а):
Andrew Myalin писал(а):
Arseniy писал(а):При сборке выдается сообщение: Source file app_mav.clw not found. Что делать?
я так понимаю что это ШВС и в глобальных настройках приложения во всех DROP LISt'ах выбрать вместо рускоязычных соответсвующие англоязычные названия
а вот еще: ошибка No Matching Prototype avaliable
IF DbManager.Connect('SQL Server',GlobalConnectionString)
ну это твоя ошибка, GlobalConnectionString должна быть CSTRING
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

BrowseBox

Сообщение Andrew™ »

Тут прочитал в Clalist'е про неправильное позиционирование в штатном BrowseBox после выхода из формы редактирования с удачным завершением ввода.

До сих пор не могу понять тех кто в SQL ещё юзает данный BrowseBox, что происходит при выходе из формы, наглядно можно посмотреть с помощью драйверной трассировки, идёт попытка перезагрузки Browse начиная с текущей записи, при наличии в ключе больше одного поля, поглядите какой ужасный WHERE при этом генериться, то что такие запросы тормозять на клиенте не так ещё страшно, переживут, а вот то что в многопользовательском режиме сервак на такого рода запросов уходит просто в аут (100% загрузка) это ужасно, на других рабочих станциях при этом простые запросы к БД начинают тормозить.

а надо было по хорошему после выхода из формы просто проинициализировать соответсвукющую запись в Browse Queue и ВСЁ, т к вся инфо о записи уже поднята в форме редактирования, что в принципе и сделано в MAV, и на удаление, тоже без повторных перезагрузок, только удаление из Browse Queue, скажете, а вновь введённая запись не удовлетворяет условиям текущего фильтра Browse, ну и фиг с ним, ну появится этот документ в списке, он при желании при принудительном Refresh'е исчезнет, но если юзверь что то не то вбил в документ и хочет его подправить, получается даже удобно что он не исчезает сразу из списка. Время показало, что это правильное решеие, конечные юзвери довольны ;)

и бессмысленные перезагрузки Browse при потере/получении фокуса окна тоже считаю бессмысленными.
Аватара пользователя
Admin
Администратор
Сообщения: 3961
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Вопрос!

Как делать сложные запросы типа:

Код: Выделить всё

SELECT d.*,a.name,b,name FROM data d,users a, users b WHERE a.id = d.uid1 AND b.id = d.uid2
Можешь дать наводку на свои примеры или описать подробно как это сделать в MAVBrowse. Как описать связи в словаре. Куда (в какой эмбед) вставлять код и т.д.

Также есть ли пример с вычисляемыми полями?
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Admin писал(а):Вопрос!

Как делать сложные запросы типа:

Код: Выделить всё

SELECT d.*,a.name,b,name FROM data d,users a, users b WHERE a.id = d.uid1 AND b.id = d.uid2
Можешь дать наводку на свои примеры или описать подробно как это сделать в MAVBrowse. Как описать связи в словаре. Куда (в какой эмбед) вставлять код и т.д.

Также есть ли пример с вычисляемыми полями?
ну ребята Вы блин даёте, ЗВЁЗДОЧКИ не в коем случае не юзайте,
для этих целей есть соответсвующий метод у 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
Аватара пользователя
Admin
Администратор
Сообщения: 3961
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Звездочки для примера написаны. Я их нигде еще не применял.
И еще обрати внимание что USERS это один и тот же файл.
+ Мне нужно не ручной код. Мне по такому принципу нужно в бровзе отобразить данные!
+ Повторю еще один вопрос: Также есть ли пример с вычисляемыми полями?
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Admin писал(а):Звездочки для примера написаны. Я их нигде еще не применял.
И еще обрати внимание что USERS это один и тот же файл.
+ Мне нужно не ручной код. Мне по такому принципу нужно в бровзе отобразить данные!
для того и написал, что для повторного использования одного и того же файла придётся сделать для него ALIAS и юзать его
Admin писал(а): + Повторю еще один вопрос: Также есть ли пример с вычисляемыми полями?
в примерах вроде нет, но какие проблемы

в .FillQueue PROCEDURE()
ЛокальнаяПеременнаяИзСтолбца = SELF.Rec.Field1 + SELF.Rec.Field2
или что то ещё
это делается до вызова PARENT'а
Аватара пользователя
Admin
Администратор
Сообщения: 3961
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

для того и написал, что для повторного использования одного и того же файла придётся сделать для него 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. Не воспринимай как наезд ... :)
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

Также есть ли пример с вычисляемыми полями?
имелось ввиду sum()

например счет и сумма по счету
Арсений

Сообщение Арсений »

Всем привет. Хранимка возвращает единственное значение типа 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'. Что делаю не так?
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Арсений писал(а):Всем привет. Хранимка возвращает единственное значение типа 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)}')

а по хорошему все параметры лучше пробиндить
Ответить