Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
Взялся изучать взаимодействие VFP с MS SQL-Server через ADO... Для пробы пытаюсь получить список таблиц из базы на SQL-Server. Код вот такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Так вот этот самый ? loRS.RecordCount упорно показывает -1, что бы я с ним ни делал. Хотя EXEC sp_tables , выполненный на сервере при открытой базе BBB возвращает все записи как положено... Есть какие-нибудь мысли, как заставить фокса принять эти данные именно через OLEDB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 16:56 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
loRS.CursorLocation = 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 18:24 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
Раз (1)Так вот этот самый ? loRS.RecordCount упорно показывает -1, что бы я с ним ни делал. Хотя EXEC sp_tables , выполненный на сервере при открытой базе BBB возвращает все записи как положено... Есть какие-нибудь мысли, как заставить фокса принять эти данные именно через OLEDB? RecordCount не самое удачное свойство для проверки того, что рекордсет нормально открылся и содержит данные, т.к. в зависимости от провайдера данных, типа курсора и "положения звезд" - может показывать все что угодно до того, пока рекордсету не скажут явно исполнить MoveLast , при большом объеме выборки - такие "скачки" не особо хорошо влияют на производительность... К тому же RecordCount = -1 это вовсе не аналог фоксового результата SQLEXEC(...) = -1 , означающего ошибку при выполнении SQL-вызова на сервере... Для проверки того, что рекордсет действительно открылся - используй свойство State = 1 && adStateOpen, для проверки того, что рекордсет не пустой и содержит данные - loRS.EOF = loRS.BOF && if both is .T. then recordset is empty. З.Ы. ну и команда loRS.Source = loCommand - здесь явно "лишняя", т.к. рекордсет и так создается, открывается и заполняется данными через loRS = loCommand.Execute, т.е. если после исполнения данной команды коллекция loConn.Errors пустая - то можно считать, что данные у вас уже в фоксе... :-)) З.З.Ы. посмотреть содержимое одного столбца вашей выборки можете таким циклом: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 19:14 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
CriploRS.CursorLocation = 3 На RecordCount свойство CursorLocation никак не повлияло, все равно -1. Но данные в рекордсете действительно оказались, спасибо qu-qu за разъяснения : ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 07:57 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
В VFP8 через АDO удобнее работать с курсорадаптером Код: plaintext 1. 2. 3. 4. 5. 6. 7. Идалее можно работать с курсором (ALIAS) Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 08:11 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
Ошибка Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 08:15 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
Подскажите вот чего - если я буду работать таким образом не с сервером БД, а с данными лежащими в сети, т.е. конектимся к контейнеру БД с таблицами лежащим на сетевом расшаренном диске - сократить ли это все ненужный трафик в сети или все таки по прежнему будут гоняться даные из открываемых таблиц, а только потом браться выборки ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:46 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
Во-первых, работать со родным форматом напрямую, без посредников типа ODBC и ADO всегда лучше. Во-вторых, при правильно организованных индексах по сети будет переданы только результаты выборки , плюс чуть-чуть служебной информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 21:36 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
karly™Во-первых, работать со родным форматом напрямую, без посредников типа ODBC и ADO всегда лучше. Во-вторых, при правильно организованных индексах по сети будет переданы только результаты выборки , плюс чуть-чуть служебной информации. При работе в сети вместе с формой открываются все таблицы, которые участвуют в выборках. При этом все данные из таблицы тянутся на клиента по сети и лишь после этого производятся выборки. Вот собственно и вопрос - если пользовать связку OLE DB + CursorAdapter уменьшим ли трафик по сети или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 23:05 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
Vladimir M Sklyar При работе в сети вместе с формой открываются все таблицы, которые участвуют в выборках. При этом все данные из таблицы тянутся на клиента по сети и лишь после этого производятся выборки. А вот и нет - сколько тянуть - задается паратметрами окружения по умолчанию - 100 первых записей. karly™ Во-первых, работать со родным форматом напрямую, без посредников типа ODBC и ADO всегда лучше. Теоретически да, но на практике быстрее через OLE DB - парадокс, объяснение которому видел одно - не тенет за собой Rushmor (но правду знает только Большой Брат). Vladimir M SklyarПодскажите вот чего - если я буду работать таким образом не с сервером БД, а с данными лежащими в сети... Я давно уже применяю Web Services вместо прямого обращения к данным - все преимущества Client-Server технологии + дешевизна в эксплуатации и надежность... да и трафик минимальный... karly™Во-вторых, при правильно организованных индексах по сети будет переданы только результаты выборки, плюс чуть-чуть служебной информации. Здесь я с Вами согласен, вот только этой служебной информации порой получается много :))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 23:28 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
Sergey ChЯ давно уже применяю Web Services вместо прямого обращения к данным - все преимущества Client-Server технологии + дешевизна в эксплуатации и надежность... да и трафик минимальный... А вот с этого места поподробнее пожалуйста. Каким образом организовано ядро - т.е. сервер ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 09:09 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
Vladimir M Sklyar При работе в сети вместе с формой открываются все таблицы, которые участвуют в выборках. При этом все данные из таблицы тянутся на клиента по сети и лишь после этого производятся выборки. Это глубокое заблуждение . Фокс умеет передавать на рабочую станцию только ту часть файла dbf, которая участвует в результирующей выборке. Попробуйте создать тестовый файл размером в несколько сотен мегабайт. Заполните его случайными данными. Функция Rand() будет очень кстати :) Затем сделайте индекс, например по полю RecID . И выполните запрос Код: plaintext Если после этого появятся мысли/вопросы - высказываете/задавайте :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 11:24 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
To: Vladimir M Sklyar Рассказывать долго. Где-то тут мы уже обсуждали эту тему. В двух словах примерно так: - создаете Web Service который принимает SQL команды с удаленный рабочих станций, исполняет запрос, конвертирует в XML и посылает ответ на удаленную рабочую станцию... - клиент посылает SQL команды, далее принимает ответ в виде XML, преобразует в Cursor... - если надо обновить или добавить данные то все на оборот... Все работает почти как обычный SQL Server (правда все надо организовывать самому). В одном из проектов у меня так работала сеть магазинов через Интернет и модемы 28k... Можно усилить и безопасность (для некторых клиеинтов я все шифрую)... Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 11:18 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
Sergey ChTo: Vladimir M Sklyar Все работает почти как обычный SQL Server (правда все надо организовывать самому). Это все понятно, но пишеться на чем - фокс (сервер DCOM, COM+) или нечто другое ? - что в качестве БД (.dbc/.dbf, промышленный сервер БД)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 12:33 |
|
||
|
Вопрос специалистам по ADODB
|
|||
|---|---|---|---|
|
#18+
Vladimir M Sklyar Это все понятно, но пишеться на чем - фокс (сервер DCOM, COM+) или нечто другое ? - что в качестве БД (.dbc/.dbf, промышленный сервер БД)? 1. Самый простой вариант - создаем COM (пишем на VFP как всегда, только назавём это DEFINE CLASS yourweb AS SESSION OLEPUBLIC) Далее делаем Web Service на основе пакета SOAP 3.0 (берите с сервера MS) - в VFP 8.0 есть даже мастер, который все делает включая регистрацию. Далее если нужен доступ из любой точки земного шара - указываем выбранный Web Server. 2. Тут как душа ляжет. У меня есть и dbf, dbc и MS SQL (но последнюю можно использовать и без FoxPro :) Мой совет - почитайте про Web Services - там все описано... Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 14:26 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32574680&tid=1596281]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 458ms |

| 0 / 0 |
