Bankir.Ru
11 декабря, воскресенье 09:14

Объявление

Свернуть
Пока нет объявлений.

Vs_vba_script

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Vs_vba_script

    В WorkFlow RETAIL есть такой тип методов. Имеется ли у кого-то опыт работы с такими методами?

  • #2
    Не работает. Обещали много лет назад, да не сделали. Так что или Diasoft Script или Transact SQL
    Serg Voronov

    Комментарий


    • #3
      Печально. Увы это далеко не единственное место из которого торчит неработающая или вообще неуместная, но используемая ради удобства разработки (готовая экранная форма) декларация функционала...

      Комментарий


      • #4
        Да и ещё: насколько я понимаю использовать ActiveX/COM из DS тоже невозможно? В WorkFlow это точно так, а как насчёт 5NT?

        Комментарий


        • #5
          Почему так ? Народ просто прописывает руками интерфейсы внешнего OLE сервера как родной и спокойно вызывает его из DiasoftSCRIPT . Неудобно - что не автоматом регистрится - но работает.
          p.s. Кстати VbSCRIPT и прочие штуки можно запросто вызвать и из T-SQL -

          declare
          @script_text varchar(8000),
          @param1 sql_variant,
          @param2 sql_variant,
          @param3 sql_variant,
          @paramOut sql_variant


          set @script_text = 'function Main(byRef Argu1,Argu2,Argu3)
          dim a(1)
          a(0) = "teet"
          a(1) = string(128000, "1")
          Main = a
          Argu1 = 23456
          end function
          '
          set @param1 = 123
          declare @object int , @hr int, @len int

          EXEC @hr = sp_OACreate 'MSScriptControl.ScriptControl', @object OUTPUT
          IF @hr > 0 GOTO SCR_ERROR
          EXEC @hr = sp_OASetProperty @object, 'Language', 'VBScript'
          IF @hr > 0 GOTO SCR_ERROR
          EXEC @hr = sp_OASetProperty @object, 'Timeout', 600000 -- 1 min
          IF @hr > 0 GOTO SCR_ERROR
          EXEC @hr = sp_OASetProperty @object, 'AllowUI',0
          IF @hr > 0 GOTO SCR_ERROR
          EXEC @hr = sp_OAMethod @object, 'AddCode', NULL, @script_text
          IF @hr > 0 GOTO SCR_ERROR
          create table #tmp_tbl(
          col1 varchar(8),
          col2 ntext)
          INSERT INTO #tmp_tbl
          EXEC @hr = sp_OAMethod @object, 'Run', @paramOut OUT, 'Main', @Param1 OUT, @Param2, @Param3
          IF @hr > 0 GOTO SCR_ERROR
          select @paramOut, @Param1
          select datalength(col2), col1 from #tmp_tbl
          drop table #tmp_tbl
          --EXEC @hr = sp_OAMethod @object, %af_src_str_8, NULL, @script_text
          --IF @hr > 0 GOTO SCR_ERROR
          EXEC @hr = sp_OADestroy @object
          IF @hr > 0 GOTO SCR_ERROR
          goto ok

          SCR_ERROR:
          DECLARE @source varchar(255), @description varchar(255), @msg varchar(1000)
          EXEC @hr = sp_OAGetErrorInfo @object, @source OUT, @description OUT
          set @msg=@Source+char(13)+@description
          print @msg
          -- raiserror(@msg,16,1 )
          ok:

          Комментарий


          • #6
            bantik, 10x за информацию. Про T-SQL в курсе, но это скорее в тему для 5NT. Можно поподробнее про ручное прописывание интерфейсов, очень желательно с примерами (если большие - в мыло). Скажем требуется поиметь доступ к ADODB и Excel-евским файлам.

            Комментарий


            • #7
              Doppelganger
              Почему T-SQL -- это в 5НТ? Неужели у вас Retail на бтриве? А в скульный можно совершенно спокойно вгонять и методы на T-SQL и отчеты. Никаких проблем нет, все работает.
              Кстати, на T-SQL можно совершенно спокойно обращаться к Excel и Access-файлам.
              Вот кусок кода по загрузке справочника ОКВЭД в ВФ из Access-ной базюльки. Excel делается аналогично, но более геморройно (надо поименовывать диапазон) :
              Код:
              if (select srvid from master..sysservers where srvname='Access_Okved')>0 
                 exec sp_dropserver 'Access_Okved'
              
              exec sp_addlinkedserver @server = 'Access_Okved',
                                      @srvproduct = 'OLE DB Provider for Jet',  
                                      @provider = 'Microsoft.Jet.OLEDB.4.0',
                                      @datasrc =  'e:\workflow\okved.mdb'  
              GO
              ...................
              declare Okved_Cursor cursor 
                for select number,name from Access_Okved...Okved
              Serg Voronov

              Комментарий

              Пользователи, просматривающие эту тему

              Свернуть

              Присутствует 1. Участников: 0, гостей: 1.

              Обработка...
              X