|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Уважаемые коллеги!!! Прошу прощения, за чайниковский вопрос но возможно ли написать пользовательскую функцию для Excell 2010 на основе ADODB, чтобы делался запрос к файлу базы данных DBF? Я написал и долго пользовался подобной функцией на основе класса BPDBF в Excell 2003, но при переходе на 2010 этот класс перестал работать. :-( Может быть у кого-то есть ссылки на учебники по ADODB, примеры, собственные наработки? Задача проста- в функции задается аргумент А, этот аргумент ищется в файле базы данных DBF в определенном поле -Поле1. Из Поля2 записи содержащей аргумент А в Поле1 результат выдается в ячейку. Начал писать но не могу отладить и нет понимания. Если нужно могу выложить функцию на основе класса BPDBF, но думаю здесь аналогии неуместны. Заранее всем спасибо! Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Модератор: Учимся использовать тэги оформления кода - FAQ ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 14:46 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 15:49 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
F вам ответил, а у меня встречные вопросы Сергей ВВС Код: vbnet 1. 2. 3.
разве в таблице COUNTRS у вас нет идентификаторов, соответствующих N? и как вы можете быть уверены, что страны вернутся в определенном порядке, если не используете ORDER BY? и зачем вам звездочка в запросе, если используете только четвертое поле? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 16:03 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
в общем так как-то должно быть, иначе получается, что вы перекачиваете на клиенты ВСЮ таблицу со ВСЕМИ странами каждый раз, когда вызываете функцию, хотя вам нужно только ИМЯ столько ОДНОЙ страны Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 16:07 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Shocker.Pro, большое САСИБО за ответ, попробую. Только у меня маленький вопрос - CountryName это имя поля в базе? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 16:44 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Вмеcто CountryName и ID подставьте реальные названия полей ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 17:15 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Shocker.Pro, подставил, попробовал, что-то не работает Function ÑÒÐÀÍÀ(N) As String Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long ' connect to the Access database FirstRowHasNames = 1 Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\ADODB\;Extended Properties=""DBASE IV;"";" ds = cn.Execute("SELECT NAME17 FROM COUNTRS.dbf WHERE ALFA2=" & CStr(N)) ÑÒÐÀÍÀ = rs.Fields(1) rs.Close cn.Close End Function ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 20:24 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Со строкой подключения разобрался? ЗЫ: и для кого я ссылку на FAQ давал? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 20:25 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Shocker.Pro, честно - нет, чувствую себя полным идиотом. Может мне лучше книгу какую почитать для начала? Даже неудобно. Прошу прощения за теги.(вернее за неуменее ими пользоваться) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 21:03 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
возможно стоит почитать но ведь код уже готовый есть, осталось правильно написать строку подключения ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2013, 01:39 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Shocker.Pro, попробовал. Строка подключения вроде бы работает, но ругается на строку запроса. Что не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 22:57 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Вы-то сами в состоянии разобрать, что написано на скриншоте? Я не вижу ни текста запроса, ни текста ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 00:37 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Ошибка в синтаксисе, написано же. Пропущен оператор. У Вас в CStr(N) что? Может одинарные кавычки не помешали бы(если это не число)? Код: vbnet 1.
а так соглашусь с Shocker.Pro полностью - ничего из скрина не видать толком. Ни строку запроса, ни номер ошибки. P.S. По SQL запросам можете почитать книгу Мартина Грубера "Понимание SQL". Она простенькая и для начинающих самое оно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 12:52 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
The_Prist, Здравствуйте, я попробовал упростить задачу до максимума, но вс равно результата нет функция возвращает в ячейку #ЗНАЧ! Упрощения: ............WHERE code=40") т.е. в функции аргумент N не используется. Поля в исходном файле COUNTRS.dbf CODE - Двойное с плавающей точкой, все остальные - текст Что не так? Debug - ничего не дает, и функция не работает. :-( Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
За книжку Грубера - БОЛЬШОЕ СПАСИБО!! Действительно простая и полезная. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2013, 15:40 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Сергей ВВС, ну поменяйте вы провайдера-то уже (на VFPOLEDB)... А так... Что значит "дебаг ничего не даёт"? Остановите выполнение после запроса и посмотрите, где и что лежит в переменных и рекордсете. Подозреваю, что у вас запрос возвращает пустую выборку... А, не, не подозреваю Покажите мне код, в котором написано, что данные появляются в rs ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2013, 18:27 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Сергей ВВС, Если вам дали совет, это не значит, что нужно его использовать, не вникая в суть. Советчик сделал опечатку, вы тупо повторяете его ошибку. читайте тут ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2013, 18:33 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Shocker.Pro, Спасибо за совет на счет Option Explicit. Но все равно не работает. И ошибок Debug не выдает. Что еще почитать? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2013, 12:58 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Сергей ВВСНо все равно не работаетЧто означает "не работает"? функция либо должна вернуть какое-то значение, либо сгенерить ошибку. Третьего не дано. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2013, 13:42 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Shocker.Pro, возвращает #ЗНАЧ! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2013, 15:40 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Сергей ВВСShocker.Pro, возвращает #ЗНАЧ!Попробуйте изменить запрос на Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2013, 15:47 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Сергей ВВСShocker.Pro, возвращает #ЗНАЧ!а если ее выполнить в окне Immediate? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2013, 16:21 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Shocker.Pro, Compile error: Invalid in Immediate pane ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2013, 16:54 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Сергей ВВСCompile error: Invalid in Immediate paneНе, ну достанешь же. Мёртвого. Как Гришу Перельмана - нобелёвский комитет. Если потерял нитку темы - так признайся, что перестал понимать. И не надо долбить свой код - он от тыкания копипаста не улучшится... (поскольку фэйспалма не предусмотрено) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2013, 18:26 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
AndreTM, Мертвый? Не пиши сюда. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2013, 19:12 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Сергей ВВСCompile error: Invalid in Immediate paneЧто именно ты там пишешь? Надо написать знак вопроса, имя функции, в скобках значение параметра и нажать Enter ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2013, 19:58 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Сергей ВВСМертвый? Не пиши сюда.Да, йа ужо давно неспособен... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2014, 14:53 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Shocker.Pro, Здравствуйте, Спасибо за помощь! хоть тема и старая, но для меня очень актуальная. Удалось разобраться со строками подключения и все работает ок. Аж три варианта удалось использовать: Const DBFconnSTR1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ПУТЬ;Extended Properties=dBASE IV;User ID=Admin;Password=;" Const DBFconnSTR2 As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\ПУТЬ;Extended Properties=dBASE IV;User ID=Admin;" Const DBFconnSTR3 As String = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=C:\ПУТЬ;" Но.... не на всех компьютерах. На системе Win 7 x64 + Office 2010 x32 - работает, на системе Win 7 x64 + Office 2013 x64 - не работает. Помогите разобраться. Заранее спасибо ! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2014, 18:02 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Сергей ВВС, 64-битная версия приложения требует использования 64-битной версии драйвера (который вызывается провайдером). Старые версии провайдеров (включая vfpoledb) не имеют 64-битных версий. Можно попробовать воспользоваться провайдером MSDASQL : Код: plaintext
Соответствующий провайдер OLEDB поставляется в составе Windows, начиная с Vista(sp1). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2014, 18:21 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
AndreTM, попробовал. Подключал Reference библиотеки ADO 2.1, 2.5, 2.7, 6.1. Проект компилируется без ошибок, но функция в Excel не работает. Выдает - #ЗНАЧ. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 01:22 |
|
Пользовательская функция в Excell 2010 - запрос к базе данных *.DBF
|
|||
---|---|---|---|
#18+
Сергей ВВС, Ну и на какой именно строке ошибка? Отладчиком пользоваться умеете? И вообще, вы думаете, что я вам в примере привел ВАШУ строку подключения к данным? Я только указал, каким именно провайдером можно попробовать воспользоваться. А конкретно как - смотрите уже примеры подключения к DBF с использованием ODBC. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 05:33 |
|
|
start [/forum/topic.php?all=1&fid=61&tid=2173790]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 157ms |
0 / 0 |