|
|
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Дурацкий вопрос возник.. Вот я обращаюсь к файлу БД (dbf/dbase IV) посредством компонентов ADO из VBA(Excel). Мне нужно посчитать количество некоторых строк в файле/таблице БД и затем записать их в массив. Есть два алгоритма: 1. посчитать количество строк средствами SQL языка, т.е. таким запросом: Код: plaintext Код: plaintext затем вторым запросом Код: plaintext для каждого из запросов открывается рекордсет(!) просьба учитывать и это.. 2. вытаскиваем данные запросом: Код: plaintext Код: plaintext 1. 2. 3. Код: plaintext при этом рекордсет открывается один раз.. Какой способ будет оптимальнее??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 08:42 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 09:42 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
проходящий., я же написал, что он ругается на отсутствие оператора при использовании подобной конструкции.. да ивопрос в другом был пвообще-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 10:06 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Евгений_Анатольевичпроходящий., я же написал, что он ругается на отсутствие оператора при использовании подобной конструкции.. да ивопрос в другом был пвообще-то... Во-первых, кострукцию надо бы прочитать и рассмотреть подробно не забывая внимательно ее сравнить с оригиналом. Во-вторых, правилом хорошего тона явлчется приведение копии сообшения об ошибке, а не ее переводили интерпретацию, равно как и строки, на которую выдается ругань. В-третьих, вот такой код у меня почему-то работает. Что я не так делаю? Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 10:14 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
проходящий., ок, сейчас приведу пример ошибки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 10:26 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Вот такая ошибки при таком запросе: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 10:34 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Евгений_АнатольевичВот такая ошибки при таком запросе: Код: plaintext Это не ошибка фокса. Это ошибка VB. Покажите кусок кода, на который ругается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 10:38 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
проходящий.Евгений_АнатольевичВот такая ошибки при таком запросе: Код: plaintext Это не ошибка фокса. Это ошибка VB. Покажите кусок кода, на который ругается. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 10:41 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
на эту строку: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 10:43 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Где-то что-то не так с настройкой рекордсета. Строка запроса вроде как должна быть передана объекту Command? Короче, до фокса дело не доходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 10:52 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
проходящий.Где-то что-то не так с настройкой рекордсета. Строка запроса вроде как должна быть передана объекту Command? Короче, до фокса дело не доходит. не обязательно создавать объект command для передачи запроса, можно и таким способом, но ради чистоты эксперимента я добавлю еще одно промежуточное звено в виде объекта Command и напишу результат.. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 10:56 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. как я и предполагал.. точно такая же ошибка в момент исполнения: .Execute проблема остается открытой.. ктсати про фокс никто и не говорил, что он глючит.. обращение вообще к (dbf/dbase IV) идет, что указано в 1 сообщение темы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 11:07 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
ну если проблема не в БД, то можно ли тред перенести в другой раздел? наверное лучше в форум по Visual Basic.. хотя вопрос был отчасти и по архитектуре построения запроса к БД.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 11:10 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Единственное, что могу предложить - использовать VFP OLEDB Provider. Он такой синтаксис точно поддерживает. Во всех остальных случаях вопрос явно не в тот форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 11:36 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
проходящий.Единственное, что могу предложить - использовать VFP OLEDB Provider. Он такой синтаксис точно поддерживает. Во всех остальных случаях вопрос явно не в тот форум. вообще-то использовать этот драйвер в данном случае неверно.. то соединение - которое использовалось является стандартом подключения к dbf/foxpro.. а по поводу соответствия тематики вы к сожалению не дочитали сам вопрос до конца.. :) Но спасибо, что попытались помочь и разобраться в друго проблеме.. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 11:45 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Евгений_Анатольевичпроходящий.Единственное, что могу предложить - использовать VFP OLEDB Provider. Он такой синтаксис точно поддерживает. Во всех остальных случаях вопрос явно не в тот форум. вообще-то использовать этот драйвер в данном случае неверно.. то соединение - которое использовалось является стандартом подключения к dbf/foxpro.. И что это за стандарт такой объявился? а по поводу соответствия тематики вы к сожалению не дочитали сам вопрос до конца.. :) И это можно доказать? Но спасибо, что попытались помочь и разобраться в друго проблеме.. :) Dbf и FoxPro - отнюдь не полные синонимы. Потому не всякий вопрос, касающийся dbf относится и к фоксу. И ADO вместе с его рекордсетами для доступа к данным фоксу как собаке пятая нога. Потому рассмотреть с помощью знатоков фокса оптимальность неиспользующихся в фоксе методов несколько наивно. Отсюда вывод - если только не используется фоксовый драйвер в исходном вопросе ничего относящегося к фоксу нет и вопрос должен обсуждаться в другом форуме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 11:58 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
проходящий., http://connectionstrings.com/?carrier=dbffoxpro :) никто и не спорит про другой форум.. скажем часть вопроса можно проще озвучить было: что быстрее работает: подсчет строк средствами SQL языка или если пробежаться по рекордсету курсором? потому что у меня и тот и другой случай приблизительно одинаково времени заняли "на глаз".. а хотелось бы точно знать.. ведь по идее запрос с COUNT должен работать оптимальнее.. с другой стороны во втором случае один раз идет обращение к БД а в первом два запроса.. т.е. оже различное время уйдет на обработку.. это проблема имеет 2 ракурса как со стороны программирования, так и со стороны оптимальных запросов к БД.. учитывая, что DBA у нас зачастую имеют приличный опыт еще и в программировании, ну и лучше ориентируются в скорости работы с такими БД как фокс или dbase - я и поместил вопрос сюда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 12:06 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Евгений_Анатольевич! По приведенной вами ссылке читаем "For your foxpro 2.x DBF you do not need to use dBase or Jet driver, check out the "Visual FoxPro / FoxPro 2.x" section instead and use the VFP driver. Visual FoxPro ODBC and OLEDB drivers work for all Foxpro tables including the oldest foxbase tables and dBaseII, dBaseIII, Clipper files as well." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 12:17 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Евгений_Анатольевичпроходящий., http://connectionstrings.com/?carrier=dbffoxpro И какой драйвер в этом случае работает? Фоксовый? Если нет, то каким боком тут фокс? Только из-за DBF? Но в нем только данные и никакой фоксовой логики нет. :) никто и не спорит про другой форум.. скажем часть вопроса можно проще озвучить было: что быстрее работает: подсчет строк средствами SQL языка или если пробежаться по рекордсету курсором? В фоксе нет рекордсетов и потому невозможно измерить скорость пробегания по ним. DBF - это только данные. Скорость доступа определяется не ими, а используемым драйвером. Которые могут быть совершено не фоксовыми. Опять мимо кассы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 12:22 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Fffffffffffff Евгений_Анатольевич! По приведенной вами ссылке читаем "For your foxpro 2.x DBF you do not need to use dBase or Jet driver, check out the "Visual FoxPro / FoxPro 2.x" section instead and use the VFP driver. Visual FoxPro ODBC and OLEDB drivers work for all Foxpro tables including the oldest foxbase tables and dBaseII, dBaseIII, Clipper files as well." пытаюсь прикрутить обращения через драйвер VFP.. пока ругается на то что не может найти поставщика.. проходящий. , не стоит быть столь критичным.. людям свойственно ошибаться.. Модератор: Тема перенесена из форума "FoxPro, Visual FoxPro". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 12:36 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Люди, отзовитесь!!! :) Очень нужна помощь.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 16:17 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
> Автор: Евгений_Анатольевич > Люди, отзовитесь!!! :) Очень нужна помощь.. Этот провайдер пробовали? -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 17:11 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
а если сделать так Код: plaintext 1. 2. I Have Nine Lives You Have One Only THINK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 17:22 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос > Автор: Евгений_Анатольевич > Люди, отзовитесь!!! :) Очень нужна помощь.. Этот провайдер пробовали? -- С уважением Горбонос Игорь Леонидович Нет, и если честно - не понимаю почему при неправильном синтаксисе надо переходить сразу на других провайдеров :) Могу сказать на данный момент с уверенностью вот что: синтаксис запросов для провайдера Microsoft.Jet.OLEDB.4.0 (как минимум для файлов dbase IV) полностью идентичен синтаксису запросов в Access!!!! Почему я это отверждаю? потому что первая проблема которая озвучена выше - имеет место быть с точно таким же описанием ошибки в Access!!! Только что создал в нем базу и проверил!!! Кроме того была проблема, которую не стал на форуме подымать, с JOIN синтаксис у которых в Access отличается от аналогичных функций в MSSQL!!!! Теперь только осталось установить как же правильно использовать DISTINCT в запросах совместно с COUNT!!! Вот такие пироги с котятами :) драйвера тут не при чем :) HandKotа если сделать так Код: plaintext 1. 2. I Have Nine Lives You Have One Only THINK! А зачем? Не очень понял.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 17:46 |
|
||
|
подсчет строк в таблице DBF
|
|||
|---|---|---|---|
|
#18+
Порылся я на форуме..Подвожу итог изысканиям.. Действительно в отличие от MSSQL в запросах с использованием стандартного дравера следует применять именно такой корявый синтаксис для DISTINCT: Код: plaintext Теперь можно вернуться к первоначальному вопросу: так какой же из алгоритмов все-таки оптимальнее и быстрее??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 17:56 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=35678782&tid=2161570]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
87ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 448ms |

| 0 / 0 |
