Страница: 1 | 2 |
База представляет из себя набор записей (Тема, Статья). Лежит она в файле file.mdb. Dim db As DAO.Database Dim rs As DAO.Recordset Set db = DAO.OpenDatabase(Location & "file.mdb") Далее из базы производится выборка статей содержащих слово "ююююююююююю" (которого заведомо нет в таблице), следующим образом: Set rs = db.OpenRecordset("SELECT * FROM Articles WHERE Info LIKE '*ююююююююююю*';") После чего в рекордсете rs оказываются все записи таблицы Articles. В чем дело, не пойму? То же самое происходит и с набором букв "жжжжжжжжжжж". Есть подозрение, что дело в Кирилице (запросы на поиск "wwwwwwwww" и пр. приводят к нулевым результатам)... Но как тогда исправить положение я не знаю. Надеюсь а Вашу помощь...
'*ююююююююююю*' По-моему дело в звёздочках. Попробуй без них. To Vig11: Как же, как же. Я же не ищю поля в базе с точным соответствием с введенным текстом. Мне надо чтобы данному запросу удовлетворяли все статьи, содержащие искомое слово внутри (в данном случае "ююююююююююю"). Без звездочек вроде бы нельзя. To BIV: Неа, точка с запятой тут роли не играют... Как все-таки насильно сообщить DAO, что данная база исполльзует кирилицу? To Vig11: Я пробовал и без звездоче, конечно же. В этом случае на любой запрос - нулевой результат. Работоспособность Поиска сводится на нуль. To Sergey M.: Но вот, если не в Кирилице, то в чем? Может я при описании структуры базы где-нибудь накуралесил? Кто-нибудь вообще сталкивался с такой проблемой? Приношу свои извинения за дублирование сообщения... Ну вот спецально поделал попробовать: Dim db As Database Private Sub Form_Load() Private Sub txtStr_KeyPress(KeyAscii As Integer) itm.SubItems(2) = Format(!Цена, "0.00") признаться чесно, я всегда думал, что нужно ставить знак "%", а не звездочки, тут я звездочки поставил в запросе, но правильней будет прямо при вводе искомой строки если нужно то их подставлять. я намылил на всякий случай тебе проект, глянь... Спасибо... Обязательно посмотрю. А может ли это быть из-за того, что у меня какие-нибудь библиотеки с глюками? Например, у меня Access'a вообще нет. А вот если поставить один из последних, он ведь должен заменить устаревшие библиотеки, относящиеся к работе с БД данного типа, на новые? To Sergey M.: "...но правильней будет прямо при вводе искомой строки если нужно то их подставлять...". Да, но дело в том, что у меня поиск ведется по статьям объема 1-2 печатные страницы. Поэтому не имеет смысла, давать пользователю возможность поиска со строгим соответствием (без звездочек). Вряд ли когда-нибудь в строку поиска будет введена ЦЕЛИКОМ искомая статья. Вот почему звездочки у меня стоят стационарно... Отосланный тебе пример использует DAO 3.6 могу выслать dao360.dll (544 кило) Ага, если можно... А с чем вообще этот DAO поставляется в комплекте?
Вопрос: Какой-то глюк с Access базой данных при SELECT ...
Добавлено: 04.02.03 03:56
Автор вопроса: AlexSid
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
vig11
ICQ: 213777061
Вопросов: 21
Ответов: 159
Профиль | | #1
Добавлено: 04.02.03 10:58
Номер ответа: 2
Автор ответа:
BIV
Вопросов: 4
Ответов: 27
Профиль | | #2
Добавлено: 04.02.03 14:47
Возможно, точка с запятой лишняя в SQL выражении ;
Номер ответа: 3
Автор ответа:
AlexSid
Вопросов: 4
Ответов: 27
Профиль | | #3
Добавлено: 05.02.03 01:15
Номер ответа: 4
Автор ответа:
Sergey M.
Вопросов: 9
Ответов: 68
Профиль | | #4
Добавлено: 05.02.03 03:18
не верится, что дело в кирилице....
Номер ответа: 5
Автор ответа:
vig11
ICQ: 213777061
Вопросов: 21
Ответов: 159
Профиль | | #5
Добавлено: 05.02.03 10:08
А Ты всё-таки попробуй без звёздочек.
Номер ответа: 6
Автор ответа:
AlexSid
Вопросов: 4
Ответов: 27
Профиль | | #6
Добавлено: 05.02.03 16:15
Номер ответа: 7
Автор ответа:
AlexSid
Вопросов: 4
Ответов: 27
Профиль | | #7
Добавлено: 05.02.03 16:21
Номер ответа: 8
Автор ответа:
Sergey M.
Вопросов: 9
Ответов: 68
Профиль | | #8
Добавлено: 06.02.03 04:39
Dim rs As Recordset
Dim fso As FileSystemObject
With lst.ColumnHeaders
.Add , , , 1
.Add , , "Наименование", 4000
.Add , , "Цена", 900, 1
End With
Set fso = CreateObject("Scripting.FileSystemObject")
Set db = OpenDatabase(fso.BuildPath(App.Path, "test.mdb"))
End Sub
If KeyAscii = vbKeyReturn Then
Dim itm As ListItem
lst.ListItems.Clear
Set rs = db.OpenRecordset("SELECT * FROM Товар WHERE Наименование LIKE '*" & txtStr.Text & "*'")
With rs
If .EOF And .BOF Then .Close: Exit Sub
Do While Not .EOF
Set itm = lst.ListItems.Add()
itm.SubItems(1) = !Наименование
.MoveNext
Loop
.Close
End With
End If
End Sub
Номер ответа: 9
Автор ответа:
Sergey M.
Вопросов: 9
Ответов: 68
Профиль | | #9
Добавлено: 06.02.03 04:54
Номер ответа: 10
Автор ответа:
AlexSid
Вопросов: 4
Ответов: 27
Профиль | | #10
Добавлено: 08.02.03 00:52
Номер ответа: 11
Автор ответа:
Sergey M.
Вопросов: 9
Ответов: 68
Профиль | | #11
Добавлено: 08.02.03 03:38
Номер ответа: 12
Автор ответа:
AlexSid
Вопросов: 4
Ответов: 27
Профиль | | #12
Добавлено: 08.02.03 04:25
А где можно найти DAO поновее? Вешеуказанную версию 3.6 или выше!
Номер ответа: 13
Автор ответа:
Sergey M.
Вопросов: 9
Ответов: 68
Профиль | | #13
Добавлено: 08.02.03 04:28
Номер ответа: 14
Автор ответа:
AlexSid
Вопросов: 4
Ответов: 27
Профиль | | #14
Добавлено: 08.02.03 18:12
Номер ответа: 15
Автор ответа:
Sergey M.
Вопросов: 9
Ответов: 68
Профиль | | #15
Добавлено: 09.02.03 11:13
Я думаю, что с офисом...