Чтение данных из dbf из 8.3 1 с #768861


#0 by olegon7
Имеются файлы dbf visual fox pro c memo полями файлы большие больше миллиона записей хотелось бы организовать чтение dbf запросами причем с временными таблицами...чтобы выполнялись друг за другом...для последующей загрузки в регистр сведений какой порекомендуете драйвер(оптимальный) и почему запрос мой второй не выполняется? Connection.Open("DRIVER={Microsoft FoxPro VFP Driver (*.dbf)};SourceDB=d:dbf; SourceType=DBF; Exclusive=No;BackgroundFetch=Yes;Collate=Russian;Null=No;Deleted=Yes;");    Тз.Колонки.Добавить("ЛицевойСчет_2", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки));    Тз.Колонки.Добавить("ПоказаниеПоследующее", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки));    Тз.Колонки.Добавить("ОплаченныйМесяц", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки));
#1 by aka AMIGO
Не знаю причину, но.. извини, мне не очень нравится, что ты выбрал имя переменной, совпадающее с именем функции 1С: "Строка"
#2 by ptiz
Для начала: Сообщить(ОписаниеОшибки); вставь перед Сообщить ("Проблемы с выполнением запроса");
#3 by olegon7
ошибки нет запрос второй не выполняется здесь два запроса результат первого помещаю во времен табл темп1 а затем выполняю второй запрос(должен выполнятся , но он не выполняется)
#4 by olegon7
может что -то в запросе неправильно написал?
#5 by olegon7
Собака зарыта в запросе втором - он просто не выполняется- только первый выполняется. Вообще можно так последовательно запросы выполнять с временными таблицами?
#6 by Записьдампа
Исполнение пакетного запроса и возврат его результата - на усмотрении драйвера и провайдера. То, что, например, провайдер MSSQL выполняет все и возвращает последний результат - его право, но не обязанность. Смирись.
#7 by hhhh
может
#8 by Записьдампа
И убедится, что kartab есть индекс по lic_sch
#9 by cons74
Немного не в тему, но... Я из dbf в  access втягивал, и там уже запрос строил. А таблицу - результат  в xls и оттуда в 1С
#10 by olegon7
о вложенном запросе тоже думал , но он медленнее чем пакетный запрос. Может знаете какой драйвер умеет работать с пакетами запросов? Еще вопрос таблица kartkvgd поля yearmon   тип дата    дата последней оплаты      lic_sch   тип строка  лицевой счет      data_new  тип число   показания записей более миллиона , ни одно поле не уникально как правильно выбрать всех абонентов(неповторяющихся) по последней оплате правильно ли я написал запрос вот этот? на поле data_new нет ни группировки ни агрегатной функции select MAX(kartkvgd.yearmon) AS yearmon,     |kartkvgd.lic_sch,
#11 by Записьдампа
Ну дык сымитируй пакетный запрос через несколько вызовов. create table там, insert, select, drop... Индексы по вкусу.
#12 by olegon7
При выполнеии вложенного бьет ошибку {Обработка.импортдбф.Форма.Форма.Форма}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC Visual FoxPro Driver]Syntax error. Неправильно составлен запрос или драйвер не умеет
#13 by Записьдампа
Там чистым английским ведь написано, что.
#15 by aka AMIGO
Капслок на форуме запрещен.
#16 by olegon7
Ругается на запрос, который вы предложили. Не подскажите как составить пакетный через несколько вызовов
#17 by Записьдампа
Вполне может быть, я его не проверял. Не надо составлять пакетный запрос. Надо составить несколько запросов, каждый из которых реализует часть логики - создание таблицы, заполнение ее данными, использование таблицы для получения результатов, и возможно удаление таблицы. Конкретный код я тебе писать не буду, извини.
#18 by Записьдампа
В возможно ошибка в GROUP BY
#19 by olegon7
может кто подключал ole db драйвер к dbf? у меня сервер win serv 2008 1c x86 сервер  x86  субд ms sql драйвер установил VFPOLEDB x86 последний но программа ругается на него поставщик не найден НО!!!в файловом варианте все работает я так понимаю дело в разрядности драйвера кто нибудь ставил x64 разрядный драйвер ole db и есть ли он вообще в природе
#20 by George Wheels
#21 by olegon7
как реализовать несколько запросов исходя из моего программного кода? кажДый раз создавать новый record set? Connection.Open("DRIVER={Microsoft FoxPro VFP Driver (*.dbf)};SourceDB=d:dbf; SourceType=DBF; Exclusive=No;BackgroundFetch=Yes;Collate=Russian;Null=No;Deleted=Yes;"); Connection.Open("DRIVER={Microsoft FoxPro VFP Driver (*.dbf)};SourceDB=d:dbf; SourceType=DBF; Exclusive=No;BackgroundFetch=Yes;Collate=Russian;Null=No;Deleted=Yes;");
#22 by olegon7
приведите работающий пример на несколько вызовов? что бы можно было обращаться к таблицам можно схемно
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С