Страница 1 из 1

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

Добавлено: 22 июл 2004, 08:00
BeerMaster
Перестал работать поиск 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 был "целое" все работало о.к. Тип поля изменить не могу - база не моя.
что за размер такой - "действительное"? В хелпе не обнаружен...

Спасибо

Добавлено: 22 июл 2004, 09:57
bask
Странно, у меня этот код работает с типом данных "Действительное", правда решетку сам не ставит.
Попробуй в строке SearchStr = "cod=10000000003409" ставить решетку в конце (SearchStr = "cod=10000000003409" & "#").

Добавлено: 22 июл 2004, 10:05
BeerMaster
в случае с решеткой число воспринимается, по-видимому, как дата и выдает runtime error 3077 "дата содержит синтаксическую ошибку в выражении"

Добавлено: 22 июл 2004, 10:31
BeerMaster
интересно, если верить хелпу SearchStr - ... It is like the WHERE clause in an SQL statement, but without the word WHERE, но запрос

SELECT * from Klient where cod=10000000003409;

возвращает нужную запись, а FindFirst - нет ...

Добавлено: 22 июл 2004, 10:52
bask
а может перед поиском просто нужно вернуться "наверх" - rs.MoveFirst ?

Добавлено: 22 июл 2004, 11:33
BeerMaster
без разницы...
Сработало SearchStr = "cod LIKE 10000000003409", но почему и насколько это надежно не знаю...