Имя: Пароль:
1C
 
траблы при SQL запросе к своей DBF базе.. хелп плиз!!
Ø
0 EuVod
 
28.07.05
18:12
Пытаюсь сделать универсальную обработку, которая позволяла бы формировать/выполнять SQL запросы к 1С базе, в сеансе с которой она вызывается (через ADO). В итоге возникло 2 проблемы:
1. Не удается выполнить запрос к текущей базе (т.е. если в строке соединения указать:
Data Source=КаталогИБ() (ну не буквально, а в выражении ессно). Причем к другим базам (в т.ч. открытым) достукивается нормально, а к свое в зависимости от использованного драйвера БД может написать что-то типа – «не могу открыть sc13.dbf, т.к. он занят «неизвестный пользователь»).
2. Сначала я использовала драйвер для ODBC:
ConnString = "driver={Microsoft Visual FoxPro Driver};SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;SourceDb="+Path;
НО, при выборке числового поля ругня (от имени _1С_ насколько я понял): 2тип переменной не поддерживается». Пытаюсь в запросе применить CAST – ругается (хотя вроде того же порядка функции MAX, MIN, TRIM, UPPER) – работают.
Ладно, думаю попробуем сбоку: взял «родной» ADO провайдер:
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Path;//Extended Properties=dBase III
Ура – числовые поля схавались нормально, НО, все русские буквы выводятся кракозябрами, и не работают агрегатные и прочие функции в запросе.. на попытку MAX говорит, что не может найти индекса, на попытку UPPER выводить в окне ошибки только один символ «:». Только TRIM и работает.
В итоге вопрос (наконец-то) как мне организовать запрос к свое текущей 1С DBF базе, и иметь все возможности Local SQL???
Спасибо!
1 Fram
 
28.07.05
18:33
для начала попробуй запускать базу НЕ монопольно
2 EuVod
 
28.07.05
18:58
Спасибо:).- действительно с этим 1-м траблом все до смешного просто...
но вот что делать со 2м?? почему не отрабатываются стандартный ф-ции Local SQL?? мне казалось уж на этом уровне все и всегда поддерживатеся невзирая на особенности DB провайдера?
3 EuVod
 
28.07.05
19:02
а то например
SELECT CAST(Descr AS CHARACTER(10))
FROM "SC13" S
(параметры соединения:
driver={Microsoft Visual FoxPro Driver};SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;SourceDb=C:\1C-develop\Razrabotka
)
Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC Visual FoxPro Driver]Function name is missing ).
4 BigHarry
 
28.07.05
19:08
(3) У Visual FoxPro Driver вместо CAST-а надо STR
5 EuVod
 
28.07.05
19:21
(4)
SELECT STR(Descr AS CHARACTER(10))
FROM "SC13" S
таже фигня - [Microsoft][ODBC Visual FoxPro Driver]Function name is missing ).
или там синтаксис другой? -я по разному пробовал, но с разными ошибками не сработало...
а где можно узнать, что вообще можно делать с этим драйвером? В Фоксе никогда не работал просто.
6 BigHarry
 
28.07.05
19:38
Стоп! А нафига поле Descr преобразовывать? Оно ведь и так текстовое. Это с числовыми полями из ADO-шных запросов у 1С-инфы проблемы...
7 EuVod
 
28.07.05
19:48
исключительно для примера (не)успешной работы ф-ции CAST (или как мне додсказали STR)
усе, сработало - просто я не въехал, что STR - это явное преобразование к строке, а не универсальный конвертер типа CAST
SELECT STR(sp1329 )...
все же вопрос остается - какие функции мне доступны в запросах при исползовании этого драйвера. можно ли работать с чиловыми полями не через строчный тип? а то че-то искал искал - ни в MSDN нету ни в инете не нашел..
заодно кто что может сказать про ADODB.Connetction.Properties collection. там кучая всяких пропертей - я их вывел себе на служебную ТЗ на форме, чтоб посмотреть, но что они значат и можно ли их как-то использовать?
8 BigHarry
 
28.07.05
19:52
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_foxhelp/html/folrfFunctions.asp
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.