Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Простой вопрос (число прочтений - 5363 )
Dan777
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 17. Марта 2008
Простой вопрос
17. Марта 2008 :: 07:21
Печать  
Делаю все по учебнику, запрос простейший:

Процедура ТестРегистраОстатковВиртТабл()
     Recordset  = СоздатьОбъект("ODBCRecordset");
    Recordset.УстБД(БазаSQL)   ;
     ТекстЗапросаSQL = "
     |SELECT
     |  *
     |FROM   
               |  $РегистрОстатки.МестаХранения (:НачДата,,
     |                                                            МестоХранения = :ВыбМестаХранения,
     |                               (МПЗ),(Количество)) as Рег"; 
     Recordset.УстановитьТекстовыйПараметр("НачДата", НачДата);
     Recordset.УстановитьТекстовыйПараметр("ВыбМестаХранения", ВыбМестаХранения);
     //ЗапросSQL.УстановитьТекстовыйПараметр("КонДата", КонДата);
     
     ТЗ = Recordset.ВыполнитьИнструкцию(ТекстЗапросаSQL);
               Сообщить("ТЗ.КоличествоСтрок()="+ТЗ.КоличествоСтрок());
     Сообщить("ТЗ.КоличествоКолонок()="+ТЗ.КоличествоКолонок());
     Для сч=1 По ТЗ.КоличествоКолонок() Цикл
           заголовок="";Тип="";
           ТЗ.ПолучитьПараметрыКолонки(сч, Тип, ,, заголовок, , ,);
           Сообщить("Тип="+Тип);
           Сообщить("заголовок="+заголовок);
     КонецЦикла;            
     
     //ТЗ.ВыбратьСтроки();
     //Пока ТЗ.ПолучитьСтроку()=1 Цикл 
     //      Стр = ;
     //      Сообщить(Стр);
     //КонецЦикла;      
КонецПроцедуры


Выдает ошибку State 42000, native 102, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near '20071101'.

Что это может значить? И где можно прочитать про синтаксис виртуальных внешних таблиц (так по идее понятно что нач. дата, кон. дата, условие, измерения,ресурсы) - но как-то не особо работает
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Простой вопрос
Ответ #1 - 17. Марта 2008 :: 07:23
Печать  
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Dan777
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 17. Марта 2008
Re: Простой вопрос
Ответ #2 - 17. Марта 2008 :: 07:53
Печать  
Цитата:


Читаем по указанной ссылке ссылке:

$РегистрОстатки.<ИмяРегистра>([<ГраницаРасчета>][,        <Соединение>][,        <Условие>][,        <Измерение>][,<Ресурс>]
) [as <Алиас>]

Пишем запрос:
ТекстЗапросаSQL = "
     |SELECT
     |  *
     |FROM   
     |  $РегистрОстатки.МестаХранения (:ВыбДата // дата 01.11.2007
     |                                                            ,МестоХранения = :ВыбМестоХранения
     |                               ,МПЗ            // измерение
     |                               ,Количество) as Рег";      // ресурс
     Recordset.УстановитьТекстовыйПараметр("ВыбДата", ВыбДата);  // дата 01.11.2007
     Recordset.УстановитьТекстовыйПараметр("ВыбМестоХранения", ВыбМестоХранения); 

результат:  State 42000, native 102, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near '20071101'.



Вообще убираем дату:
ТекстЗапросаSQL = "
     |SELECT
     |  *
     |FROM   
     |  $РегистрОстатки.МестаХранения (
     |                                                            ,МестоХранения = :ВыбМестоХранения
     |                               ,МПЗ            // измерение
     |                               ,Количество) as Рег";      // ресурс
     Recordset.УстановитьТекстовыйПараметр("ВыбМестоХранения", ВыбМестоХранения); 

Результат: State 42000, native 102, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near ','.


Неправильное описание вирт. таблиц в учебнике или в чем может быть дело?
  
Наверх
 
IP записан
 
Dan777
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 17. Марта 2008
Re: Простой вопрос
Ответ #3 - 17. Марта 2008 :: 08:01
Печать  
Более того:

ТекстЗапросаSQL = " 
     |SELECT 
     |  * 
     |FROM    
     |  $РегистрОстатки.МестаХранения ()";


Результат: State 42000, native 102, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near ')'.
Нифиганепонятно.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Простой вопрос
Ответ #4 - 17. Марта 2008 :: 08:20
Печать  
Dan777 писал(а) 17. Марта 2008 :: 08:01:
Нифиганепонятно.

из документации
Виртуальные таблицы поддерживаются только для SQL формата ИБ.

написал не по теме
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Простой вопрос
Ответ #5 - 17. Марта 2008 :: 08:21
Печать  
+ на всякий случай
Цитата:
Виртуальные значения поддерживаются только для SQL формата ИБ.

написал не по теме
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Простой вопрос
Ответ #6 - 17. Марта 2008 :: 08:24
Печать  
Dan777 писал(а) 17. Марта 2008 :: 08:01:
Нифиганепонятно.

убери пробел
Цитата:
.МестаХранения (
  

1&&2&&3
Наверх
 
IP записан
 
Dan777
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 17. Марта 2008
Re: Простой вопрос
Ответ #7 - 17. Марта 2008 :: 08:24
Печать  
из документации
Цитата:
Виртуальные таблицы поддерживаются только для SQL формата ИБ.
[/quote]

Ценное замечание  Улыбка ну естественно только для SQL формата.

Теперь о том в чем было дело (даже хочется ругнуться матом):
вместо

$РегистрОстатки.МестаХранения ()";
оказывается следует писать
$РегистрОстатки.МестаХранения()";
т.е. то что у них анализирует строку запроса чувствительно к пробелу между названием регистра и скобкой

  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Простой вопрос
Ответ #8 - 17. Марта 2008 :: 08:26
Печать  
Вместо  $РегистрОстатки.МестаХранения ( напиши $РегистрОстатки.МестаХранения(.  Пробел там всю малину портит.

PS. поправил бы уже кто-нить эту фигню...  попробовал было сам разобраться и поправить, но чё-то не нашёл даже с какой стороны зайти  Печаль
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Простой вопрос
Ответ #9 - 17. Марта 2008 :: 08:30
Печать  
ADirks писал(а) 17. Марта 2008 :: 08:26:
PS. поправил бы уже кто-нить эту фигню...

интересно а при вызовет процедур/функций ты пробел тоже ставишь перед скобкой?
  

1&&2&&3
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Простой вопрос
Ответ #10 - 17. Марта 2008 :: 08:32
Печать  
trad писал(а) 17. Марта 2008 :: 08:30:
ADirks писал(а) 17. Марта 2008 :: 08:26:
PS. поправил бы уже кто-нить эту фигню...

интересно а при вызовет процедур/функций ты пробел тоже ставишь перед скобкой?


В 1С это не является ошибкой.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Простой вопрос
Ответ #11 - 17. Марта 2008 :: 08:34
Печать  
ладно молчу-молчу
заносит чето меня седня
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Простой вопрос
Ответ #12 - 17. Марта 2008 :: 08:35
Печать  
Может просто доку поправить чтоб оттуда никто не копировал ошибку?
  
Наверх
ICQ  
IP записан
 
Dan777
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 17. Марта 2008
Re: Простой вопрос
Ответ #13 - 17. Марта 2008 :: 08:44
Печать  
Nick писал(а) 17. Марта 2008 :: 08:35:
Может просто доку поправить чтоб оттуда никто не копировал ошибку?



В доке без пробела, похоже это я его туда нечаяно засунул ...
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Простой вопрос
Ответ #14 - 17. Марта 2008 :: 08:54
Печать  
Dan777 писал(а) 17. Марта 2008 :: 08:44:
Nick писал(а) 17. Марта 2008 :: 08:35:
Может просто доку поправить чтоб оттуда никто не копировал ошибку?



В доке без пробела, похоже это я его туда нечаяно засунул ...


Значит не ты первый. Очень странно как такую ошибку могут повторять разные люди Озадачен
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Простой вопрос
Ответ #15 - 17. Марта 2008 :: 08:55
Печать  
Копипастят  Смех
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Простой вопрос
Ответ #16 - 17. Марта 2008 :: 09:07
Печать  
trad писал(а) 17. Марта 2008 :: 08:30:
ADirks писал(а) 17. Марта 2008 :: 08:26:
PS. поправил бы уже кто-нить эту фигню...

интересно а при вызовет процедур/функций ты пробел тоже ставишь перед скобкой?

Я лично не ставлю, но многие ставят.  Дело вкуса.  Проблема в том, что эта ошибка из разряда недиагностируемых. Диагностика, которую метапарсер выдаёт, в данном случае абсолютно бесполезна. На эти грабли уже далеко не первый человек наступает.
  
Наверх
 
IP записан
 
Dan777
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 17. Марта 2008
Re: Простой вопрос
Ответ #17 - 17. Марта 2008 :: 09:11
Печать  
Nick писал(а) 17. Марта 2008 :: 08:54:
Dan777 писал(а) 17. Марта 2008 :: 08:44:
Nick писал(а) 17. Марта 2008 :: 08:35:
Может просто доку поправить чтоб оттуда никто не копировал ошибку?



В доке без пробела, похоже это я его туда нечаяно засунул ...


Значит не ты первый. Очень странно как такую ошибку могут повторять разные люди Озадачен




Странного тут ничего нет, обычно код анализирует возможные пробелы при формировании строки запроса.
Вот если строка (любая) чувствительна к позиции символа, регистру, пробелам и пр. - это специально оговаривается в документации.  Подмигивание
А вообще то неплохая вещь (прямые запросы), быстро работает.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Простой вопрос
Ответ #18 - 17. Марта 2008 :: 10:38
Печать  
ADirks писал(а) 17. Марта 2008 :: 08:26:
PS. поправил бы уже кто-нить эту фигню...  попробовал было сам разобраться и поправить, но чё-то не нашёл даже с какой стороны зайти  Печаль

Да, эта ошибка периодически людям нервы портит Улыбка
Лех, а что, настолько сложно все?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Простой вопрос
Ответ #19 - 17. Марта 2008 :: 11:13
Печать  
artbear писал(а) 17. Марта 2008 :: 10:38:
ADirks писал(а) 17. Марта 2008 :: 08:26:
PS. поправил бы уже кто-нить эту фигню...  попробовал было сам разобраться и поправить, но чё-то не нашёл даже с какой стороны зайти  Печаль

Да, эта ошибка периодически людям нервы портит Улыбка
Лех, а что, настолько сложно все?

Да фиг бы знал...  Я за 15 мин. не понял ничего, и решил пока оставить это дело.  Может вечерком предприму ещё одну попытку вдумчиво поковыряться.  Просто если кто-то уже ковырялся, то ведь ему проще будет, правда?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать