Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) ODBC & DBF (число прочтений - 11408 )
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
ODBC & DBF
25. Июля 2006 :: 05:51
Печать  
После долгих мытарств с OLEDB провайдером, скачал и установил ODBC драйвер Фокса (спасибо старому доброму Itland-у http://itland.ru/forum//index.php?showtopic=11439&hl=odbc+driver) и на тривиальной DBF-версии 1С объет "ODBCDatabase" заработал на всю катушку. Вопрос: а зачем OLEDB provider?
И еще: я пробовал на ХР, а как ведут себя другие ОС?
  

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



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #1 - 25. Июля 2006 :: 06:05
Печать  
А что за мытарства?
  
Наверх
ICQ  
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #2 - 25. Июля 2006 :: 06:49
Печать  
Цитата:
А что за мытарства?

Постоянно приходится искать обходные пути для решения сложных задач, в итоге текст запроса для OLEDB сильно отличается от ODBC, и все равно решается не все. При использовании ODBC драйвера таких проблем должно бытьменьше, сейчас анализирую.
  

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



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #3 - 25. Июля 2006 :: 07:27
Печать  
Могу сразу сказать, что ODBC-driver for foxpro v6 не стоит даже рассматривать как вариант.
  
Наверх
ICQ  
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #4 - 25. Июля 2006 :: 08:04
Печать  
Цитата:
зачем OLEDB provider?

Вот здесь я отвечу сам: получается, что при запросе к DBF без него в ряде случае не обойтись. Напр. УложитьСписокОбъектов(): при выполнении метода ODBC даже после подключения драйвера Фокспро генерирует таблицу SQL, а запрос выполняет к таблицам DBF, и , по всей вероятности, при всех методах, генерирующих временную таблицу и при подключении любого другого драйвера. Что же в дальнейшем?
Пока пришлось обойтись использованием OLEDB провайдера:
Код
Выбрать все
	Перем Temp;
	OLEDB = СоздатьОбъект("OLEDBData");
	OLEDB.Соединение("Provider=VFPOLEDB.1;
	|Deleted=Yes;
	|Mode=ReadWrite;
	|Collating Sequence=RUSSIAN;
	|Data Source=" + КаталогИБ());
	Qr = OLEDB.СоздатьКоманду();
	Qr.УложитьСписокОбъектов(Группа, Temp,"Номенклатура");

	ODBC = СоздатьОбъект("ODBCDatabase");
	Рез = ODBC.Соединение("DRIVER=Microsoft Visual FoxPro Driver;
	|Deleted=Yes;
	|Null=Yes;
	|Collate=RUSSIAN;
	|BackgroundFetch=Yes;
	|Exclusive=No;
	|SourceType=DBF;
	|SourceDB=" + КаталогИБ());
	Если Рез = 0 Тогда
		ODBC.Закрыть();
		Сообщить("Ошибка ODBC подключения к базе!"+ ODBC.ПолучитьОписаниеОшибки(),"!!!");
		Возврат;
	КонецЕсли;
	Rs = СоздатьОбъект("ODBCRecordSet");
	Rs.УстБД(ODBC);
	ТекстЗапроса = "
	|SELECT
	|	Спр.Code  as Код,
	|	Спр.ID as [Наименование $Справочник.Номенклатура]
	|FROM
	|	$Справочник.Номенклатура as Спр
	|WHERE
	|  Спр.ID IN (SELECT Val FROM  "+Temp+")
	|";
	ТЗ = Rs.ВыполнитьИнструкцию(ТекстЗапроса);
	ТЗ.ВыбратьСтроку();
 


Что скажете, Господа?
  

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



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #5 - 25. Июля 2006 :: 08:14
Печать  
Цитата:
а запрос выполняет к таблицам DBF, и , по всей вероятности, при всех методах, генерирующих временную таблицу и при подключении любого другого драйвера. Что же в дальнейшем?
Пока пришлось обойтись использованием OLEDB провайдера:

Читал несколько раз...
  
Наверх
ICQ  
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #6 - 25. Июля 2006 :: 08:43
Печать  
Цитата:
Читал несколько раз

Попробую еще раз.
После подключения фоксовского драйвера вполняю запрос. При этом укладываю список объектов и получаю сообщение "temp.DBF" не найден, а методы УложитьСписокОбъектов и УложитьСписокОбъектов13 генерирует таблицу SQL.
  

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



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #7 - 25. Июля 2006 :: 09:12
Печать  
1. Зачем смешивать два метода доступа (oledb/odbc)? Обычно хватает одного.
2. ODBC-driver не дружит с вложенными (nested query) запросами. В твоем случае можно переписать через INNER JOIN.
  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #8 - 25. Июля 2006 :: 09:16
Печать  
  
Наверх
ICQ  
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #9 - 25. Июля 2006 :: 09:32
Печать  
Пришлось смешивать, потому, что укладывает список в SQL, а запрос делает к DBF, вот и укладываю сначала насильно в DBF
  

Константин
Наверх
 
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #10 - 26. Июля 2006 :: 11:18
Печать  
Кстати этот вопрос относится и к другим драйверам: выборка ведется в файлах формата драйвера, а объект ODBC оперирует таблицами SQL. Как быть?
  

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



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #11 - 26. Июля 2006 :: 11:25
Печать  
Потому как разные провайдеры или драйвера имеют разные ограничения. И делать одинаковый функционал для всего не очень хорошая затея.
  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ODBC & DBF
Ответ #12 - 26. Июля 2006 :: 11:26
Печать  
Может стоит уточнить проблему?
Народ чего посоветует, может.
  
Наверх
ICQ  
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: ODBC & DBF
Ответ #13 - 24. Августа 2006 :: 17:02
Печать  
Цитата:
Пришлось смешивать, потому, что укладывает список в SQL, а запрос делает к DBF, вот и укладываю сначала насильно в DBF

Дела давно минувших лет...
Сейчас столкнулся с теми же граблями УложитьСписокОбъектов для VFP ODBC в DBF не работает Печаль((  Это ограничение драйвера ? Для DBF только как делает КилоГрамм ?
  
Наверх
 
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: ODBC & DBF
Ответ #14 - 25. Августа 2006 :: 16:56
Печать  
Прошли сутки...
Вопрос разработчикам объекта ODBC в 1С++ : Можно ли решить эту проблему для DBF или это невозможно принципиально для этого драйвера ?
Вопрос КилоГрамму : Удалось ли как-то двинуть ситуацию или все также как описано выше ?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать