Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DAO Recordset / 25 сообщений из 30, страница 1 из 2
25.04.2004, 18:29
    #32495817
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Задача, -
Есть обьект DAO Recordset. Дальше, в цикле просматриваются все записи. К первому полю применяется определенный критерий, достаточно сложный, что-бы его использовать в запросе, определяющем этот набор записей.
Как можно, если значение поля не удовлетворяет этому критерию, удалить строку из набора, не удаляя строку из таблицы ?
...
Рейтинг: 0 / 0
25.04.2004, 18:30
    #32495818
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Никак. Только заранее правильно написать WHERE.

Компромиссный вариант - завести вспомогательное поле и отмечать в нем.
...
Рейтинг: 0 / 0
25.04.2004, 18:49
    #32495830
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Спасибо,
у меня функция от поля(строки) и другой строки, возвращающая true/false,
в WHERE, как понимаю, такое ведь не всунуть?
...
Рейтинг: 0 / 0
25.04.2004, 19:01
    #32495835
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Что значит другой строки? Другой записи? Можно при желании. Или другая строка - это просто другое поле? Тогда вообще никаких проблем.
...
Рейтинг: 0 / 0
25.04.2004, 19:06
    #32495839
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Нет, не связанной с записями строки.
...
Рейтинг: 0 / 0
25.04.2004, 19:07
    #32495841
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
А откуда она берется? Это константа? Или она возвращается какой-то функцией?
...
Рейтинг: 0 / 0
25.04.2004, 19:17
    #32495846
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Есть таблица клиентов. Одно из полей - название. Пользователь вводит в поле название, жмет кнопочку - делается поиск соотв. записей.

Проблема в том, что пользователь может ошибится в буквах, ввести не совсем правильное название. Поэтому задача ставится - вывести все записи с названием фирм, набор букв в названии которых на 70% совпадает с набором букв, введенных в поле.

Отсюда функция от строковой константы и текстового поля, возвращающая true/false.
...
Рейтинг: 0 / 0
25.04.2004, 19:24
    #32495850
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
И что мешает поместить вызов этой функции в WHERE?
...
Рейтинг: 0 / 0
25.04.2004, 19:25
    #32495852
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
наверное, моя тормознутость :)
спасибо.
...
Рейтинг: 0 / 0
26.04.2004, 10:21
    #32496195
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Тогда еще вопросик, по поводу вставки функции в WHERE

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

есть какие-то особенности в этом случае?
...
Рейтинг: 0 / 0
26.04.2004, 14:48
    #32497029
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Если программа выдает ошибку, значит в ней где-то есть ошибка. Не видя программу, точнее сказать не могу.

(Каков вопрос, таков ответ...)
...
Рейтинг: 0 / 0
26.04.2004, 15:33
    #32497065
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Если убрать вещи, не относящиеся к вопросу, то код -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Function StrCmp(strString As String) As Boolean
    StrCmp = True
End Function
                                                    
Private Sub cmdSelectByName_Click()
    Dim strQuery, strString As String
    strString =  "test" 
    strQuery =  "SELECT * FROM tblClients WHERE StrCmp(strString) = true" 
    RecordSourceSetting (strQuery)
End Sub


Выдает ошибку ошибку "Неопределенная функция StrCmp в выражении", я так понимаю с синтаксисом что-то не то.
...
Рейтинг: 0 / 0
26.04.2004, 15:49
    #32497080
zz
zz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
не то.

Код: plaintext
1.
strQuery =  "SELECT * FROM tblClients WHERE StrCmp("  & strString &  ") = true" 
...
Рейтинг: 0 / 0
26.04.2004, 15:52
    #32497084
zz
zz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
упс...
Код: plaintext
1.
strQuery =  "SELECT * FROM tblClients WHERE StrCmp('" & strString & "') = true" 
...
Рейтинг: 0 / 0
26.04.2004, 15:57
    #32497093
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
2 zz
спасибо, но все равно, не работает.
...
Рейтинг: 0 / 0
26.04.2004, 16:01
    #32497100
zz
zz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Ну а что говорит-то? То же самое?
...
Рейтинг: 0 / 0
26.04.2004, 16:05
    #32497107
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub cmdSelectByName_Click()
    Dim strQuery, strString As String
    strString =  "test" 
    
    strQuery =  "SELECT * FROM  tblClients WHERE  StrCmp12('" & strString & "') = true" 
    RecordSourceSetting (strQuery)
End Sub


да, то-же самое.
...
Рейтинг: 0 / 0
26.04.2004, 16:07
    #32497114
zz
zz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
А цифирь 12 в названии функции откуда вылезла? У тебя точно сама функция и ее вызов одинаково называются?
...
Рейтинг: 0 / 0
26.04.2004, 16:20
    #32497134
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
да, точно,
12 опечатка
...
Рейтинг: 0 / 0
26.04.2004, 16:26
    #32497151
zz
zz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
а вот это
Код: plaintext
1.
2.
3.
Public Function StrCmp(strString As String) As Boolean
    StrCmp = True
End Function


где находится?
...
Рейтинг: 0 / 0
26.04.2004, 16:27
    #32497154
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
там-же, где и вызывающая ее функция.
...
Рейтинг: 0 / 0
26.04.2004, 16:30
    #32497165
zz
zz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
То есть в модуле формы, судя по _Click вызывающей процедуры?
...
перенеси свою функцию в отдельный модуль.
...
Рейтинг: 0 / 0
26.04.2004, 16:35
    #32497178
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
кстати только что сделал поиск похожих названий клиентов при ошибочном вводе...

за основу взял библиотеку написанную на C++ одним умельцем

что мне в ней понравилось - быстро работает.
по сравнению с аналогичными VB шными - 10 и более быстрее
получился результат
Вычисление похожести, Обновление поля в рекордсете, пересортировка
около 3 секунд на 1000 строк данных при длине искомой фразы 50 символов


алгоритм использования следующий :

открывается рекордсет и в числовое поле "Похожесть" пишется результат функции от сравнения названия и искомой строки

Длл и пример кода могу кинуть если интересно
...
Рейтинг: 0 / 0
26.04.2004, 16:37
    #32497181
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
да, забыл сказать самое главное - находит самые невероятные варианты похожести
...
Рейтинг: 0 / 0
26.04.2004, 16:40
    #32497186
zz
zz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO Recordset
Алексей, а как это стыкуется с данным топиком? :)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DAO Recordset / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]