Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Еще раз про Борей  [new]
RitaRita
Member

Откуда:
Сообщений: 42
Помогите разобраться на примере из Борея: есть форма «Заказы», где выбираются товары с помощью поля со списком. Мне надо, чтобы в этом списке поиск товаров производился не по начальным, а по любым символам. Т.е. в поле со списком выбирались все товары, где есть такие символы.
Вставила в источник строк для поля со списком в подчиненной форме заказов
Like "*" & [Forms]![Подчиненная форма заказов]![КодТовара] & "*".
Теперь для поиска нужно каждый раз открывать форму. И вообще чего-то не хватает.
Вопрос уже задавала, но что-то не пошло.
15 авг 04, 00:11    [882441]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
RitaRita
Вопрос уже задавала, но что-то не пошло.

А зачем спрашивать одно и то же несколько раз?
https://www.sql.ru/forum/actualthread.aspx?tid=113665
15 авг 04, 00:25    [882453]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
RitaRita
Member

Откуда:
Сообщений: 42
Ну пароль забыла.
А вообще, хотелось бы ответа по-существу.
15 авг 04, 00:44    [882460]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
RitaRita
Ну пароль забыла.

Мне это не помешало найти Ваш старый вопрос. :^)

RitaRita
А вообще, хотелось бы ответа по-существу.

Сколько угодно. Спрашивайте - отвечаем.
15 авг 04, 14:34    [882577]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
Темный
Member

Откуда:
Сообщений: 11941
Где вопрос?
15 авг 04, 14:59    [882587]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
RitaRita
Member

Откуда:
Сообщений: 42
Нашла готовую процедуру с инструкциями:
Public varStr As Variant

Public Sub AlternativeAutoExpand(ctl As Control, tbl As TableDef, fldID As Field, fldName As Field, KeyAscii As Integer)
Dim strSQL As String

If ctl <> Null Then Exit Sub
If KeyAscii = 13 Then Exit Sub
If KeyAscii = 9 Then
varStr = "*"
GoTo Zapros
ElseIf varStr = "*" Then
varStr = Null
End If

If KeyAscii = 8 Then
If varStr = "" Then GoTo varstrNull
varStr = Left(varStr, Len(varStr) - 1)
GoTo Zapros
Else
If KeyAscii = 27 Then GoTo varstrNull
varStr = varStr & Chr$(KeyAscii)
Zapros:
strSQL = "SELECT " & tbl.Name & ".[" & fldID.Name & "]," & tbl.Name & ".[" & fldName.Name & "]"
strSQL = strSQL & " FROM " & tbl.Name & " "
strSQL = strSQL & "WHERE ((( " & tbl.Name & ".[" & fldName.Name & "]) Like '*" & varStr & "*'));"
ctl.RowSource = strSQL
SendKeys "%{DOWN}", True
End If
Exit Sub
varstrNull:
varStr = ""
End Sub

В форме в которой находится TextBox в событие [Вход] и [Нажатие клавиши] скопировать код предварительно заменив названия таблицы, полей и TextBox.
Private Sub ComboBoxName_Enter()
varStr = Null
End Sub

Private Sub ComboBoxName_KeyPress(KeyAscii As Integer)
Dim tbl As TableDef, db As Database
Dim fldID As Field, fldName As Field
Dim ctl As Control
Set db = CurrentDb()
Set tbl = db.TableDefs("TableName")
Set fldID = tbl.Fields("FieldIDName")
Set fldName = tbl.Fields("FieldName")
Set ctl = Me.ComboBoxName

AlternativeAutoExpand ctl, tbl, fldID, fldName, KeyAscii
End Sub
Данный пример работает в случае если в свойствах Поля со списком:
Количество столбцов = 2
Первый столбец имеет нулевую длину
Для других условий надо изменять код.

Мои вопросы:

Что делаю не так. Мои действия:

1.Создала таблицу – TableName
Поля: FieldIDName
FieldName
2. Сделала Форму со списком:
В свойствах: Данные - FieldName
Источник строк- TableName
3. Нажимаю «Программа» и копирую процедуру.
4. Копирую коды в события Вход и Нажатие клавиши.

И что-то не получается. Показывает ошибку в строке:

varStr = varStr & Chr$(KeyAscii)
17 авг 04, 01:28    [885860]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
RitaRita
Показывает ошибку в строке:

varStr = varStr & Chr$(KeyAscii)

А нам надо угадать, какую ошибку он показывает?
17 авг 04, 01:33    [885864]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
RitaRita
Member

Откуда:
Сообщений: 42
Вопросы убойные. Сама знаю. Но с такими знаниями на форум обращаются не так уж часто, так что поддержите. Стараюсь ведь. И надо очень.
17 авг 04, 01:33    [885865]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
RitaRita
Member

Откуда:
Сообщений: 42
Invalid procedure call or argument (Error 5)
Неправильная процедура или аргумент (Ошибка 5)
17 авг 04, 01:40    [885870]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
А чему в этот момент равно KeyAscii?
Можно перед глючной строчкой поставить MsgBox KeyAscii
Или Debug.Print KeyAscii (тады смотреть в Ctrl+G)

Но с такими знаниями на форум обращаются не так уж часто


Если бы :)
17 авг 04, 02:10    [885885]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
RitaRita
Member

Откуда:
Сообщений: 42
1086 равно. Что бы это значило...
17 авг 04, 18:59    [888622]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
Serge Gavrilov
Member

Откуда:
Сообщений: 3248
?chrw(1086)
о
17 авг 04, 21:00    [888769]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
RitaRita
Member

Откуда:
Сообщений: 42
?chrw(1086)
о


Это что, ответ?
17 авг 04, 21:41    [888795]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Функция Chr работает только с числами до 255. Если число больше, то надо пользоваться Chrw.
17 авг 04, 22:00    [888809]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
RitaRita
Member

Откуда:
Сообщений: 42
Получилось. А я уже и не ожидала. Спасибо!
А что значат цифры 13, 9 ?

If KeyAscii = 13 Then Exit Sub
If KeyAscii = 9 Then
varStr = "*"

Просто хочется разобраться.
17 авг 04, 23:51    [888859]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
RitaRita
Получилось. А я уже и не ожидала. Спасибо!

:^) Вот что значит до конца заданный вопрос.

RitaRita
А что значат цифры 13, 9 ?

If KeyAscii = 13 Then Exit Sub
If KeyAscii = 9 Then
varStr = "*"

13 - Enter
9 - Tab
18 авг 04, 00:00    [888863]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
RitaRita
Member

Откуда:
Сообщений: 42
Спасибо!
Хорошо быть :^) !
18 авг 04, 00:11    [888865]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про Борей  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
:^)
18 авг 04, 00:13    [888866]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить