тип данных "дествительное" и поиск (FindFirst)

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
BeerMaster
Сообщения: 11
Зарегистрирован: 07 июл 2004, 12:09
Откуда: Красноярск

Перестал работать поиск rs.FindFirst после того как изменился тип поля на "числовой" с размером поля "действительное" (в сеттингах таблицы):

Код: Выделить всё

Sub test()
  Dim rs As DAO.Recordset
  Set rs = CurrentDb.OpenRecordset("SELECT * FROM klient;")
  rs.MoveLast
  Debug.Print (CStr(rs.Fields("cod")))
' печатает 10000000003409

  Debug.Print (rs.Fields("cod") = 10000000003409#)
' печатает TRUE 
' решетку в конце ставит редактор VBA (зачем-то)

  SearchStr = "cod=10000000003409"

  rs.FindFirst SearchStr

  Debug.Print (rs.NoMatch)
' печатает TRUE, т.е. не находит!!!!!

End Sub
когда размер поля cod был "целое" все работало о.к. Тип поля изменить не могу - база не моя.
что за размер такой - "действительное"? В хелпе не обнаружен...

Спасибо
__________
bask
Сообщения: 12
Зарегистрирован: 09 июн 2004, 10:48

Странно, у меня этот код работает с типом данных "Действительное", правда решетку сам не ставит.
Попробуй в строке SearchStr = "cod=10000000003409" ставить решетку в конце (SearchStr = "cod=10000000003409" & "#").
BeerMaster
Сообщения: 11
Зарегистрирован: 07 июл 2004, 12:09
Откуда: Красноярск

в случае с решеткой число воспринимается, по-видимому, как дата и выдает runtime error 3077 "дата содержит синтаксическую ошибку в выражении"
__________
BeerMaster
Сообщения: 11
Зарегистрирован: 07 июл 2004, 12:09
Откуда: Красноярск

интересно, если верить хелпу SearchStr - ... It is like the WHERE clause in an SQL statement, but without the word WHERE, но запрос

SELECT * from Klient where cod=10000000003409;

возвращает нужную запись, а FindFirst - нет ...
__________
bask
Сообщения: 12
Зарегистрирован: 09 июн 2004, 10:48

а может перед поиском просто нужно вернуться "наверх" - rs.MoveFirst ?
BeerMaster
Сообщения: 11
Зарегистрирован: 07 июл 2004, 12:09
Откуда: Красноярск

без разницы...
Сработало SearchStr = "cod LIKE 10000000003409", но почему и насколько это надежно не знаю...
__________
Ответить