Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Проблема с типизацией в ВыполнитьСкалярный (число прочтений - 4885 )
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Проблема с типизацией в ВыполнитьСкалярный
21. Августа 2006 :: 23:21
Печать  
Столкнулся с такой ситуацией:
Код
Выбрать все
DB_samsung = СоздатьОбъект("ODBCDatabase");
DB_samsung.Соединение("Driver={SQL Server};Server=192.168.0.35;Database=Samsung;Uid=sa;");

RS = СоздатьОбъект("ODBCRecordSet");
RS.SetDatabase(DB_samsung);
ТекстЗапроса = "
	|SELECT
	|	LABOR_AMT AS [LABOR $Число],
	|	PARTS_AMT AS [PARTS_AMT $Число]
	|FROM
	|	approval_data
	|WHERE
	|	ASC_BILL_NO = :ASC_BILL_NO
	|";
RS.SetTextParam("ASC_BILL_NO", СокрЛП(НомерРемонта));
ТЗ = RS_samsung.ВыполнитьИнструкцию(ТекстЗапроса , , 1);
ТЗ.ВыбратьСтроки();
ТЗ.ПолучитьСтроку();
Сообщить(ТипЗначенияСтр(ТЗ.LABOR));
Сообщить(ТЗ.LABOR);


RS.SetTextParam("ASC_BILL_NO", СокрЛП(НомерРемонта));
BILL = RS.ВыполнитьСкалярный(ТекстЗапроса);
Сообщить(ТипЗначенияСтр(BILL.LABOR));
Сообщить(BILL.LABOR); 



Почему-то выводит
Число
15
Строка
15.00


Собственно почему в структуре строка а в ТЗ число?

Это внешняя база MSSQL 2000, тип поля varchar(10). В самом поле записано '15.00'
1cpp 2.0.5.0, от 18.08.06

P.S. Как только уже не конвертил... Печаль
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с типизацией в ВыполнитьСкалярный
Ответ #1 - 21. Августа 2006 :: 23:53
Печать  
Совсем мозги поехали...
Код
Выбрать все
|SELECT
|	LABOR_AMT AS [LABOR $Число]
|FROM
|	approval_data
|WHERE
|	ASC_BILL_NO = :ASC_BILL_NO
|"; 




Выполняю скалярный и получаю строку. Что-то не так с типом данных в SQL? Вроде varchar должен типизироваться нормально ,да и в ТЗ попадает число без проблем...
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с типизацией в ВыполнитьСкалярный
Ответ #2 - 22. Августа 2006 :: 00:13
Печать  
Усе, нашел в чем дело...

|SELECT
|      '15.00' AS [$Число]
|";

Выполняю инструкцию, и в ТЗ число
Выполняю скалярный - строка

|SELECT
|      '15.00'
|";

Выполняю инструкцию - в ТЗ строка
Выполняю скалярный - строка

И наконец
|SELECT
|      '15.00' AS [$Дата]
|";

Выполняю инструкцию - в ТЗ дата
Выполняю скалярный - строка


Получается, что типизация не используется у ВыполнитьСкалярный?
  
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Проблема с типизацией в ВыполнитьСкалярный
Ответ #3 - 22. Августа 2006 :: 12:34
Печать  
Arta писал(а) 22. Августа 2006 :: 00:13:
Получается, что типизация не используется у ВыполнитьСкалярный?


Есть такая цЫфра в этой букве

типзначениястр(гзапрос.Выполнитьскалярный ("select 15.00 as qq"))  = Число
типзначениястр(гзапрос.Выполнитьскалярный ("select '15.00' as qq"))  = Строка
типзначениястр(гзапрос.Выполнитьскалярный ("select '15.00' as [qq $Число]"))  = Строка
типзначениястр(гзапрос.Выполнитьскалярный ("select 15.00 as [qq $Строка]")) = Число
типзначениястр(гзапрос.Выполнитьскалярный ("select '     2   ' as [qq $справочник.контрагенты]"))  = Справочник
гзапрос.Выполнитьскалярный ("select '     2   ' as [qq $справочник.контрагенты]").Вид() = Контрагенты
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с типизацией в ВыполнитьСкалярный
Ответ #4 - 22. Августа 2006 :: 12:49
Печать  
Это баг или фича? Улыбка
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с типизацией в ВыполнитьСкалярный
Ответ #5 - 24. Августа 2006 :: 06:56
Печать  
Так правильно или нет текущее поведение этого метода?

P.S. С MySQL у меня возвращает число, а не строку.
  
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Проблема с типизацией в ВыполнитьСкалярный
Ответ #6 - 24. Августа 2006 :: 12:28
Печать  
Arta писал(а) 24. Августа 2006 :: 06:56:
Так правильно или нет текущее поведение этого метода?


А хрен его знает... Во всяком случае, оно такое, как есть, и это следует учитывать.
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с типизацией в ВыполнитьСкалярный
Ответ #7 - 24. Августа 2006 :: 12:32
Печать  
Напишу-ка я в багзиллу... Улыбка
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с типизацией в ВыполнитьСкалярный
Ответ #8 - 28. Августа 2006 :: 06:48
Печать  
Ошибка исправлена. Можно посмотреть ночник.
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с типизацией в ВыполнитьСкалярный
Ответ #9 - 28. Августа 2006 :: 09:01
Печать  
Спасибо!
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с типизацией в ВыполнитьСкалярный
Ответ #10 - 30. Августа 2006 :: 11:01
Печать  
Arta писал(а) 28. Августа 2006 :: 09:01:
Спасибо!

Фикса подтверждается?
  
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с типизацией в ВыполнитьСкалярный
Ответ #11 - 30. Августа 2006 :: 16:17
Печать  
Да, все гуд!

Еще раз спасибо!


P.S. Я пользую 2.5.0 Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать