Был сабж на ИТЛенде простенький и доходчивый.
Я давно не юзал прямых запросов к ДБФ, но тут понадобилось. Сам текс запроса я еще навояю, но как грамотно к базе подключиться и выполнить запрос ни где не нашел. Рыть форум и мануалы уже задолбался. полезной инфы крохи.
вот к примеру это
Цитата:Статья крайне хорошая и дополнения о базе ДБФ очень полезны. Я как раз сейчас оптимизирую одну ДБФ базу и это мне очень пригодилось. Но есть и некоторые неточности:
1) Подключение к базе. Там такой текст:
Цитата:
Для DBF версии рекомендуется использовать объект “ OLEDBData”(для версии 1С++ 2.0.0.0 и выше) следующим образом:
База = СоздатьОбъект("OLEDBData");
Соединение = "Provider=VFPOLEDB.1;Deleted=Yes;Data Source=" + КаталогИБ()+ ";Mode=ReadWrite;Extended Properties="";User ID="";Password="";Mask Password=False;Collating Sequence=RUSSIAN;DSN=""";
Рез = База.Соединение(Соединение);
Запрос = База.СоздатьКоманду();
RS = СоздатьОбъект("ODBCRecordset");
SQL версия не требует дополнительной инструкции подключения к базе
//RS.УстБД1С();
ТекстЗапроса = "
|SELECT
| Спр.Code as Код,
| Спр.Descr as Наименование
|FROM
| sc433 as Спр";
ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
ТЗ.ВыбратьСтроку();
Для подключения к БД используется OLEDBData, а для выполнения запроса ODBCRecordset. Естественно, это не работает...
Плюс, строка подключения некорректная (хотя и работает). Например, строковые константы указаны неправильно (две кавычки в тексте 1С превращает в одну). Также в строке есть ненужные параметры. Вот про строку подключения из МСДН:
Цитата:
After the connection is open, you can query the value of ConnectionString to determine the data source evaluated.
A connection string includes the following attribute keywords and values:
Provider= cVFPOLEDBProvider
Specifies the Visual FoxPro OLE DB Provider (VFPOLEDB).
Data Source= cPath
Specifies the path to the Visual FoxPro database or a folder containing free tables. For example, c:\Microsoft Visual FoxPro\Samples\Data\Testdata.dbc
DSN= cDSNName
Specifies an existing ODBC DSN.
Mode= cMode
Specifies one of the following: Read, ReadWrite, Share Deny None (default), Share Deny Read, Share Deny Write, or Share Exclusive, which includes the previous two modes.
For a complete explanation of connection string syntax, see the Microsoft OLE DB 2.5 Programmer's Reference and SDK Guide.
Также есть неточность здесь:
Цитата:
И еще: в DBF версии в модуле проведения ЗАПРОСЫ НЕ РАБОТАЮТ! Т.к. при этом происходит начало транзакции и драйвер FoxPro не может ничего получить из базы.
ну раз здесь не точно, то как е-мое правильно.
Цитата:База = СоздатьОбъект("OLEDBData");
Соединение = "Provider=VFPOLEDB.1;Deleted=Yes;Data Source=" + КаталогИБ()+ ";Mode=ReadWrite;Extended Properties="";User ID="";Password="";Mask Password=False;Collating Sequence=RUSSIAN;DSN=""";
Рез = База.Соединение(Соединение);
Запрос = База.СоздатьКоманду();
RS = СоздатьОбъект("ODBCRecordset");
SQL версия не требует дополнительной инструкции подключения к базе
//RS.УстБД1С();
эта часть меня интересует. помогите пожалуйста. сил уже нет искать.
еще и свои исходники прощелкал. делал ведь как-то получение остатков прямым запросом