Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поле со списком
 
 автор: Nika33   (28.07.2009 в 21:09)   личное сообщение
 
 

Есть ленточная форма, которая содержит поле со списком и еще несколько полей. К полю со списком прикреплен запрос из 5 столбцов. Ситуация такая: при выборе значения из поля со списком данные из остальных столбцов списка должны "попадать" в остальные поля формы...
Что-то я никак не могу сдвинуться с этой мертвой точки... Помогите, пожалуйста!

  Ответить  
 
 автор: Lukas   (28.07.2009 в 21:32)   личное сообщение
 
 

Бросьте вы это "безобразие".
Почитайте о нормализации баз данных.
Приведите свою в соответствие 3 НФ.
Тогда такие "безобразия" не понадобятся.

Это сурьезно.

  Ответить  
 
 автор: Nika33   (28.07.2009 в 21:44)   личное сообщение
 
 

А можно хоть какой-нибуть совет в этом направлении?

  Ответить  
 
 автор: Lukas   (28.07.2009 в 21:50)   личное сообщение
 
 

Если под "этим" подразумевалось то, что сейчас имеется, то:
Используйте свойства поля со списком 'COLUMN'и 'AfterUpdate'.

  Ответить  
 
 автор: Nika33   (28.07.2009 в 23:16)   личное сообщение
 
 

О, чудо! Все заработало именно так, как мне нужно!
Спасибо Вам большое!

  Ответить  
 
 автор: Nika33   (28.07.2009 в 23:57)   личное сообщение
 
 

А как обновить данные в запросе, присоединенном к полю со списком при переходе на новую строчку в ленточной форме?

  Ответить  
 
 автор: Lukas   (29.07.2009 в 00:17)   личное сообщение
 
 

Наверное так:

Private Sub Form_Current()
    If Me.NewRecord Then Me.cmb1.Requery
End Sub

Если под "новой строчкой" подразумевалась "новая запись"

  Ответить  
 
 автор: Nika33   (29.07.2009 в 00:34)   личное сообщение
 
 

Теперь все просто замечательно! Но.... тормозит, зараза
Данных в запросе около 15 тыс.

  Ответить  
 
 автор: Lukas   (29.07.2009 в 00:37)   личное сообщение
 
 

Попробуйте отключить автоподстановку и ограничить набор данных запроса.
Неужели они все одновременно нужны в поле со списком?

  Ответить  
 
 автор: Nika33   (29.07.2009 в 00:42)   личное сообщение
 
 

К сожалению, как раз ради автоподстановки и организовано поле со списком, а данные - это перечень товара, причем цены разные и все они 15 тыс. нужны!

  Ответить  
 
 автор: Lukas   (29.07.2009 в 00:46)   личное сообщение
 
 

Наверное было бы правильнее для выбора использовать форму - справочник товара, с возможной группировкой по группам товара, другим характеристикам.

  Ответить  
 
 автор: Nika33   (29.07.2009 в 00:50)   личное сообщение
 
 

Изначально так и было, но заказчику захотелось, чтобы все сразу, в одном окне. А то ведь дополнительное окно формы вызывать нужно, затем товар искать и т.д.
А так сразу по первой букве уже и название есть, и вся инф-ция о товаре...

  Ответить  
 
 автор: Lukas   (29.07.2009 в 00:59)   личное сообщение
 
 

"Жираф большой, ему видней"
В смысле: заказчик типа всегда прав.

  Ответить  
 
 автор: АлексейЕ   (29.07.2009 в 09:40)   личное сообщение
 
 

Иногда заказчику надо уметь говорить "нет", иначе второй раз он к вам не обратится.

  Ответить  
 
 автор: Nika33   (29.07.2009 в 16:48)   личное сообщение
 
 

Спасибо всем, кто искренне мне помогает! Я вот опять попрошу у вас помощи! Как лучше всего организовать поиск записи в форме? Можно добавить поле сосписком и выбирая в нем значение (по первым буквам, все по алфавиту) искать соответствующую запись в форме. Но мне это не совсем подходит. Как бы сделать так, чтобы в какое-то отдельное поле вводить символы и при этом нужная запись в форме ставала текущей? Это у меня получается, но только по первому символу, вот (на событие ИзменениеПоля13 вешаю
Me.RecordsetClone.FindFirst "Mid([НаименТовара],1,1) = '" & Mid(Me.Поле13.Text, 1, 1) & "'"
Me.Bookmark = Me.RecordsetClone.Bookmark )
А так чтобы по мере ввода символов в поле находилась соответствующая запись?

  Ответить  
 
 автор: Lukas   (29.07.2009 в 18:37)   личное сообщение
 
 

Может так:

Private Sub fldFind_Change()
    With Me.RecordsetClone
        .FindFirst "ItemName Like '" & Me.fldFind.Text & "*'"
        If Not .EOF Then Me.Bookmark = .Bookmark
    End With
End Sub

  Ответить  
 
 автор: Nika33   (29.07.2009 в 19:59)   личное сообщение
 
 

Спасибо за ответ, но это как раз работает только по первому символу (также как у меня). Вводим символ 'м', сразу появляется запись на 'м...' Затем вводим 'о' и опять появляется запись на 'о...' а не 'мо..' А надо, чтобы 'мо...'

  Ответить  
 
 автор: Nika33   (29.07.2009 в 20:08)   личное сообщение
 
 

Вау! Это я уже торможу (вообще-то я всегда торможу, но сейчас особенно, потому и обращаюсь к вам за помощью) Все работает, как надо! Но только затруднительно теперь символы в поле вводить, они выделением светятся и пропадают при вводе следующего...., только если мышкой убирать выделение, но этого никто делать не будет. Их нужно все подряд вводить один за одним, а так не получается...

  Ответить  
 
 автор: Гоблин   (29.07.2009 в 20:14)   личное сообщение
 
 

Загляни сюда и скушай сникерс
http://hiprog.com/index.php?option=com_content&task=view&id=251661615&Itemid=35

И проверь не нажата ли кнопочка INS

  Ответить  
 
 автор: Nika33   (29.07.2009 в 20:23)   личное сообщение
 
 

Если б вы знали сколько я уже этих сникерсов скушала с шеколадками и булочками, сейчас вот палочки жую....
И кажется не зря, балуюсь со свойством .SelStart, и вроде бы получается!

  Ответить  
 
 автор: Nika33   (29.07.2009 в 20:24)   личное сообщение
 
 

А страничка очень интересная, спасибо за ссылочку

  Ответить  
 
 автор: Lukas   (29.07.2009 в 20:25)   личное сообщение
 
 

А так:

Private Sub fldFind_Change()
    With Me.RecordsetClone
        .FindFirst "ItemName Like '" & Me.fldFind.Text & "*'"
        If Not .EOF Then
            Me.Bookmark = .Bookmark
            With Me.fldFind: .SelStart = Len(.Text) + 1: End With
        End If
    End With
End Sub

  Ответить  
 
 автор: Nika33   (29.07.2009 в 20:31)   личное сообщение
 
 

УРА! Да, все получилось, Спасибо Lukas! Я к вашему предыдущему примеру добавила строчки
If Me.Поле13.SelLength > 0 Then
Me.Поле13.SelStart = Me.Поле13.SelLength
End If
И теперь все работает, остается все отшлифовать чтоб красиво было. Конечно не совсем так как хотел клиент, но в данном случае мне кажется это неплохой вариант. Спасибо всем! Я не прощаюсь, разработка еще далеко не закончена...

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList