Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
Не могу исполнить конструкцию типа: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[get_price]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[get_price] GO CREATE FUNCTION get_price (@tv varchar(9),@sh varchar(9)) RETURNS money AS begin Return (select top 1 sp69 from S_DAT.dbo.RA65 where sp66=@tv and sp67=@sh order by DATE_TIME_IDDOC desc) end GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO Работаю в 1С, использую OLEDB провайдера: Cmd=CreateObject("ADODB.Command"); Ошибка: Microsoft OLE DB Provider for SQL Server: Line 3: Incorrect syntax near 'GO'. Помогите... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2001, 17:30 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
А в QA скрипт работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2001, 01:18 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
Правильно ругается. Если тебе действительно из 1С нужно создавать функцию (в чем я сомневаюсь, для этого есть более удобные инструменты ), то выкини все GO. Они используются только в QA для указания конца batch'a. Чтобы добится того же результата через ADO, нужно просто разбить скрипт на несколько отдельных ADODB.Command's. Но в данном случае это не обязательно - функция то пока не используется. А если не секрет, чего ты вообще хочешь добиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2001, 02:01 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
Если я не ошибаюсь в ADO Command может быть и несколько SQL фраз разделенных точкой с запятой - ; Пример команды SELECT * FROM table1; SELECT * FROM table2 Эта команда вернет два рекордсета - для того чтоб получить второй нужно вызвать NextRecordset ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2001, 06:57 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
2Павел Добиться хочу вот чего: скрипт принудительно вызывается при НачалеРаботыСистемы(). При этом поддерживается единство SQL процедур/функций, необходимых для работы 1С (через УРБД). Если скрипт не выполнен или выполнен с ошибкой -> ЗавершитьРаботуСистемы(). Я вот думаю, может ограничение на batch'ам в CommandText только у OLEDB? Ведь QA реботает через ODBC-провайдера и у него все прокатывает. В общем, придется скриптовать все в отдельные файлы, потом из резать на выполняемые кусочки... 2JINX: Задача другая. Мне нужно... было... проверить, существует ли процедура/функция в системе, если да то удалить и создать новую, измененную. Связка if exists + create в одном Execute OLEDB-провайдером (или ADO вообще) не поддерживется. ...а селекты можно и последовательно исполнять, и жоинами объединять, и т. д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2001, 08:45 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
Не проще ли поместить этот скрипт в хранимую процедуру на серверной стороне - и выполнять эту процедуру при старте системы? Плюс ко всему - вы получите возможность легко модифицировать эту процедуру в дальнейшем "не трогая" клиент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2001, 09:01 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
У меня под ADO с клиента спокойно работают такие команды: "If object_ID('tempdb..#PropertiesLinesTmp') Is Null Create Table tempdb..#PropertiesLinesTmp (Property_id Int Primary Key Not Null, Property_value_id Int Not Null, ok Bit) Else Truncate Table tempdb..#PropertiesLinesTmp" Так что еще раз говорю - просто выкини GO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2001, 09:15 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
JINX а можно по подробнее про NextRecordset. Я вроде все так и делаю, но второго recordseta в упор не вижу. cm.CommandText = "insert into SQLObjects values (something, 1); select scope_identity() as 'newid'" rs.ActiveConnection = DataEnvironment1.Connection1 Set rs = cm.Execute rs.NextRecordset MsgBox rs!newid может я что не то делаю. Помогите пожалуйста а тоя уже устал с этим любовь иметь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2001, 09:35 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
2Павел: These rules apply to batches: Books Online. CREATE DEFAULT, CREATE PROCEDURE, CREATE RULE, CREATE TRIGGER, and CREATE VIEW statements cannot be combined with other statements in a batch. The CREATE statement must begin the batch. All other statements that follow in that batch will be interpreted as part of the definition of the first CREATE statement. 2(All): Всем спасибо, вопрос снят, тема закрыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2001, 12:02 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
Может кто подскажет, почему при выполнении запроса через ADODB.Connection более 30 сек. возникает ошибка "Поставщик Microsoft OLE DB для SQL Server: Время ожидания истекло" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2001, 13:48 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
SQLCon=CreateObject("ADODB.Connection"); SQLCom=CreateObject("ADODB.Command"); SQLRes=CreateObject("ADODB.Recordset"); SQLCon.Provider="SQLOLEDB"; SQLCon.ConnectionTimeout=3000; SQLCon.Open(.......); SQLCom.Activeconnection=SQLCon; SQLCom.CommandTimeout=3000; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2001, 14:15 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
>JINX а можно по подробнее про NextRecordset. Я вроде все так и делаю, но второго recordseta в упор не вижу. cm.CommandText = "insert into SQLObjects values (something, 1); select scope_identity() as 'newid'" Для того, чтобы увидеть второй рекордсет, нужно чтобы в Command было более одной команды Select, возвращающей набор записей. >Может кто подскажет, почему при выполнении запроса через ADODB.Connection более 30 сек. возникает ошибка "Поставщик Microsoft OLE DB для SQL Server: Время ожидания истекло" Потому что время ожидания истекло . Выстави таймаут побольше. И сделай запрос таким, чтобы его выполнения не приходилось ждать неделю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2001, 15:41 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
А вот и нет Garya просто надо было так set rs = rs.NextRecordset из чего напрашивается вывод что insert тоже возвращает recordset просто он пустой, а вот если бы в триггере на insert был бы select какой-нибудь, то он не был бы пустым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 01:46 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
Ко мне сейчас пришла мысль что в предыдущем высказывании я ошибся. Но я так решил потому что мог код работает и соблюдает логическую целостность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 04:38 |
|
||
|
Исполнение скрипта из АDODB (может и офф)
|
|||
|---|---|---|---|
|
#18+
Потому что время ожидания истекло . Выстави таймаут побольше. И сделай запрос таким, чтобы его выполнения не приходилось ждать неделю. SQLCon.ConnectionTimeout=0 !!!!! Это должно было решить проблему. Или я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 04:44 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32011956&tid=1825678]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 422ms |

| 0 / 0 |
