Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) ВыполнитьИнструкцию(). А можно выгружать в список значений? (число прочтений - 8570 )
Aleksey
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 46
Зарегистрирован: 12. Марта 2009
ВыполнитьИнструкцию(). А можно выгружать в список значений?
19. Марта 2009 :: 09:19
Печать  
В онлайн документации написано:

метод ВыполнитьИнструкцию() теперь имеет три параметра:
           - Текст запроса;
           - Таблица значений (пока ТОЛЬКО ТЗ);
           - флаг очистки ТЗ, по умолчанию 1

Интересует будет ли возможность выгружать в список значений? А то судя по замеру запрос занимает 0.21%, а последующая выгрузка в Список Значений - 2.78%

(1Срр 3.0.1.22, дбф)
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #1 - 19. Марта 2009 :: 09:35
Печать  
Aleksey писал(а) 19. Марта 2009 :: 09:19:
В онлайн документации написано:

метод ВыполнитьИнструкцию() теперь имеет три параметра:
           - Текст запроса;
           - Таблица значений (пока ТОЛЬКО ТЗ);
           - флаг очистки ТЗ, по умолчанию 1

Интересует будет ли возможность выгружать в список значений? А то судя по замеру запрос занимает 0.21%, а последующая выгрузка в Список Значений - 2.78%

(1Срр 3.0.1.22, дбф)


Ну 2-м параметром список значений укажи. Кто мешает?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #2 - 19. Марта 2009 :: 09:47
Печать  
Aleksey писал(а) 19. Марта 2009 :: 09:19:
В онлайн документации написано:

в онлайн документации вообщето написано это:
Цитата:
ВыполнитьИнструкцию / ExecuteStatement

Синтаксис: ВыполнитьИнструкцию([ТекстЗапроса], [ОбъектРезультатов], [Очищать])

Параметры:
ТекстЗапроса - тип: Строка. Текст запроса, если пустая строка - запрос считается параметризированным. Необязателен, по умолчанию - пустая строка.
ОбъектРезультатов - тип: любой из ТаблицаЗначений, СписокЗначений, ИндексированнаяТаблица или наследник от любого из них. (Это должен быть объект какого-либо из перечисленных типов, а не объект, реализующий их интерфейс.) Если параметр передан, то он и будет возвращаемым значением. Необязателен, по умолчанию пустое значение, в этом случае будет возвращен объект типа ТаблицаЗначений.
Очищать - тип: Число. 1 - очистить переданный ОбъектРезультатов и создать колонки если его тип ТаблицаЗначений или ИндексированнаяТаблица. 0 - не очищать. Необязателен, по умолчанию - 1.

Возвращает: тип: ТаблицаЗначений, СписокЗначений, ИндексированнаяТаблица или наследник от любого из них, Число. Объект с результатом запроса, или число - количество обработанных строк.

Описание: Выполняет SQL запрос, при ошибке парсинга или при ошибке на ODBC драйвере формируется исключение. Если запрос возвращает набор строк, метод возвращает объект с результатом запроса, если запрос не возвращает набор строк (не select, а DML или прочий) - возвращается количество обработанных строк. Если запрос содержит несколько SQL инструкций (multistatement batch), результаты возвращаются только от первой инструкции. Однако, на драйвер уходит весь текст запроса (По спецификации ODBC, будут ли выполнены остальные инструкции в пакете - зависит от драйвера. Для драйвера SQL Server они выполняются), остальные результаты игнорируются. Если запрос возвращает набор данных, и в наборе данных нет ни одной строки - это не является ошибкой. Если запрос не параметризированный - метод гарантированно закрывает курсор. Если передан ОбъектРезультатов типа ТаблицаЗначений или ИндексированнаяТаблица или наследник и параметр Очишать = 0, то колонки объекта и поля результата совмещаются по порядку. Если передан ОбъектРезультатов типа СписокЗначений, то значения из первого поля результата помещаются в значения списка. Если существует второе поле результата и оно типа Строка, то значения этого поля помещается в представление списка. Если существует третье поле результата и оно типа Число, то значения этого поля помещается в признак пометки значений.
  

1&&2&&3
Наверх
 
IP записан
 
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #3 - 19. Марта 2009 :: 09:57
Печать  
сказал как отрезал  Подмигивание
  
Наверх
IP записан
 
Aleksey
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 46
Зарегистрирован: 12. Марта 2009
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #4 - 19. Марта 2009 :: 11:01
Печать  
Я искал здесь http://www.1cpp.ru/docum/html/1cpp.html

И кстати здесь http://www.1cpp.ru/docum/html/oledb.html#executestatement четка сказано, что ТЗ
ВыполнитьИнструкцию / ExecuteStatement

Синтаксис: ВыполнитьИнструкцию([ТекстSQL], [ТаблицаРезультатов], [флОчищать=1])
    Параметры:
...
           * ТаблицаРезультатов - тип: ТаблицаЗначений. Объект, в который будет выгружен результат запроса. Не обязателен.
...
    Возвращает: тип: ТаблицаЗначений. Результат запроса в виде таблицы значений. Колонки таблицы значений будут типизированы соответствующими значениями.

И когда я делаю запрос

База = СоздатьОбъект("OLEDBData");
...
СписокТовара=СоздатьОбъект("СписокЗначений");
СписокТовара= Запрос.ВыполнитьИнструкцию(ТекстЗапроса);

ТипЗначенияСтр(СписокТовара) - возвращает ТаблицуЗначений.

Попробую конечно сейчас как процедуру использовать, а не как функцию
           
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #5 - 19. Марта 2009 :: 11:15
Печать  
Ты вот так пробуй:
Код
Выбрать все
СписокТовара= Запрос.ВыполнитьИнструкцию(ТекстЗапроса, СписокТовара); 

  
Наверх
 
IP записан
 
Aleksey
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 46
Зарегистрирован: 12. Марта 2009
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #6 - 19. Марта 2009 :: 11:19
Печать  
СписокТовара=СоздатьОбъект("СписокЗначений");
Реза=Запрос.ВыполнитьИнструкцию(ТекстЗапроса,СписокТовара);

Выдает ошибку: Не удалось получить возвращаемый объект

Хотя код

СписокТовара=СоздатьОбъект("ТаблицаЗначений");
Реза=Запрос.ВыполнитьИнструкцию(ТекстЗапроса,СписокТовара);

Выполняется без проблем, но возвращает ТЗ
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #7 - 19. Марта 2009 :: 11:25
Печать  
А-ааа, это был не нескафе!

Надо было сразу говорить что речь про OLEDBCommand  Улыбка
  

1&&2&&3
Наверх
 
IP записан
 
Aleksey
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 46
Зарегистрирован: 12. Марта 2009
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #8 - 19. Марта 2009 :: 11:26
Печать  
База дбф, по другому не умею Печаль
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #9 - 19. Марта 2009 :: 11:56
Печать  
Ну тогда 1sqlite используй Подмигивание
  
Наверх
 
IP записан
 
Aleksey
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 46
Зарегистрирован: 12. Марта 2009
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #10 - 19. Марта 2009 :: 12:21
Печать  
А ссылочку можно что это за зверь и как его готовить. И какие у него минусы/плюсы по сравнению с 1С++, при условии что база дбф
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #11 - 19. Марта 2009 :: 12:29
Печать  
Aleksey писал(а) 19. Марта 2009 :: 12:21:
А ссылочку можно что это за зверь и как его готовить. И какие у него минусы/плюсы по сравнению с 1С++, при условии что база дбф

Вот ветка
Плюсы-минусы от автора
Проект на Гугл-коде (там есть и документация и примеры)
Последняя версия лежит пока(?) здесь
  
Наверх
 
IP записан
 
Aleksey
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 46
Зарегистрирован: 12. Марта 2009
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #12 - 19. Марта 2009 :: 19:29
Печать  
Что то почитал http://infostart.ru/projects/2127/ и не вдохновила меня 1sqlite.

Да быстро работает, но как то заточена под однопользовательский локальный режим, и судя по коментам при работе по сети скорость сравнима со стандартной скорости 1С. Т.е. получиться замена шила на мыло. Да и ошибка в многопользовательском режиме, которую исправлены в последнем релизе не вдохнавляет. А сколько еще осталось?

Да и к тому же дальнейшая перспектива перехода на скуль с 1sqlite выглядит мало обнадеживающей
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #13 - 20. Марта 2009 :: 08:00
Печать  
Aleksey писал(а) 19. Марта 2009 :: 19:29:
Да и ошибка в многопользовательском режиме, которую исправлены в последнем релизе не вдохнавляет. А сколько еще осталось?

Сколько?
Aleksey писал(а) 19. Марта 2009 :: 19:29:
Да и к тому же дальнейшая перспектива перехода на скуль с 1sqlite выглядит мало обнадеживающей

А если ты все запросы оставишь на ОЛЕДБ, то переход на скуль будет более быстрый??

В общем, хозяин-барин  Подмигивание
  
Наверх
 
IP записан
 
Aleksey
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 46
Зарегистрирован: 12. Марта 2009
Re: ВыполнитьИнструкцию(). А можно выгружать в список значений?
Ответ #14 - 20. Марта 2009 :: 08:40
Печать  
Так с плюсам в случае перехода уже все будет написано. А если изначально грамотно писать запросы, то весь переход вообще можно сделать прозрачным
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать