|
Пользовательская функция в 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 |
|
|
start [/forum/topic.php?fid=61&msg=38516604&tid=2173790]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
87ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 300ms |
total: | 487ms |
0 / 0 |