Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Провайдер OLE DB от VFP SP2 (число прочтений - 22008 )
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Провайдер OLE DB от VFP SP2
03. Ноября 2007 :: 19:25
Печать  
Выдрал OLE DB провайдер для Фокса из 2-го сервис-пака для Фокспра. Теперь практически все тесты OLE DB из конфы тестирования 1С++ падают с ошибкой:
Цитата:
OleDBТесты:УжасLEDBData_СоздатьИСоединить() : FAILED! IDataInitialize::GetDataSource(): Формат строки инициализации не соответствует спецификации OLE DB.
лРезультатСоединения = OLEDBData.Соединение(СтрокаПодключения);


А я ведь говорил, что самая правильная строка подключения - такая:
Цитата:
           глСтрокаПрямогоПодключенияКБД = Шаблон ("Provider=VFPOLEDB.1; Mode=ReadWrite;
           |Data Source=[КаталогИБ ()];");


С такой строкой я даже не заметил перехода на новую разновидность провайдера.

Эх, вот не слушаете вы меня  Очень довольный

Кстати, вроде бы новый провайдер малость шустрее работает. Процентов эдак на 5. Улыбка
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Провайдер OLE DB от VFP SP2
Ответ #1 - 03. Ноября 2007 :: 20:24
Печать  
В новой редакции нужно закомментировать
"Deleted=Yes; "
видимо опция больше не поддерживается

т.е. правильно
Код
Выбрать все
Рез=глОлеДБ.Соединение("
	|Provider=VFPOLEDB.1;
//	|Deleted=Yes;
	|Null = Yes;
	|Exclusive = No;
	|SourceType = DBF;
	|Data Source=" + КаталогИБ() + ";
	|Mode=ReadWrite;
	|Extended Properties="""";
	|User ID="""";
	|Password="""";
	|Mask Password=False;
	|Collating Sequence=MACHINE;
	|DSN="""""); 



Хотя согласен, непонятно какие опции ставятся по умолчанию.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #2 - 03. Ноября 2007 :: 20:27
Печать  
kiruha писал(а) 03. Ноября 2007 :: 20:24:
В новой редакции нужно закомментировать
"Deleted=Yes; "
видимо опция больше не поддерживается

Эта опция и раньше "не поддерживалась"  Смех Можешь проверить Улыбка
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Провайдер OLE DB от VFP SP2
Ответ #3 - 03. Ноября 2007 :: 20:30
Печать  
Uzhast писал(а) 03. Ноября 2007 :: 20:27:
kiruha писал(а) 03. Ноября 2007 :: 20:24:
В новой редакции нужно закомментировать
"Deleted=Yes; "
видимо опция больше не поддерживается

Эта опция и раньше "не поддерживалась"  Смех Можешь проверить Улыбка


Она стоит по умолчанию у меня в рабочей базе.
На новом - не работает.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #4 - 03. Ноября 2007 :: 20:32
Печать  
kiruha писал(а) 03. Ноября 2007 :: 20:30:
Она стоит по умолчанию у меня в рабочей базе.
На новом - не работает.

Ну и что, что стоит? Главное, она не поддерживается - т.е. не влияет ни на что  Смех
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Провайдер OLE DB от VFP SP2
Ответ #5 - 03. Ноября 2007 :: 20:34
Печать  
Uzhast писал(а) 03. Ноября 2007 :: 20:32:
kiruha писал(а) 03. Ноября 2007 :: 20:30:
Она стоит по умолчанию у меня в рабочей базе.
На новом - не работает.

Ну и что, что стоит? Главное, она не поддерживается - т.е. не влияет ни на что  Смех


Ну и в чем спор? Улыбка
Я только говорю - что ошибка из за нее.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #6 - 03. Ноября 2007 :: 20:39
Печать  
kiruha писал(а) 03. Ноября 2007 :: 20:34:
Ну и в чем спор? Улыбка
Я только говорю - что ошибка из за нее.

Дык, смешно просто Улыбка Если больше "не поддерживается", значит раньше поддерживалась типа Улыбка

А вообще, я настаиваю на своем варианте строки подключения. В MSDN очень мало параметров у строки подключения для OLE DB. А та куча, что у тебя, скорее всего, включает параметры, которые раньше поддерживались ODBC-драйвером. А для OLE DB почти все это не нужно. Более того - вредно. Ибо может вылезти боком в случае изменения провайдера OLE DB, как это сейчас произошло.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Провайдер OLE DB от VFP SP2
Ответ #7 - 03. Ноября 2007 :: 20:49
Печать  
Uzhast писал(а) 03. Ноября 2007 :: 20:39:
kiruha писал(а) 03. Ноября 2007 :: 20:34:
Ну и в чем спор? Улыбка
Я только говорю - что ошибка из за нее.

Дык, смешно просто Улыбка Если больше "не поддерживается", значит раньше поддерживалась типа Улыбка

А вообще, я настаиваю на своем варианте строки подключения. В MSDN очень мало параметров у строки подключения для OLE DB. А та куча, что у тебя, скорее всего, включает параметры, которые раньше поддерживались ODBC-драйвером. А для OLE DB почти все это не нужно. Более того - вредно. Ибо может вылезти боком в случае изменения провайдера OLE DB, как это сейчас произошло.


Ну как минимум установка сортировки влияет очень значительно.
http://www.1cpp.ru/forum/YaBB.pl?num=1176287559

Т.е. этот параметр точно поддерживается, возможно, в твоем варианте она ставится в mashine по умолчанию.
А доверять Fox что он там поставит по умолчанию - не есть Good
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #8 - 03. Ноября 2007 :: 20:56
Печать  
kiruha писал(а) 03. Ноября 2007 :: 20:49:
Ну как минимум установка сортировки влияет очень значительно.
http://www.1cpp.ru/forum/YaBB.pl?num=1176287559

Т.е. этот параметр точно поддерживается, возможно, в твоем варианте она ставится в mashine по умолчанию.
А доверять Fox что он там поставит по умолчанию - не есть Good

Это она СЕЙЧАС влияет. Но в документации эта опция не указана. Поэтому, если в будущих версиях поддержку этой опции уберут, то они будут не так уж не правы. Потому что опция недокументированная. А таких вещей надо избегать.

А доверять установкам по умолчанию - как раз good. Ибо эти установки четко описаны в документации. Соответственно, fox эти вещи ОБЯЗАН поддерживать.

Если же ты не доверяешь установкам по умолчанию, то лучше использовать вещи типа SET и SYS.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Провайдер OLE DB от VFP SP2
Ответ #9 - 03. Ноября 2007 :: 21:00
Печать  
Лучше бы рассказал - появились ли еще какие то новые особенности (возможности) в последней версии
провайдера? Ну за 2 года должны же они были что то сделать...
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #10 - 03. Ноября 2007 :: 21:01
Печать  
kiruha писал(а) 03. Ноября 2007 :: 21:00:
Лучше бы рассказал - появились ли еще какие то новые особенности (возможности) в последней версии
провайдера? Ну за 2 года должны же они были что то сделать...

Я вот как раз хотел спросить что-то такое у тебя Улыбка
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #11 - 03. Ноября 2007 :: 21:15
Печать  
Могу только сказать, чего они не сделали Улыбка
1. SELECT TOP по прежнему тормозит
2. SET FILTER и SET KEY также отсутствуют. Т.е. поддержка заявлена, при использовании ошибка не возникает, но и ожидаемый эффект полностью отсутствует Улыбка

Похоже, OLE DB - это бедный родственник в системе FoxPro Улыбка А жаль. MSSQL, как я понимаю, вырос на основе опыта разработки FoxPro.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #12 - 05. Ноября 2007 :: 02:28
Печать  
Uzhast писал(а) 03. Ноября 2007 :: 21:15:
Могу только сказать, чего они не сделали Улыбка
1. SELECT TOP по прежнему тормозит
2. SET FILTER и SET KEY также отсутствуют. Т.е. поддержка заявлена, при использовании ошибка не возникает, но и ожидаемый эффект полностью отсутствует Улыбка

Похоже, OLE DB - это бедный родственник в системе FoxPro Улыбка А жаль. MSSQL, как я понимаю, вырос на основе опыта разработки FoxPro.


SET FILTER - а какой ожидаемый эффект?

Specifies a condition that records in the current table must meet to be accessible.


SET FILTER TO [lExpression] [IN nWorkArea | cTableAlias]



Parameters
lExpression


Specifies the condition that records must satisfy. If the current table is indexed on a field or fields specified in lExpression, Rushmore Query Optimization technology can optimize queries based on the field or fields.
IN nWorkArea| cTableAlias


Specifies the work area or table alias affected by the SET FILTER command. Use this clause to specify a work area or a table outside the current work area.
Remarks
Once SET FILTER is issued, only the records that satisfy the condition specified by the logical expression lExpression are available in the table. All commands that access the table respect the SET FILTER condition. A separate filter can be set for every open table.

The condition specified by SET FILTER isn't evaluated until the record pointer is moved in the table.

Issuing SET FILTER TO without lExpression turns off the filter for the current table.

SELECT – SQL does not respect the current filter condition.

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



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #13 - 05. Ноября 2007 :: 02:32
Печать  
Nick писал(а) 05. Ноября 2007 :: 02:28:
SELECT – SQL does not respect the current filter condition.

Спасибо, я читал Улыбка Эффект должен проявляться при использовании команд GOTO и SEEK. А его как раз и нет. Поэтому вместо простой реализации фильтра в ТП-провайдере пришлось извращаться Улыбка
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #14 - 05. Ноября 2007 :: 02:35
Печать  
Эээ... В смысле, при использовании GOTO и SKIP Улыбка
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #15 - 05. Ноября 2007 :: 03:01
Печать  
Uzhast писал(а) 05. Ноября 2007 :: 02:35:
Эээ... В смысле, при использовании GOTO и SKIP Улыбка

Видимо в справке не всё написано Печаль, попробовал в самом фоксе тоже самое. Видимо применять это можно только для:

Note: 
When using SET FILTER to filter data in a grid, use the SET KEY command to increase grid performance.


Вот это не пойдёт?


SCAN [NOOPTIMIZE] [Scope] [FOR lExpression1] [WHILE lExpression2]
   [Commands]
   [LOOP]
   [EXIT]
ENDSCAN

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



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #16 - 05. Ноября 2007 :: 21:14
Печать  
Nick писал(а) 05. Ноября 2007 :: 03:01:
Uzhast писал(а) 05. Ноября 2007 :: 02:35:
Эээ... В смысле, при использовании GOTO и SKIP Улыбка

Видимо в справке не всё написано Печаль, попробовал в самом фоксе тоже самое.

Вообще, странно, конечно Улыбка На форумах по фокспру так бодро советуют, как его использовать Улыбка (Вроде, даже нашего Вадимко там видел Улыбка ) Типа, ставим фильтр, потом достаточно переместить куда-нибудь текущий указатель (например, GO TOP) и все - фильтр работает. А я в prg все так и делал - эффекта 0. Вот и подумал, что это просто косяки OLE DB-провайдера. А, может, я его просто не так готовлю?  Круглые глаза


Nick писал(а) 05. Ноября 2007 :: 03:01:
Видимо применять это можно только для:

Note:  
When using SET FILTER to filter data in a grid, use the SET KEY command to increase grid performance.

Точнее, в этой цитате просто говорится, что для гридов более подходящим будет использование SET KEY, потому что SET KEY работает исключительно на индексах. А SET FILTER может фильтровать не только по индексному выражению, но и по любому другому. Что в общем случае может быть медленным. Однако, если выражение фильтра попадает в индекс, то, по идее, SET FILTER по производительности не должен отличаться от SET KEY. Как на самом деле обстоят дела - не знаю. Да и в любом случае SET KEY не работает тоже Подмигивание


Nick писал(а) 05. Ноября 2007 :: 03:01:
Вот это не пойдёт?


SCAN [NOOPTIMIZE] [Scope] [FOR lExpression1] [WHILE lExpression2]
  [Commands]
  [LOOP]
  [EXIT]
ENDSCAN


Аж ностальгия прошибла  Очень довольный Я когда-то ведь знал про эту хреновину и даже использовал. А сейчас забыл все нахрен. Сейчас у меня используется некая рукопашная реализация SCAN. Не знаю, будет ли положительный эффект от перехода на явный SCAN?...
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #17 - 06. Ноября 2007 :: 02:31
Печать  
Ну по крайней мере написано что это как то оптимизируется:

FOR lExpression1

Executes commands only for records for which lExpression1 evaluates to true (.T.). Including the FOR clause lets you filter out records you don't want scanned. Rushmore optimizes a query created with SCAN ... FOR if lExpression1 is an optimizable expression. For best performance, use an optimizable expression in the FOR clause. For more information, see SET OPTIMIZE and Using Rushmore Query Optimization to Speed Data Access.

Улыбка
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #18 - 06. Ноября 2007 :: 03:35
Печать  
Nick писал(а) 06. Ноября 2007 :: 02:31:
Ну по крайней мере написано что это как то оптимизируется:

FOR lExpression1

Executes commands only for records for which lExpression1 evaluates to true (.T.). Including the FOR clause lets you filter out records you don't want scanned. Rushmore optimizes a query created with SCAN ... FOR if lExpression1 is an optimizable expression. For best performance, use an optimizable expression in the FOR clause. For more information, see SET OPTIMIZE and Using Rushmore Query Optimization to Speed Data Access.

Улыбка

Ага, фактически SCAN FOR может сделать SEEK вместо меня, если выражение попадает в индекс. Хм. Наверное, это все же медленнее, чем сделать SEEK напрямую... С другой стороны SCAN FOR позволяет использовать выражения. Сейчас у меня в провайдере для фильтров нужно указывать сырое индексное выражение (например "  1S20071101"). А со SCAN FOR появится возможность указывать что-то вроде такого: IDJournal + DTOS (Date) >= $ЖурналДокументов.Банковские + DTOS (:ДатаНачала~~). Смотрится вроде как лучше Улыбка Надо будет проверить на скорость  Круглые глаза
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #19 - 06. Ноября 2007 :: 03:38
Печать  
А если он еще сможет нормально соптимизировать такое условие, то совсем хорошо будет:

IDJournal = $ЖурналДокументов.Банковские AND DTOS (Date) >=  DTOS (:ДатаНачала~~)
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #20 - 06. Ноября 2007 :: 05:42
Печать  
Неа, не делает SCAN FOR никаких сиков Улыбка
Такой код
Код
Выбрать все
	SCAN FOR DTOS (Date) = '20071026'
		RETURN IDDocDef + IDDoc + DocNo + DTOS (Date)
	ENDSCAN 


Отрабатывает за 300-350 мс.

А такой:
Код
Выбрать все
	IF SEEK ('20071026')
		RETURN IDDocDef + IDDoc + DocNo + DTOS (Date)
	ENDIF 


За 30-40 мс.

Или я что-то не так делаю?
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #21 - 06. Ноября 2007 :: 06:09
Печать  
Нет делает, добавил индекс по полю  Date, вот этот код даёт одинаковые результаты:

dd = SECONDS()
SET CENTURY on

d = CTOD('16/08/2007')
FOR i = 1 TO 10000
SCAN FOR Date = d
ENDSCAN
NEXT i
?SECONDS() - dd


dd = SECONDS()
FOR i = 1 TO 10000
     SEEK (d)
NEXT i            
?SECONDS() - dd
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #22 - 06. Ноября 2007 :: 06:12
Печать  
Nick писал(а) 06. Ноября 2007 :: 06:09:
Нет делает, добавил индекс по полю  Date, вот этот код даёт одинаковые результаты:

dd = SECONDS()
SET CENTURY on

d = CTOD('16/08/2007')
FOR i = 1 TO 10000
SCAN FOR Date = d
ENDSCAN
NEXT i
?SECONDS() - dd


dd = SECONDS()
FOR i = 1 TO 10000
     SEEK (d)
NEXT i            
?SECONDS() - dd


Хотя если поставить SET TALK OFF то всё возвращается на место - раз в 15 медленее Печаль, или эта установка просто на scan не действует
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #23 - 06. Ноября 2007 :: 06:20
Печать  
Nick писал(а) 06. Ноября 2007 :: 06:12:
Хотя если поставить SET TALK OFF то всё возвращается на место - раз в 15 медленее Печаль, или эта установка просто на scan не действует

Стоп. Ты где тестишь? В нормальном Фокспре что ли? Если так, то провайдер для OLE DB и Фокс - две большие разницы, как выясняется.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #24 - 06. Ноября 2007 :: 06:22
Печать  
Поэтому результаты для Фокспра могут быть не применимы в OLE DB.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #25 - 06. Ноября 2007 :: 06:25
Печать  
Uzhast писал(а) 06. Ноября 2007 :: 06:20:
Nick писал(а) 06. Ноября 2007 :: 06:12:
Хотя если поставить SET TALK OFF то всё возвращается на место - раз в 15 медленее Печаль, или эта установка просто на scan не действует

Стоп. Ты где тестишь? В нормальном Фокспре что ли? Если так, то провайдер для OLE DB и Фокс - две большие разницы, как выясняется.

Ну да в фокспре.
На основании чего это выясняется? Я думаю что OLE DB использует те же run time библиотеки что и фокс
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #26 - 06. Ноября 2007 :: 06:28
Печать  
Nick писал(а) 06. Ноября 2007 :: 06:25:
На основании чего это выясняется? Я думаю что OLE DB использует те же run time библиотеки что и фокс

На основании документации и, в частности, списка неподдерживаемых команд в OLE DB Улыбка
Так же вывод можно сделать на том факте, что не поддерживаются SET FILTER и SET KEY, хотя, по отзывам, многие нормально используют эти команды в нормальном фокспре.

OLE DB провайдер для VFP не использует НИКАКИХ внешних библиотек, кроме стандартных виндовых. Смотри "Dependency Walker"ом
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #27 - 06. Ноября 2007 :: 06:30
Печать  
Uzhast писал(а) 06. Ноября 2007 :: 06:28:
Nick писал(а) 06. Ноября 2007 :: 06:25:
На основании чего это выясняется? Я думаю что OLE DB использует те же run time библиотеки что и фокс

На основании документации и, в частности, списка неподдерживаемых команд в OLE DB Улыбка
Так же вывод можно сделать на том факте, что не поддерживаются SET FILTER и SET KEY, хотя, по отзывам, многие нормально используют эти команды в нормальном фокспре.

OLE DB провайдер для VFP не использует НИКАКИХ внешних библиотек, кроме стандартных виндовых. Смотри "Dependency Walker"ом


Про SET FILTER и SET KEY я тебе писал что пробовал в фокспре там они тоже не работают как ты хочешь, а гридки фильтруют!
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #28 - 06. Ноября 2007 :: 06:32
Печать  
Nick писал(а) 06. Ноября 2007 :: 06:30:
Про SET FILTER и SET KEY я тебе писал что пробовал в фокспре там они тоже не работают как ты хочешь, а гридки фильтруют!

А на другом форуме (sql.ru) я читал, что в самом Фоксе SET FILTER и SET KEY работают Улыбка
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #29 - 06. Ноября 2007 :: 06:35
Печать  
Uzhast писал(а) 06. Ноября 2007 :: 06:32:
Nick писал(а) 06. Ноября 2007 :: 06:30:
Про SET FILTER и SET KEY я тебе писал что пробовал в фокспре там они тоже не работают как ты хочешь, а гридки фильтруют!

А на другом форуме (sql.ru) я читал, что в самом Фоксе SET FILTER и SET KEY работают Улыбка


Чиво тут читать?
1. Делаю фильтр так чтоб первая запись в него не попадала
2. Делаю goto 1
3. RECNO()  = 1
!!!
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #30 - 06. Ноября 2007 :: 06:48
Печать  
А вот для Scan  SET FILTER TO  работает
т.е. вот так:
SET FILTER TO Date == d
FOR i = 1 TO 10000
SCAN
     EXIT
ENDSCAN
NEXT i

Попробуй через провайдер, но результат тот же что и для SCAN FOR
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #31 - 06. Ноября 2007 :: 06:51
Печать  
а  если в место Set FILTER использовать  SET KEY - то и результат от SEEK отличается всего раз в 5 Улыбка
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #32 - 06. Ноября 2007 :: 07:23
Печать  
Nick писал(а) 06. Ноября 2007 :: 06:35:
Чиво тут читать?

Ну вот, например http://www.sql.ru/forum/actualthread.aspx?bid=37&tid=330688&hl=set+filter:
Цитата:
Фильтр – это некое ограничение, накладываемое при перемещении указателя записи. Причем вычисление выражения фильтра происходит каждый раз при попытке переместить указатель. Логика примерно следующая.

При подаче команды SKIP FoxPro перемещает указатель записи на следующую запись. Если эта запись не удовлетворяет условию фильтра, то FoxPro автоматически перемещает указатель на следующую запись. Опять проверяет условие фильтра. И так до тех пор, пока не будет найдена запись, удовлетворяющая условию фильтра или же не будет достигнут конец таблицы.

Другими словами, фильтр, это не что-то вычисленное один раз при подаче команды SET FILTER. Это условие, которые проверяется каждый раз при попытке перемещения на очередную запись.

Именно поэтому, если условию фильтра не соответствует большое количество записей, то перемещение по такой таблице будет происходить чрезвычайно медленно. Просто слишком возрастет время поиска очередной записи удовлетворяющей условию фильтра.

Имеет смысл использовать фильтр для отсечения небольшого количества записей. Если же надо отфильтровать (отбросить) много записей, то лучше использовать Local View или Select-SQL.


Или из онлайнового МСДН http://msdn2.microsoft.com/en-us/library/52b84ce3(VS.80).aspx:
Цитата:
You can set a separate filter for every open table. In most cases, once you issue SET FILTER, you can retrieve only the records in the table that satisfy the condition specified by the logical expression lExpression. When the applied scope clause references records in relative terms, all commands that allow a scope clause will respect the SET FILTER condition. However, any command that uses a stated or implied scope of RECORD nRecordNumber, including GOTO, REPLACE, and others, will not respect the filter. Such commands always act on the specified record, provided the record exists. This is true even if the filter excludes that record. Note, however, that the GOTO TOP/BOTTOM command does respect the filter condition.


Так что дело темное...
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #33 - 06. Ноября 2007 :: 07:25
Печать  
А SET FILTER + SCAN заюзать попробую. Спасибо за раскопки Улыбка
В принципе, мне же не обязательно заюзать SET FILTER любой ценой Улыбка Но если с ним будет удобнее, то почему бы и нет?
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #34 - 06. Ноября 2007 :: 07:32
Печать  
О, только сейчас заметил, что у тебя GOTO 1, а не GOTO TOP. А с GOTO TOP не заработает? Улыбка Вроде по МСДН должно сработать.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #35 - 06. Ноября 2007 :: 07:32
Печать  
так у тебя там только про SKIP говорится что работает
Так что ни чего тёмного
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #36 - 06. Ноября 2007 :: 07:36
Печать  
Uzhast писал(а) 06. Ноября 2007 :: 07:32:
О, только сейчас заметил, что у тебя GOTO 1, а не GOTO TOP. А с GOTO TOP не заработает? Улыбка Вроде по МСДН должно сработать.

с GOTO TOP РАБОТАЕТ!
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #37 - 06. Ноября 2007 :: 07:37
Печать  
Nick писал(а) 06. Ноября 2007 :: 07:36:
Uzhast писал(а) 06. Ноября 2007 :: 07:32:
О, только сейчас заметил, что у тебя GOTO 1, а не GOTO TOP. А с GOTO TOP не заработает? Улыбка Вроде по МСДН должно сработать.

с GOTO TOP РАБОТАЕТ!

YEEEEEESSSS!  Улыбка  Очень довольный
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #38 - 06. Ноября 2007 :: 07:38
Печать  
Ну, OLE DB, погоди! Подмигивание
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Провайдер OLE DB от VFP SP2
Ответ #39 - 06. Ноября 2007 :: 07:46
Печать  
Uzhast писал(а) 06. Ноября 2007 :: 07:38:
Ну, OLE DB, погоди! Подмигивание

С нетерпением ждёмс Улыбка
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Провайдер OLE DB от VFP SP2
Ответ #40 - 02. Декабря 2007 :: 11:49
Печать  
Хотелось бы узнать - новый провайдер был уже кем то испытан?
Можно его ставить в живую базу?
Какие то глюки не отмечены?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Провайдер OLE DB от VFP SP2
Ответ #41 - 22. Февраля 2008 :: 10:13
Печать  
На сайте
http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA...

Официально выложена новая версия драйвера VFPOLEDB
Цитата:
"MICROSOFT OLE DB PROVIDER FOR VISUAL FOXPRO 9.0 SP2"

Цитата:
File Name:      VFPOLEDBSetup.msi
Version:      1.2
Date Published:      2/14/2008



И теперь это файл msi а не exe
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать