Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Странное поведение Фокса (число прочтений - 5735 )
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Странное поведение Фокса
09. Августа 2007 :: 05:44
Печать  
Здравствуйте!

Мне надо получить в прямом запросе наименование элемента в верхнем регистре и без пробелов в середине и по концам я делаю так:

STRTRAN(ALLTRIM(UPPER(СПР.Descr)),' ','')

А он в итоге из строки: "2108-2215012 ШРУС наружный 3107К GLO,Италия"
делает: "2108-2215012ШРУСНАРУ"

Как сделать?
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение Фокса
Ответ #1 - 09. Августа 2007 :: 05:50
Печать  
У фокса есть баг, он плохо работает когда запрашивается в запросе много длинных строковых полей.
сам сталкивался, как бороть а фиг его...
  
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение Фокса
Ответ #2 - 09. Августа 2007 :: 06:41
Печать  
Donat писал(а) 09. Августа 2007 :: 05:44:
Мне надо получить в прямом запросе наименование элемента в верхнем регистре и без пробелов в середине и по концам я делаю так:

STRTRAN(ALLTRIM(UPPER(СПР.Descr)),' ','')

А что за STRTRAN ?
У меня не было никаких багов при использовании UPPER(ALLTRIM(СПР.Descr)) Улыбка
  

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


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Странное поведение Фокса
Ответ #3 - 09. Августа 2007 :: 07:21
Печать  
STRTRAN - функция заменяющая в строке переданной 1 параметром все вхождения строки переданной 2 параметром на строку переданную 3 параметром.
Она мне нужна чтобы удалить пробелы внутри строки.

Что интересно: в консоли VFP все работает нормально. Не работает только в прямом запросе.
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение Фокса
Ответ #4 - 09. Августа 2007 :: 07:23
Печать  
Donat писал(а) 09. Августа 2007 :: 07:21:
Что интересно: в консоли VFP все работает нормально. Не работает только в прямом запросе.

1. Покажи запрос.
2. Попытайся исключить оттуда строки по максимому
  
Наверх
IP записан
 
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Странное поведение Фокса
Ответ #5 - 09. Августа 2007 :: 07:28
Печать  
Вот запрос:

[code]
     Зпр.Текст = "
     |Select
     |      СПР.ID as [Элемент $Справочник.Номенклатура],
     |      СПР.Code as Код,
     |      0 as Хеш,
     |      $СПР._Остаток as Остаток,
     |      $СПР._Цена as Цена,
     |           ALLTRIM(СПР.Descr) as Представление,
     |      STRTRAN(ALLTRIM(UPPER(СПР.Descr)),' ','') as ИД
     |From
     |      $Справочник.Номенклатура as СПР
     |Where
     |      СПР.IsFolder = 2 AND
     |   СПР.IsMark = '' AND
     |   $СПР.НеВключатьВпрайс = 0
     |Order By
     |      СПР.Descr
     |";
[/code]

Исключить что-либо к сожалению будет тяжело все в принципе нужно.
  
Наверх
 
IP записан
 
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Странное поведение Фокса
Ответ #6 - 09. Августа 2007 :: 07:32
Печать  
Для эксперимента оставляю вот-так:
Код
Выбрать все
	Зпр.Текст = "
	|Select
	|	STRTRAN(ALLTRIM(UPPER(СПР.Descr)),' ','') as ИД
	|From
	|	$Справочник.Номенклатура as СПР
	|";

 



Итог один и тот-же.
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение Фокса
Ответ #7 - 09. Августа 2007 :: 07:36
Печать  
ну, у тебя все карты в руках, судя по текстам ты результат никуда не пихаешь, так что можешь свободно обработать полученный резльтат и 1С-ом...
  
Наверх
IP записан
 
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Странное поведение Фокса
Ответ #8 - 09. Августа 2007 :: 07:41
Печать  
trdm писал(а) 09. Августа 2007 :: 07:36:
ну, у тебя все карты в руках, судя по текстам ты результат никуда не пихаешь, так что можешь свободно обработать полученный резльтат и 1С-ом...


В принципе верно, но хотелось все сделать запросом. Ну ладно, будем мучать 1С. Печаль
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странное поведение Фокса
Ответ #9 - 09. Августа 2007 :: 08:16
Печать  
А если так
Код
Выбрать все
	Зпр.Текст = "
	|Select
	|	UPPER(STRTRAN(СПР.Descr),' ','') as ИД
	|From
	|	$Справочник.Номенклатура as СПР
	|";

 



Проверь
  

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


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Странное поведение Фокса
Ответ #10 - 09. Августа 2007 :: 12:08
Печать  
artbear писал(а) 09. Августа 2007 :: 08:16:
А если так
Код
Выбрать все
	Зпр.Текст = "
	|Select
	|	UPPER(STRTRAN(СПР.Descr),' ','') as ИД
	|From
	|	$Справочник.Номенклатура as СПР
	|";

 



Проверь



Проверил.
Эффект тот-же самый. Плачущий

Я вот уже начинаю думать, может у меня строка подключения не такая.
Использую класс ЗапросSQL из репозитария. Не может это быть связано со строкой подключения?
  
Наверх
 
IP записан
 
Vic
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 18. Мая 2007
Re: Странное поведение Фокса
Ответ #11 - 09. Августа 2007 :: 12:20
Печать  
Было такое, строки с видами документов обрезал
А если попробовать так
Код:
     Зпр.Текст = "
     |Select
     |      UPPER( STRTRAN( CAST(СПР.Descr as CHAR(ДлинаНаименованияСправочникаВКонфигураторе) ),' ','') as ИД
     |From
     |      $Справочник.Номенклатура as СПР
     |";

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


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Странное поведение Фокса
Ответ #12 - 09. Августа 2007 :: 12:47
Печать  
Vic писал(а) 09. Августа 2007 :: 12:20:
Было такое, строки с видами документов обрезал
А если попробовать так
Код:
     Зпр.Текст = "
     |Select
     |      UPPER( STRTRAN( CAST(СПР.Descr as CHAR(ДлинаНаименованияСправочникаВКонфигураторе) ),' ','') as ИД
     |From
     |      $Справочник.Номенклатура as СПР
     |";



Попробовал! Все безрезультатно.
Похоже все-таки прийдется пробегать ТЗ в 1С и заменять.
Кстати аналогичный код под MSSQL работает без проблем, а вот под Фоксом я застрял.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Странное поведение Фокса
Ответ #13 - 09. Августа 2007 :: 22:49
Печать  
ОФФ. А кто знает отчего при использовании SELECT TOP В OLEDB надо дописывать ORDER BY?  Очень довольный
  

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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Странное поведение Фокса
Ответ #14 - 10. Августа 2007 :: 04:56
Печать  
Цитата:
ОФФ. А кто знает отчего при использовании SELECT TOP В OLEDB надо дописывать ORDER BY?  Очень довольный


Потому что ты даешь команду - выбрать первые - а чтобы выбрать первые из списка
для начала этот список нужно упорядочить
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать