Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: не работает функция
 
 автор: user12345   (03.02.2013 в 14:47)   личное сообщение
 
 

Добрый день.
Может кто знает что делать чтобы в 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

  Ответить  
 
 автор: snipe   (03.02.2013 в 16:16)   личное сообщение
 
 

getrows - это своиство библиотеки ado

1. проверить подключена ли библиотека - если нет то подключить
2. проверить что первее ado или dao (tools-references - чем ближе к началу списка тем первее)
если dao - то поставить ado

  Ответить  
 
 автор: Анатолий (Киев)   (04.02.2013 в 14:17)   личное сообщение
 
 

Как именно "не работает"?
А если отключить On Error Resume Next, вылетит ошибка? Какая?
Вы уверены, что запрос возвращает запись?

  Ответить  
 
 автор: user12345   (05.02.2013 в 14:12)   личное сообщение
 
 

функция не выдает результат

  Ответить  
 
 автор: Анатолий (Киев)   (05.02.2013 в 15:23)   личное сообщение
 
 

Это не ответ. Ответьте на два последних вопроса.

  Ответить  
 
 автор: user12345   (05.02.2013 в 21:57)   личное сообщение
50 Кб.
 
 

Добрый вечер Анатолий.
Прикрепляю снимок подключенных библиотек.
Пожалуйста подскажите что за библиотека не подключена.

  Ответить  
 
 автор: snipe   (06.02.2013 в 04:31)   личное сообщение
50 Кб.
 
 

блин
вы читаете что вам пишут?
надо делать рекордсет с явным подключением на библиотеку адо
либо переместить библиотеку аdo на одну ступень вверх (сейчас она ниже dao)

смотрите сами =>

  Ответить  
 
 автор: Анатолий (Киев)   (06.02.2013 в 13:10)   личное сообщение
 
 

snipe, не сбивайте человека с толку. Этот код будет работать и вовсе без подключенной библиотеки ADO.
Другое дело, что ТС не отвечает на вопросы. А я подозреваю, что запрос не возвращает записей или возникает какая-то ошибка.

  Ответить  
 
 автор: snipe   (06.02.2013 в 15:11)   личное сообщение
 
 

Просто как-то osmor (вроде он) говорил что если подключены обе библиотеки
то отрабатывать по умолчанию будет та которая первая в списке
при каком подходе нужно явно прописывать какая библиотека используется

но все равно умолкаю

а топик стартеру - не молчите, чем больше инфы вы расскажите тем быстрее проблемма решится

  Ответить  
 
 автор: Анатолий (Киев)   (06.02.2013 в 16:14)   личное сообщение
 
 


если подключены обе библиотеки
то отрабатывать по умолчанию будет та которая первая в списке

Это имеет смысл, если, например, вы объявляете:
Dim RS As Recordset
В этом случае Recordset будет иметь тип из той библиотеки, что выше.
При Dim RS As ADODB.Recordset такой проблемы не будет.

  Ответить  
 
 автор: user12345   (06.02.2013 в 20:23)   личное сообщение
 
 

Добрый вечер.
Сделал как вы сказали но результат тот же.
Дело в том что проект создан в access 2003 и в проекте в место функции DLOOKUP использована вышеуказанная функция.
В компютерах где установлены access 2007 и access 2010 все работает нормально.
Недавно установил новый office 2013 и с ним соответственно access 2013.
Не знаю в чем разница между офисами 2010 и 2013, но данная функция стала не возвращать не коких результатов.
Если не смогу решить проблемму придется переделать проект изменяя функцию на DLOOKUP. Как вы уже знаете это очень нудная и большая работа.
Буду благодарен если поможете решить проблемму.

  Ответить  
 
 автор: Анатолий (Киев)   (07.02.2013 в 12:18)   личное сообщение
 
 

Повторяю вопросы:
А если отключить On Error Resume Next, вылетит ошибка? Какая?
Вы уверены, что запрос возвращает запись?

Кстати, использование GetRows в вашей функции не оправдано.
Правильнее так:

With CurrentProject.Connection.Execute(sql)
  If Not .BOF Then
     SqlLookUp = .Fields(0)
  Else
     SqlLookUp = Null
  End If    
End With  

  Ответить  
 
 автор: user12345   (07.02.2013 в 22:16)   личное сообщение
14 Кб.
 
 

Добрый вечер.
После отключения On Error Resume Next, вылетaeт ошибка.

Run-time error '-2147221164 (80040154)':
Class not registered

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList