powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поле со списком не работает!
25 сообщений из 26, страница 1 из 2
Поле со списком не работает!
    #32337250
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть поле со списком для года. Суть - надо, чтобы в поле со списком выбирался год (причем у меня есть 20 записей для 2001 года, 40 записей для 2002 года) и надо, чтобы этот год показывался только один раз, т.е. один раз показывался 2001 год, 1 раз показывался 2002 год и т.д. (а Год показывается много раз) и есть второе поле со списком (для Товаров), в котором для выбранного года должны показываться соответствующие записи Товаров.

для поля со списком Год, на AfterUpdate пишу:
Private Sub Год_AfterUpdate()
Dim rst As Recordset, frm As Form
Set frm = Me.Подформа.Form
Set rst = frm.RecordsetClone
rst.FindFirst "([Год]=# " & Format(Me.Год, "yyyy") & "#)"
If rst.NoMatch = False Then
frm.Bookmark = rst.Bookmark
Me.Товар = rst!Товар
Else
MsgBox "Нет данных!"
End If
Exit Sub
End Sub

Ругается на: Me.Год, "yyyy"

Подскажите пожалуйста, что надо исправить, чтобы работало так, как надо?
В таблице, поле Год является текстовым полем, может быть по этому Access не хочет понимать формат "yyyy".
:-)
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337251
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мож # лишние? год то у тя строковый ...
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337255
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Конечно, лишние. Это же какой-нибудь Integer или Long, а не дата.
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337256
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за совет - # убрал, но Access все равно ругается на ту же строку.
А еще мне бы сделать так, чтобы год отображался не по 20 раз для каждого года, а только один раз.
:-)
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337257
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
И формат по yyyy тоже не получится. По той же причине.
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337259
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А чтобы каждый год показывался один раз, надо, чтобы в селекте у подформы было group by по году.
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337261
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще - то примерно так и думал, что "yyyy" не получится (но в тайне надеялся, что боги Access все-таки помогут мне решить данную задачу).
:-)
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337371
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но в тайне надеялся, что боги Access все-таки помогут мне решить данную задачу

а простым земным, можно отвечать?
скажи как у тебя в Me.Год год выглядет - это раз ты его форматируешь ....
и что у тебя в источнике строк для списка?
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337381
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В источнике строк: SELECT [Запрос].[Год] FROM [Запрос] GROUP BY [Запрос].[Год];

А Год выводится в формате 2001, 2002 и т.п. ( формат YYYY ).
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337391
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и усё правильно ....
а во второй список поставь
SELECT запрос.товар, запрос.год FROM запрос WHERE запрос.год=forms!frmObKs!Год

а в
Private Sub Год_AfterUpdate()
Me.ПолеСоСпискомТовара.Requery
End Sub
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337436
CtrlAlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе эту строку с датой можно преобразовать в нормальную дату с помощью DateValue, а потом уж задавать нужные форматы...
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337446
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обычно хранят дату операции в формате даты и необходимости хранить год в отдельном поле нет ...

в этом случае для поля со списком можно задать такой источник:

MYCOMBO.ROWSOURCE = "SELECT DISTICT(YEAR(operation_date)) from MyTable "

или я чего то не догоняю?
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32337449
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DISTI N CT очепятка
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338224
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое за советы.
Сделал так:
Private Sub Год_AfterUpdate()
Dim rst As Recordset, frm As Form
Set frm = Me.Подформа.Form
Set rst = frm.RecordsetClone
Год.RowSource = "SELECT DISTINCT (Год(operation_date)) from Запрос "
If rst.NoMatch = False Then
frm.Bookmark = rst.Bookmark
Me.Товар.Requery
Else
MsgBox "Нет данных!"
End If
Exit Sub
End Sub

Для второго поля со списком для товаров сделал:
На AfterUpdate:
Private Sub Товар_AfterUpdate()
recordFind
End Sub

На Enter:
Private Sub Товар_Enter()
Me.Товар.RowSource = "SELECT Товар FROM [Запрос] WHERE (((Год)=[Forms]! [Моя форма]![Год]));"
End Sub

И опять не работает:
Ругается на: Me.Товар.RowSource

Подскажиет пожалуйста, что я опять неправильно сделал?
:-)
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338429
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Лишний пробел после воскл.знака.
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338554
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! Пробел убрал - но не помогло, опять ругается на ту же строку.
Private Sub Товар_Enter()
Me.Товар.RowSource = "SELECT Товар FROM [Запрос] WHERE (((Год)=[Forms]![Моя форма]![Год]));"
End Sub
Access пишет:
"Method or data member not found".
Подскажите пожалуйста, что у меня опять неправильно?
:-)
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338757
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очччччень прошу, помогите пожалуйста!
Неужели никто не знает ответ на мой вопрос!!!
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338762
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Единственное, что приходит в голову, - это предположение, что Товар - это не комбобокс и не листбокс.
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338769
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, Товар это точно поле со списком (комбобокс).
С головой у меня, пока что, все в порядке.
:-)
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338785
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй сделать так:
Код: plaintext
1.
2.
Private Sub Товар_Enter() 
Me.Товар.RowSource =  "SELECT Товар FROM [Запрос] WHERE Год="  & [Forms]![Моя форма]![Год] 
End Sub 

И вообще, я из кода обычно все лишние скобки убираю, а то не разберешься потом...
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338798
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое за совет.
Написал:
Me.Товар.RowSource = "SELECT Товар FROM [Запрос] WHERE Год=" & [Forms]![Моя форма]! [Год]

Access ругается на
[Год] ?????
Что за ***!
Есть ли справедливость на этом свете? Неужели моя форма так никогда и не будет работать?
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338810
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделай так
где-то dim dddd as string

тут
ddd="SELECT Товар FROM [Запрос] WHERE Год=" & [Forms]![Моя форма]![Год]
debug.print ddd
Me.Товар.RowSource = ddd


и посмотри , что у тебя получеется в ddd
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338817
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как посмотреть, что получилось в ddd (ч/з Immediate не получилось)?
Ругается на:
Me.Товар.RowSource = ddd

В Add Watch для ddd:
Value: Can't compile module
Type: Empty
P.S.
Наверно надо
dim ddd as string
а не
dim dddd as string
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338822
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да 3-4 d .... сэм-восэм

конечно
dim ddd as string
посмотреть Ctrl+d
...
Рейтинг: 0 / 0
Поле со списком не работает!
    #32338873
iska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gyslik:
Смотрим пост от 28-ноя-03 19:21

(1) в первом случае (для контрола Год) вы пишете:
Год.RowSource = "SELECT DISTINCT ( Год(operation_date) ) from Запрос"

(2) во втором (для контрола Товар):
Me.Товар.RowSource = "SELECT Товар FROM [Запрос] WHERE (( (Год) =[Forms]! [Моя форма]![Год]));"

У вас в [Запрос] есть поле [Год]? Или вы просто забыли указать во втором случае аргументы для функции Год()?

Если следовать логике п. (1), т.к. похоже, что вы воспользовались советом АлексейК в посте от 28-ноя-03 10:12, то, по-моему, строка для п. (2) выше должна выглядеть так:
Код: plaintext
Me.Товар.RowSource =  "SELECT Товар FROM [Запрос] WHERE (Год(operation_date)=[Forms]![Моя форма]![Год]);"  
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поле со списком не работает!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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