Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/54: Рейтинг темы: голосов - 54, средняя оценка - 4.81
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352

Поле со списком. VBA в MS Access 2003

11.09.2012, 20:40. Показов 11845. Ответов 125
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я создал форму..на ней одна кнопка и 4 поля со списком выбора телевизора. Когда нажимаю на кнопку должна появиться форма с таблицей с выбранными критериями. Мне тут уже помогли...но возникла синтаксическая ошибка...не пойму что не так...
Visual Basic
1
2
  DoCmd.OpenForm "Òåëåâèçîðû1", , , "Ñòðàíà='" & Me.Ñòðàíà & "'" _
  & " or Öåíà<'" & Me.Öåíà & " Or Äèàãîíàëü = " & Me.Äèàãîíàëü & " Or Òèï = " & Me.Òèï
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.09.2012, 20:40
Ответы с готовыми решениями:

VBA, Access. Поле со списком
Проблема вот в чем, в базе данных у меня не получается сделать поле в котором, после выбора значения в поле со списком автоматически...

Поле со списком и VBA
Всем привет! Появилась задача создать список и в зависимости от выбранного элемента этого списка менять значения других списков. ...

Отфильтровать поле со списком на VBA
Вот база данных: В форме &quot;Кл/Добавление: Партия&quot; хочу сделать фильтрацию поля Исполнитель. Там необходимо показывать только тех...

125
1181 / 632 / 39
Регистрация: 30.05.2010
Сообщений: 715
11.09.2012, 20:55
Здравствуйте KOPC1886.
"..возникла синтаксическая ошибка..." - она не самостоятельно возникла,
она рукотворна. Скорее всего опечатка, но опечатка Ваша.
При построении строки фильтра, как и при других обращениях, только текстовые значения
заключаются в кавычки или апострофы, Вы прописали следующую конструкцию:
Visual Basic
1
2
... "Страна='" & Me.Страна & "'" _
  & " or Цена<'" & Me.Цена & " Or Диагональ = " & Me.Диагональ & " Or Тип = " & Me.Тип
Представим её результат:
Страна='Россия' or Цена<'100 Or Диагональ = 54 Or Тип = 1
Апостроф перед значением цены явно лишний.
Евгений.
1
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
11.09.2012, 20:57  [ТС]
Teslenko_EA, Спасибо) Не заметил даже. Вот у меня еще вопрос....какой логический оператор нужно написать, чтобы например если указал только страну, а остальные поля оставил не тронутыми и чтобы тоже выводил таблицу? А то если ставишь только страну, то просит заполнить и остальные поля....а я так не хочу...как это сделать?
0
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
12.09.2012, 10:26
в свойствах поля - изменить значение "обязательное поле"
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
12.09.2012, 10:47
Цитата Сообщение от KOPC1886 Посмотреть сообщение
Вот у меня еще вопрос....какой логический оператор нужно написать, чтобы например если указал только страну, а остальные поля оставил не тронутыми и чтобы тоже выводил таблицу? А то если ставишь только страну, то просит заполнить и остальные поля....а я так не хочу...как это сделать?
Visual Basic
1
2
3
4
5
6
Dim s
s="(Страна='" & nz(Me.Страна," ") & "' OR " & isnull(Me.Страна) & ") " _
& " AND (Цена<" & nz(Me.Цена,0) & " OR " & isnull(Me.Цена) & ") " _
& " AND (Диагональ = " & nz(Me.Диагональ,0) & " OR " & isnull(Me.Диагональ) & ") " _
& " AND (Тип=" & nz(Me.Тип,0) & " OR " & isnull(Me.Тип) & ") " _
DoCmd.OpenForm "Телевизоры1", , , s
1
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
12.09.2012, 17:42  [ТС]
mobile, выделяет все красным((....и не могли бы Вы пожалуйста объяснить этот код?
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
12.09.2012, 18:06
Цитата Сообщение от KOPC1886 Посмотреть сообщение
mobile, выделяет все красным((....и не могли бы Вы пожалуйста объяснить этот код?
Ага, вижу. Там в последней строке, перед Docmd, в конце строки стоит знак переноса "_". Убрать его надо.

Идея фильтра в следуюшем:
1. Условия по одному контролу формы. У вас есть некоторый контрол, скажем Диагональ. Контрол может быть пустой, тогда на него не обращаем внимания и он не участвует в фильтрации данных. Если он содержит значение, то по нему строится фильтр. Получается условие типа Диагональ=значение ИЛИ контрол пустой. Это логика работы. Достигается дополнительным условием проверки на NULL - isnull(Me.Диагональ).
Кроме того, если значение NULL, то в записи условия будет ошибка, условие Диагональ = " & Me.Диагональ превратится в Диагональ = " & а здесь ничего. Ошибка. Поэтому и применена запись вида Диагональ = " & nz(Me.Диагональ,0). Функция NZ превращает пустое значение (NULL) в значение, записанное вторым параметром в NZ. И мы избавляемся от ошибки

2. Условия по совокупности контролов. Все условия фильтра соедиенены между собой логичеким оператором AND, не OR как у вас. Потому что если применить OR, то будут выполнены не все условия. А нужны то все.


И еще. Если опять будут ошибки, то надо распечатать переменную s и показать ее здесь. Перед Docmd напишите строку с командой
Visual Basic
1
debug.Print s
Тогда в области отладки появится строка уже рассчитанного фильтра.
0
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
12.09.2012, 20:06  [ТС]
mobile, я выбрал значения из списка и по нажатию кнопки вылезает окошечко "Выбрать значение параметра" ЭЛТ - это у меня такой тип телевизоров. Вот сама бд если что и выделяется строка, если нажать "Ок" и не написать в этом окошечки ничего
Visual Basic
1
DoCmd.OpenForm "Òåëåâèçîðû1", , , s
Вложения
Тип файла: rar db123.rar (25.6 Кб, 53 просмотров)
0
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
12.09.2012, 20:16
вы в окне отладки переменную проверяли, так как вам это советовал Мобайл?
0
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
12.09.2012, 20:18  [ТС]
sekonya, я написал строку...а где проверить, что получилось? что дает
Visual Basic
1
debug.Print s
0
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
12.09.2012, 20:22
сонтрл g
и в этом окошке

Добавлено через 1 минуту
если советы дельные дают, лучше нажимать спасибо.
это стимулирует!
0
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
12.09.2012, 20:22  [ТС]
sekonya, Спасибо) Вот..выбрал только страну "Япония"
Visual Basic
1
2
 
(Ñòðàíà='ßïîíèÿ' OR False)  AND (Öåíà<0 OR True)  AND (Äèàãîíàëü = 0 OR True)  AND (Òèï=0 OR True)
0
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
12.09.2012, 20:26
это то что напечаталось в окне имидиэйт?
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
12.09.2012, 20:28
KOPC1886, вы сами не знаете своих данных :-)

Поле Тип же текстовое. А не числовое. Значит его, как с полем Страна, надо окаймлять апострофами
Visual Basic
1
2
3
4
s = "(Страна='" & Nz(Me.Страна, " ") & "' OR " & IsNull(Me.Страна) & ") " _
& " AND (Цена<" & Nz(Me.Цена, 0) & " OR " & IsNull(Me.Цена) & ") " _
& " AND (Диагональ = " & Nz(Me.Диагональ, 0) & " OR " & IsNull(Me.Диагональ) & ") " _
& " AND (Тип='" & Nz(Me.Тип, "") & "' OR " & IsNull(Me.Тип) & ") "
1
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
12.09.2012, 20:39  [ТС]
mobile, если сначала запускаешь по параметрам выбираешь все работает...если например поле Тип оставить пустым и выбрать цену больше 1000...то выдает пустую таблицу..почему так?
вот окно имидейт -
Visual Basic
1
(Ñòðàíà=' ' OR True)  AND (Öåíà>1000 OR False)  AND (Äèàãîíàëü> 0 OR True)  AND (Òèï=' ' OR False)
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
12.09.2012, 21:07
KOPC1886, у вас разные варианты и я не знаю на что отвечать. Сначала бsл вариант где цена меньше значения на форме.Теперь вы изменили показания и пошел вариант где цена больше. Где правда?

У меня все идет. Ничего не менял после вставки апострофов. Единственно, после вашего сообщения поменял знак меньше на больше при цене. Тоже все идет. Не знаю о чем вы говорите. (???)
0
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
12.09.2012, 22:10  [ТС]
mobile, я чуть изменил код. Вот когда выбираешь цену и тип телевизора - все выдает. Потом тип телевизора ставишь пустым, а цену оставляешь - то ничего не выдает почему то.
Visual Basic
1
2
3
4
s = "(Ñòðàíà='" & Nz(Me.Ñòðàíà, " ") & "' OR " & IsNull(Me.Ñòðàíà) & ") " _
& " AND (Öåíà>" & Nz(Me.Öåíà, 0) & " OR " & IsNull(Me.Öåíà) & ") " _
& " AND (Äèàãîíàëü> " & Nz(Me.Äèàãîíàëü, 0) & " OR " & IsNull(Me.Äèàãîíàëü) & ") " _
& " AND (Òèï='" & Nz(Me.Òèï, " ") & "' OR " & IsNull(Me.Òèï) & ") "
Добавлено через 20 минут
mobile, Всё исправил!))) Там была пустая строка просто) Но у меня еще вопрос...можно ли создать пустую таблицу, куда будут добавляться те данные, что я выбрал? Просто у меня по мимо телевизоров будут еще телефоны и аудиотехника

Добавлено через 35 минут
mobile, я вот добавил еще форму с Телефонами..написал тот же код, но почему то не открывает форму и выделяет строку кода, которая открывает форму.
Вот код
Visual Basic
1
2
3
4
5
6
7
8
Dim d
d = "(Ñòðàíà='" & Nz(Me.Ñòðàíà, "") & "' OR " & IsNull(Me.Ñòðàíà) & ") " _
& " AND (Öåíà>" & Nz(Me.Öåíà, 0) & " OR " & IsNull(Me.Öåíà) & ") " _
& " AND (Òèï êîðïóñà='" & Nz(Me.Òèïêîðïóñà, "") & "' OR " & IsNull(Me.Òèïêîðïóñà) & ") " _
& " AND (Òèï='" & Nz(Me.Òèï, "") & "' OR " & IsNull(Me.Òèï) & ") "
Debug.Print d
 
DoCmd.OpenForm "Òåëåôîíû1", , , d
0
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
12.09.2012, 22:14
переменную д печатает?
0
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
12.09.2012, 22:16  [ТС]
sekonya, да печатает. Просто сразу нажал на кнопку.
Visual Basic
1
(Ñòðàíà='' OR True)  AND (Öåíà>0 OR True)  AND (Òèï êîðïóñà='' OR True)  AND (Òèï='' OR True)
0
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
12.09.2012, 22:27
значит все нормально?

Добавлено через 1 минуту
а таблицу делайте через запросы на добавление, либо на создание таблицы! лучше на добавление
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2012, 22:27
Помогаю со студенческими работами здесь

Нужно ли устанавливать Access 2003, если в Access 2016 итак возможно разрабатывать БД в формате Access 2003?
Здравствуйте! Подскажите пожалуйста, нужно ли устанавливать Access 2003, если в Access 2016 итак возможно разрабатывать БД в формате...

Access 2003 VBA поиск
Дали задание создать VBA поиск по 3 значениям. В базе sport_club поиск в форме &quot;poskuk&quot;, выводит лишь первые 2 поля вместо 3-х,...

Добавление записи в поле со списком средствами VBA
всем привет, всех с праздником! в общем есть процедура добавления нового значения в каскадные списки: Function AppendLookupTable(cbo As...

Развернуть поле со списком при средствами VBA
Добрый день! Подскажите пожалуйста, можно ли развернуть поле со списком, используя vba. Т.е. так как будто мы нажали на стрелку и...

Поле со списком Access
У меня такая проблема с поле со списком в Акссессе: У меня есть поля со списком Область, Район и Село они взаимосвязаны, то есть когда из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru