|
|
|
| Добрый день.
Может кто знает что делать чтобы в access 2013 работала данная функция.
В предедущих версиях access-ов работает нормально.
'= SqlLookUp(" select a + b + c from mytable where id=" & [formID] )
Public Function SqlLookUp(sql)
Dim ar
On Error Resume Next
ar = CurrentProject.Connection.Execute(sql).GetRows
SqlLookUp = ar(0, 0)
End Function | |
|
| |
|
|
|
| getrows - это своиство библиотеки ado
1. проверить подключена ли библиотека - если нет то подключить
2. проверить что первее ado или dao (tools-references - чем ближе к началу списка тем первее)
если dao - то поставить ado | |
|
| |
|
|
|
| Как именно "не работает"?
А если отключить On Error Resume Next, вылетит ошибка? Какая?
Вы уверены, что запрос возвращает запись? | |
|
| |
|
|
|
| функция не выдает результат | |
|
| |
|
|
|
| Это не ответ. Ответьте на два последних вопроса. | |
|
| |
|
50 Кб. |
|
| Добрый вечер Анатолий.
Прикрепляю снимок подключенных библиотек.
Пожалуйста подскажите что за библиотека не подключена. | |
|
| |
|
50 Кб. |
|
| блин
вы читаете что вам пишут?
надо делать рекордсет с явным подключением на библиотеку адо
либо переместить библиотеку аdo на одну ступень вверх (сейчас она ниже dao)
смотрите сами => | |
|
| |
|
|
|
| snipe, не сбивайте человека с толку. Этот код будет работать и вовсе без подключенной библиотеки ADO.
Другое дело, что ТС не отвечает на вопросы. А я подозреваю, что запрос не возвращает записей или возникает какая-то ошибка. | |
|
| |
|
|
|
| Просто как-то osmor (вроде он) говорил что если подключены обе библиотеки
то отрабатывать по умолчанию будет та которая первая в списке
при каком подходе нужно явно прописывать какая библиотека используется
но все равно умолкаю
а топик стартеру - не молчите, чем больше инфы вы расскажите тем быстрее проблемма решится | |
|
| |
|
|
|
|
если подключены обе библиотеки
то отрабатывать по умолчанию будет та которая первая в списке
| Это имеет смысл, если, например, вы объявляете:
Dim RS As Recordset
В этом случае Recordset будет иметь тип из той библиотеки, что выше.
При Dim RS As ADODB.Recordset такой проблемы не будет. | |
|
| |
|
|
|
| Добрый вечер.
Сделал как вы сказали но результат тот же.
Дело в том что проект создан в access 2003 и в проекте в место функции DLOOKUP использована вышеуказанная функция.
В компютерах где установлены access 2007 и access 2010 все работает нормально.
Недавно установил новый office 2013 и с ним соответственно access 2013.
Не знаю в чем разница между офисами 2010 и 2013, но данная функция стала не возвращать не коких результатов.
Если не смогу решить проблемму придется переделать проект изменяя функцию на DLOOKUP. Как вы уже знаете это очень нудная и большая работа.
Буду благодарен если поможете решить проблемму. | |
|
| |
|
|
|
| Повторяю вопросы:
А если отключить On Error Resume Next, вылетит ошибка? Какая?
Вы уверены, что запрос возвращает запись?
Кстати, использование GetRows в вашей функции не оправдано.
Правильнее так:
With CurrentProject.Connection.Execute(sql)
If Not .BOF Then
SqlLookUp = .Fields(0)
Else
SqlLookUp = Null
End If
End With
|
| |
|
| |
|
14 Кб. |
|
| Добрый вечер.
После отключения On Error Resume Next, вылетaeт ошибка.
Run-time error '-2147221164 (80040154)':
Class not registered | |
|
| |