Шаблон под MAV

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

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

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

Сообщение Admin »

Andrew™ писал(а):добавление - это придётся тебе самому организовывать
Т.е. настоящего дропа как в кларе будем считать у тебя нет!?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Версия от 060803:

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

6822824 Open cursor
 Time Taken: 0.02 sec.
6822824 Maximum read 5000 rows for cursor
6822824 Parsing Cursor : SELECT "GoodsName","GoodsID" FROM NK_Goods ORDER BY "GoodsName"
 Time Taken: 0.51 sec.
6826560 Open cursor
 Time Taken: 0.59 sec.
6826560 Maximum read 1 rows for cursor
6826560 Parsing Cursor : SELECT COUNT(*) FROM NK_Goods
6826560 Fetch cursor
COUNT(*) = 27257
6826560 Close cursor
6826560 Free cursor
6822824 Close cursor
6822824 Free cursor
Версия от 060822:

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

6822824 Open cursor
 Time Taken: 0.02 sec.
6822824 Maximum read 5000 rows for cursor
6822824 Parsing Cursor : SELECT "GoodsName","GoodsID" FROM NK_Goods ORDER BY "GoodsName"
 Time Taken: 0.48 sec.
На первой версии в данном списке все работает хотя и не должно по твоим словам... (пересечение курсоров)
На всех версиях начиная с 060822 программа мертво встает колом.


А так же ... У меня продолжается проблема с ошибкой "Тип программы выходит за пределы допустимого диапазона (HY003)"
Сейчас избавляюсь от этого с помощью IF MAVGET(xxx).

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

  SELF.ConnectString = 'DRIVER={{SQL Server};SERVER='&SELF.Server&';DATABASE='&SELF.Database&';UID='&SELF.BaseLogin&';PWD='&SELF.BasePassword
  IF MAVCONNECT(Conn:Def,SELF.ConnectString,xAcc:NoWin)
    MAVSHOWERROR
    SELF.Connected = FALSE
  ELSE
    IF MAVCONNECT(Conn:Std,SELF.ConnectString,xAcc:NoWin)
      MAVSHOWERROR
      SELF.Connected = FALSE
    ELSE
      SELF.Connected = TRUE
      IF MAVGET(xaccLinks).
      IF MAVGET(xaccLogs).
      IF MAVGET(xaccObjects).
      IF MAVGET(xaccPrograms).
      IF MAVGET(xaccUsers).
    END
  END
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

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

Admin писал(а):
Andrew™ писал(а):добавление - это придётся тебе самому организовывать
Т.е. настоящего дропа как в кларе будем считать у тебя нет!?
реализация "настоящего" дропа в кларе убогая, мой по возможностям поиска и т д куда лучше (Auto Entry) на мой взгляд, ну а если тебе надо что то добавлять, что мешает повесить update buttons и в случае отсутсвия записи в Browse вызывать форму редактирования, это же пара строк кода
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

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

Admin писал(а):Версия от 060803:

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

6822824 Open cursor
 Time Taken: 0.02 sec.
6822824 Maximum read 5000 rows for cursor
6822824 Parsing Cursor : SELECT "GoodsName","GoodsID" FROM NK_Goods ORDER BY "GoodsName"
 Time Taken: 0.51 sec.
6826560 Open cursor
 Time Taken: 0.59 sec.
6826560 Maximum read 1 rows for cursor
6826560 Parsing Cursor : SELECT COUNT(*) FROM NK_Goods
6826560 Fetch cursor
COUNT(*) = 27257
6826560 Close cursor
6826560 Free cursor
6822824 Close cursor
6822824 Free cursor
Версия от 060822:

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

6822824 Open cursor
 Time Taken: 0.02 sec.
6822824 Maximum read 5000 rows for cursor
6822824 Parsing Cursor : SELECT "GoodsName","GoodsID" FROM NK_Goods ORDER BY "GoodsName"
 Time Taken: 0.48 sec.
На первой версии в данном списке все работает хотя и не должно по твоим словам... (пересечение курсоров)
На всех версиях начиная с 060822 программа мертво встает колом.
почему в первой версии не должно - Browse загрузилась и сделала COUNT, т е всё последовательно, а то что у тебя что то встаёт теперь колом, мало слов, нужны примеры, чтобы понять от куда ноги растут.
Admin писал(а): А так же ... У меня продолжается проблема с ошибкой "Тип программы выходит за пределы допустимого диапазона (HY003)"
Сейчас избавляюсь от этого с помощью IF MAVGET(xxx).
MAVGET не надо юзать, просто надо понять почему у тебя это происходит, сейчас же вместо MAVGET лучше вставлять IF MAVOPENFILE, Но лучше понять проблему т е поглядеть всё это на реальном примере
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

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

Andrew™ писал(а):почему в первой версии не должно - Browse загрузилась и сделала COUNT, т е всё последовательно, а то что у тебя что то встаёт теперь колом, мало слов, нужны примеры, чтобы понять от куда ноги растут.
ноги вычислил - действительно мои, теперь всё красиво

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

7084920 Open cursor
 Time Taken: 0.05 sec.
7084920 Maximum read 2 rows for cursor
7084920 Parsing Cursor : SELECT A."VendorNumber",A."VendorName",A."Address1",A."City",B."ZIP",A."State",A."PhoneNumber",A."ZipRef" FROM MAVT_VENDORS A LEFT OUTER JOIN MAVT_ZIPCODES B ON B."ZIPRef"=A."ZipRef"
7084920 Fetch cursor (1)
A."VendorNumber" = 1
A."VendorName"   = Doug's Digs
A."Address1"     = 12345 East 22nd Ave
A."City"         = Pompano Beach
B."ZIP"          = 33064
A."State"        = FL
A."PhoneNumber"  = 8005551212
A."ZipRef"       = 3
7084920 Fetch cursor (2)
A."VendorNumber" = 2
A."VendorName"   = Palms By Paul
A."Address1"     = 8749 Paul Place
A."City"         = Pompano Beach
B."ZIP"          = 33065
A."State"        = FL
A."PhoneNumber"  = 9541234567
A."ZipRef"       = 4
7084920 Close cursor
7089008 Open cursor
7089008 Maximum read 1 rows for cursor
7089008 Parsing Cursor : SELECT COUNT(*) FROM MAVT_VENDORS A LEFT OUTER JOIN MAVT_ZIPCODES B ON B."ZIPRef"=A."ZipRef"
7089008 Fetch cursor
COUNT(*) = 24
 Time Taken: 0.05 sec.
7089008 Close cursor
7089008 Free cursor
7084920 Free cursor
я в редакции от 22.08 вставил констроль за последовательностью выполнения запросов, и вот в одном месте упустил, когда SELECT запрос выполнен и требуется определить реальное количество записей в БД по заданному условию, курсор не закрыл, хотя с точки зрения работы ODBC он уже выполнен т к полностью обработан, но мой контроль не даёт ходу след запросу, надо было закрыть курсор перед определением COUNT(*), что было сделано, ссылка на обновление будет тебе в аське
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Когда добавляешь к MAVBrowse параметр (в поле Parameters:), к примеру (STRING Name) - IDE орет про группу %LoadProcedureParametersPrototype(MAVABC)
Наверное тебе нужно такую пустышку себе в шаблон вставить ...

И опять напомню про двойное соединение и ошибку "Тип программы выходит за пределы допустимого диапазона (HY003)"
Если нужен пример - вышлю свой класс с примером на мыло.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Вот еще один трабл... исправил.

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

#ENDDEFAULT
#!--------------------------------------------------------------------
#PROCEDURE(SQLReport,'Generic Reporting Procedure'),WINDOW,REPORT,PARENT(Window(ABC))
#DEFAULT
NAME DefaultMAVABCReport
CATEGORY 'SQLReport'
ты забыл сюда вставить:

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

#PROMPT('',CHECK),%EnablePrintPreview,AT(10,10)
Из за этого при использовании репорта в ABC ругалось на отсутствие переменной...
Это все в файле mavabc.tpl
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

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

Admin писал(а):Когда добавляешь к MAVBrowse параметр (в поле Parameters:), к примеру (STRING Name) - IDE орет про группу %LoadProcedureParametersPrototype(MAVABC)
Наверное тебе нужно такую пустышку себе в шаблон вставить ...
увидел трабл, починил, вставил группу пустышку в шаблон
Admin писал(а): И опять напомню про двойное соединение и ошибку "Тип программы выходит за пределы допустимого диапазона (HY003)"
Если нужен пример - вышлю свой класс с примером на мыло.
ну вот и хорошо, появился пример и появилось быстрое решение проблемы, я то не смог воспроизвести т к тут мало того, что MAVINSERT в не первом соединении так ещё есть READONLY поля, короче вылечил
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

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

Admin писал(а):Вот еще один трабл... исправил.

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

#ENDDEFAULT
#!--------------------------------------------------------------------
#PROCEDURE(SQLReport,'Generic Reporting Procedure'),WINDOW,REPORT,PARENT(Window(ABC))
#DEFAULT
NAME DefaultMAVABCReport
CATEGORY 'SQLReport'
ты забыл сюда вставить:

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

#PROMPT('',CHECK),%EnablePrintPreview,AT(10,10)
Из за этого при использовании репорта в ABC ругалось на отсутствие переменной...
Это все в файле mavabc.tpl
не, то что ругань была это да, но решение я сделал другое
данный CHECK имеет место быть в свойствах Extension шаблона SQLReport т к он насделник от SQL Process шаблона, но теперь ругани нет
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Andrew™ писал(а):ну вот и хорошо, появился пример и появилось быстрое решение проблемы, я то не смог воспроизвести т к тут мало того, что MAVINSERT в не первом соединении так ещё есть READONLY поля, короче вылечил
Жаль, :) вот и глюков вроде не осталось :)
Andrew™ писал(а):не, то что ругань была это да, но решение я сделал другое данный CHECK имеет место быть в свойствах Extension шаблона SQLReport т к он насделник от SQL Process шаблона, но теперь ругани нет
Ну тут все равно. Главное все починилось.
Будем продолжать совершенствоваться в поисках ... :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Вот кстати текст в шаблоне который желательно русифицировать.
Ну т.е. как то иметь возможность транслировать в свой.

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

#AT(%MAVProcessProcedures,%ActiveTemplateInstance,'Init','CODE')
 #CASE(%ProcessAction)
  #OF('Put Record')
 SELF.Draw('Updating Records',1)
  #OF('Delete Record')
 SELF.Draw('Deleting Records',1)
  #ELSE
 SELF.Draw('Processing Records',1)
 #ENDCASE
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Вот еще ...

1. При наличии ListBox на форме в режиме DropDown у него меняется порядок при перемещении по кнопке Tab... т.е. ты видать убиваешь ListBox и делаешь вместо него другой контрол, и позицию не восстанавливаешь.

2. При BRW1:Browse.Kill ты не убиваешь кнопку которую внутри класса создаешь для хидера ListBox ... Мне в одном месте нужно перезапускать форму без закрытия окна, на форме есть MAVBrowse. Так вот окно я перезапускаю методом .Run и на нем появляется еще один батон для твоего хидера ... :( тоненький такой, по высоте заголовка листа. Ну ты наверное понял про что я.

3. Сегодня пару раз добивался вот таких ошибок. Откуда ростут ноги не пойму ... Хотя ... смахивает на остатки проблемы по которой я тебе логи слал.

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

Program  : C:\Cw_App\Work\-SQL-\NotSale\30\Nsale.exe
Error    : [0] Entry Not Found (30)
           SQL Statement -
           Binding field 1  = 30
           INSERT INTO xa_logs ("ProgramID","MessageDateTime","UserLogin","ComputerName","ProcedureName","Message") VALUES(?,?,?,?,?,?) SELECT SCOPE_IDENTITY()
----------------------------------------------------------------------
Program  : C:\Cw_App\Work\-SQL-\NotSale\30\Nsale.exe
Error    : [207] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'GoodsName'. [42S22] (42S22)
           SQL Statement -
           Binding field 1 D."IncomeID" = 43
           SELECT "GoodsName",D."Amount",D."Price",D."ID" FROM xa_users A,xa_users B,xa_users C,xa_users E,ns_incomedet D WHERE D."IncomeID"=? ORDER BY "GoodsName"
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

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

Admin писал(а):Вот еще ...

1. При наличии ListBox на форме в режиме DropDown у него меняется порядок при перемещении по кнопке Tab... т.е. ты видать убиваешь ListBox и делаешь вместо него другой контрол, и позицию не восстанавливаешь.
это гляну, хотя это учитывал
Admin писал(а): 2. При BRW1:Browse.Kill ты не убиваешь кнопку которую внутри класса создаешь для хидера ListBox ... Мне в одном месте нужно перезапускать форму без закрытия окна, на форме есть MAVBrowse. Так вот окно я перезапускаю методом .Run и на нем появляется еще один батон для твоего хидера ... :( тоненький такой, по высоте заголовка листа. Ну ты наверное понял про что я.
это и не предусматривалось, т к при закрытии окна нет смысла убивать динамически созданные контролы, тут же ты повторно делаешь инициализацию Browse (не предусамтривалось такое), пока не понимаю зачем, чем не подойдёт перезагрузка Browse через метод .Load().
Admin писал(а): 3. Сегодня пару раз добивался вот таких ошибок. Откуда ростут ноги не пойму ... Хотя ... смахивает на остатки проблемы по которой я тебе логи слал.

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

Program  : C:\Cw_App\Work\-SQL-\NotSale\30\Nsale.exe
Error    : [0] Entry Not Found (30)
           SQL Statement -
           Binding field 1  = 30
           INSERT INTO xa_logs ("ProgramID","MessageDateTime","UserLogin","ComputerName","ProcedureName","Message") VALUES(?,?,?,?,?,?) SELECT SCOPE_IDENTITY()
мало инфо, нужет пример для анализа ситуации
Admin писал(а): ----------------------------------------------------------------------
Program : C:\Cw_App\Work\-SQL-\NotSale\30\Nsale.exe
Error : [207] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'GoodsName'. [42S22] (42S22)
SQL Statement -
Binding field 1 D."IncomeID" = 43
SELECT "GoodsName",D."Amount",D."Price",D."ID" FROM xa_users A,xa_users B,xa_users C,xa_users E,ns_incomedet D WHERE D."IncomeID"=? ORDER BY "GoodsName"
[/code]
тут ты что то напортачил с инициализацией, префикс у поля отсутвует

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

Сообщение Admin »

Admin писал(а):Вот кстати текст в шаблоне который желательно русифицировать.
Ну т.е. как то иметь возможность транслировать в свой.

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

#AT(%MAVProcessProcedures,%ActiveTemplateInstance,'Init','CODE')
 #CASE(%ProcessAction)
  #OF('Put Record')
 SELF.Draw('Updating Records',1)
  #OF('Delete Record')
 SELF.Draw('Deleting Records',1)
  #ELSE
 SELF.Draw('Processing Records',1)
 #ENDCASE
Андрей обращай внимания на такие сообщения плиз... а то забывается и так и висит под вопросом!
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

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

Admin писал(а):
Admin писал(а):Вот кстати текст в шаблоне который желательно русифицировать.
Ну т.е. как то иметь возможность транслировать в свой.

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

#AT(%MAVProcessProcedures,%ActiveTemplateInstance,'Init','CODE')
 #CASE(%ProcessAction)
  #OF('Put Record')
 SELF.Draw('Updating Records',1)
  #OF('Delete Record')
 SELF.Draw('Deleting Records',1)
  #ELSE
 SELF.Draw('Processing Records',1)
 #ENDCASE
Андрей обращай внимания на такие сообщения плиз... а то забывается и так и висит под вопросом!
реализовал как настройку в шаблоне
Ответить