Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Какой-то глюк с Access базой данных при SELECT ... Добавлено: 04.02.03 03:56  

Автор вопроса:  AlexSid

База представляет из себя набор записей (Тема, Статья). Лежит она в файле 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" и пр. приводят к нулевым результатам)... Но как тогда исправить положение я не знаю. Надеюсь а Вашу помощь...

Ответить

  Ответы Всего ответов: 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

To Vig11:

Как же, как же. Я же не ищю поля в базе с точным соответствием с введенным текстом. Мне надо чтобы данному запросу удовлетворяли все статьи, содержащие искомое слово внутри (в данном случае "ююююююююююю"). Без звездочек вроде бы нельзя.

To BIV:

Неа, точка с запятой тут роли не играют...

Как все-таки насильно сообщить DAO, что данная база исполльзует кирилицу?

Ответить

Номер ответа: 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

To Vig11:  Я пробовал  и без звездоче, конечно же. В этом случае на любой запрос - нулевой результат. Работоспособность Поиска сводится на нуль.

To Sergey M.: Но вот, если не в Кирилице, то в чем?

Может я при описании структуры базы где-нибудь накуралесил? Кто-нибудь вообще сталкивался с такой проблемой?

Ответить

Номер ответа: 7
Автор ответа:
 AlexSid



Вопросов: 4
Ответов: 27
 Профиль | | #7 Добавлено: 05.02.03 16:21

Приношу свои извинения за дублирование сообщения...

Ответить

Номер ответа: 8
Автор ответа:
 Sergey M.



Вопросов: 9
Ответов: 68
 Профиль | | #8 Добавлено: 06.02.03 04:39

Ну вот спецально поделал попробовать:

Dim db   As Database
Dim rs   As Recordset
Dim fso As FileSystemObject

Private Sub Form_Load()
    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

Private Sub txtStr_KeyPress(KeyAscii As Integer)
    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) = !Наименование            

               itm.SubItems(2) = Format(!Цена, "0.00")
                .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

Спасибо... Обязательно посмотрю.

А может ли это быть из-за того, что у меня какие-нибудь библиотеки с глюками? Например, у меня Access'a вообще нет. А вот если поставить один из последних, он ведь должен заменить устаревшие библиотеки, относящиеся к работе с БД данного типа, на новые?

To Sergey M.:

"...но правильней будет прямо при вводе искомой строки если нужно то их подставлять...".

Да, но дело в том, что у меня поиск ведется по статьям объема 1-2 печатные страницы. Поэтому не имеет смысла, давать пользователю возможность поиска со строгим соответствием (без звездочек). Вряд ли когда-нибудь в строку поиска будет введена ЦЕЛИКОМ искомая статья. Вот почему звездочки у меня стоят стационарно...

Ответить

Номер ответа: 11
Автор ответа:
 Sergey M.



Вопросов: 9
Ответов: 68
 Профиль | | #11 Добавлено: 08.02.03 03:38

Отосланный тебе пример использует DAO 3.6

Ответить

Номер ответа: 12
Автор ответа:
 AlexSid



Вопросов: 4
Ответов: 27
 Профиль | | #12 Добавлено: 08.02.03 04:25
А где можно найти DAO поновее? Вешеуказанную версию 3.6 или выше!

Ответить

Номер ответа: 13
Автор ответа:
 Sergey M.



Вопросов: 9
Ответов: 68
 Профиль | | #13 Добавлено: 08.02.03 04:28

могу выслать dao360.dll (544 кило)

Ответить

Номер ответа: 14
Автор ответа:
 AlexSid



Вопросов: 4
Ответов: 27
 Профиль | | #14 Добавлено: 08.02.03 18:12

Ага, если можно...

А с чем вообще этот DAO поставляется в комплекте?

Ответить

Номер ответа: 15
Автор ответа:
 Sergey M.



Вопросов: 9
Ответов: 68
 Профиль | | #15 Добавлено: 09.02.03 11:13
Я думаю, что с офисом...

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам