Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Запрос на DBF работает на SQL нет (число прочтений - 5731 )
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Запрос на DBF работает на SQL нет
12. Сентября 2006 :: 17:34
Печать  
Есть такой запрос
Код
Выбрать все
SELECT
objid as [Авто $Справочник.Автомобили],
value as [Клиент $Справочник.Контрагенты], DATE, id
FROM _1SCONST
where value= '   CJR   ' and id= '  9T'
and DATE <= {d '2006-09-12'}
 



На DBFной базе работает. а на SQL ной выдает ошибку

State 22018, native 245, message [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value '  9T' to a column of data type int.

В чем может быть проблема?
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #1 - 13. Сентября 2006 :: 04:56
Печать  
Код
Выбрать все
Column_name 	Type
ROW_ID 		int
OBJID 		char
ID 		int
DATE 		datetime
VALUE 		varchar
DOCID 		char
TIME 		int
ACTNO 		int
LINENO_ 	smallint
TVALUE 		char
 

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



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #2 - 13. Сентября 2006 :: 05:48
Печать  
поле id
в dbf - строковое: char(4)
в sql - целочисленное: int
  

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



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #3 - 13. Сентября 2006 :: 05:54
Печать  
для правильного указания значения используй метаимя $ИсторияРеквизита
парсер сам распознает формат ИБ
  

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


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #4 - 13. Сентября 2006 :: 06:03
Печать  
trad писал(а) 13. Сентября 2006 :: 05:48:
поле id
в dbf - строковое: char(4)
в sql - целочисленное: int


OK. С эти понятно. Тогда проясните как в SQL получить ID.
Для DBF я его получаю следующим образом.
Код
Выбрать все
ID = Прав(_IDToStr(Мета.ИДРеквизитаСправочника("Автомобили","ВладелецАвто")),4); 


т.е. в данном случае это id= '  9T'
Может просто не надо делать _IDToStr?
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #5 - 13. Сентября 2006 :: 06:29
Печать  
повторюсь:
используй метаимя $ИсторияРеквизита
  

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


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #6 - 13. Сентября 2006 :: 06:35
Печать  
trad писал(а) 13. Сентября 2006 :: 05:54:
для правильного указания значения используй метаимя $ИсторияРеквизита
парсер сам распознает формат ИБ


Вот с этим самым $ИсторияРеквизита
В доке только и написано
Цитата:
идентификатор периодического реквизита:

${ИсторияРеквизита|PropertyHistory}.<Справочник>.<ПериодическийРеквизит> = ХХХХ



Как его использовать?
В общем то что надо...
Есть Справочник.Автомобили у него есть периодический реквизит ВладелецАвто типа Справочник.Контрагенты
Нужно получить все Автомобили выбранного Контрагента на дату...
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #7 - 13. Сентября 2006 :: 06:40
Печать  
$ПоследнееЗначение.{<ИмяСправочника> | Константа}.{<ИмяРеквизита | ИмяКонстанты>}(
       <ИдОбъекта>, <Дата>[, <Время>[, <ИДДокумента>]]
)

  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #8 - 13. Сентября 2006 :: 06:52
Печать  
Цитата:
$ПоследнееЗначение.{<ИмяСправочника> | Константа}.{<ИмяРеквизита | ИмяКонстанты>}(
       <ИдОбъекта>, <Дата>[, <Время>[, <ИДДокумента>]]
)



Пример привидите. Простой....
Ну не получилось у меня $ПоследнееЗначение на DBF. Вообще не работает.
А мне нужно что бы одна и та же конфа работала и на SQL и на DBF
Т.е. запросы должны быть максимально похожими...
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #9 - 13. Сентября 2006 :: 07:11
Печать  
да что там пример то приводить? хотя слету сам не понял что и как:
Код
Выбрать все
			//получаем рекомендованную цену прихода
			Запрос.УстановитьТекстовыйПараметр("ДатаЦены",ДатаЦены);
			ТексЗапроса="select
			|	$ПоследнееЗначение.ТоварПоставщик.ЦенаПрих(Цены.ID,:ДатаЦены) Цена
			|
			|from $Справочник.ТоварПоставщик as Цены (nolock)
			|";
			Запрос.ВыполнитьИнструкцию(ТексЗапроса,ТабЦен,1);
			КвоСтрок=ТабЦен.КоличествоСтрок();
 


но это пример с SQL, на ДБФ я начну работать сегодня-завтра... по идее этот пример должен и на DBF отработать... хотя однозначно утверждать не буду...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #10 - 13. Сентября 2006 :: 07:18
Печать  
Mashinist писал(а) 13. Сентября 2006 :: 06:35:
Как его использовать?

вместо: and id= '  9T'
напиши and id = $ИсторияРеквизита.Автомобили.ВладелецАвто
  

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



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #11 - 13. Сентября 2006 :: 07:22
Печать  
Mashinist писал(а) 13. Сентября 2006 :: 06:35:
В общем то что надо...
Есть Справочник.Автомобили у него есть периодический реквизит ВладелецАвто типа Справочник.Контрагенты
Нужно получить все Автомобили выбранного Контрагента на дату...

в принципе все понятно.
но есть подводный камень.
в задаче сказано что нужно получить автомобили этого контрагента на дату
а запросом в (0) ты получишь автомобили которыми когда-либо владел/владеет контрагент до этой даты

думай..
  

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


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #12 - 13. Сентября 2006 :: 07:26
Печать  
trad писал(а) 13. Сентября 2006 :: 07:18:
вместо: and id= '  9T'
напиши and id = $ИсторияРеквизита.Автомобили.ВладелецАвто


Вот это то что нужно.
Спасибо огромное.
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #13 - 13. Сентября 2006 :: 07:28
Печать  
trad писал(а) 13. Сентября 2006 :: 07:22:
Mashinist писал(а) 13. Сентября 2006 :: 06:35:
В общем то что надо...
Есть Справочник.Автомобили у него есть периодический реквизит ВладелецАвто типа Справочник.Контрагенты
Нужно получить все Автомобили выбранного Контрагента на дату...

в принципе все понятно.
но есть подводный камень.
в задаче сказано что нужно получить автомобили этого контрагента на дату
а запросом в (0) ты получишь автомобили которыми когда-либо владел/владеет контрагент до этой даты

думай..


Если Контрагент владел этим автомобилем до указанной даты, то на этого контрагента можно оформить документы  на указанную дату.
Где прокол в моих рассуждениях?
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос на DBF работает на SQL нет
Ответ #14 - 13. Сентября 2006 :: 09:51
Печать  
Mashinist писал(а) 13. Сентября 2006 :: 07:28:
Где прокол в моих рассуждениях?
другими словами:
по задаче тебе нужно анализировать только последних владельцев.
Автомобилем1 владел Петров, потом Иванов;
Автомобилем2 владел Иванов, потом Петров;
Например тубя интересуют автомобили Иванова;
Твоим запросом на текущий момент ты получишь как Авто1 так и Авто2, а нужно только Авто1.
Ведь Авто2 на тек.дату не Иванова.
  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать