Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.02.2020
Сообщений: 61
Access

В процессе выполнения макроса вывести сообщение при условии, есть или нет значение в поле

03.09.2020, 13:55. Показов 1816. Ответов 14

Студворк — интернет-сервис помощи студентам
Всем привет!
Есть макрос для экспорта из запроса Access в XML.
В нем добавил вывод сообщения об успешном экспорте, но сообщение выводиться и в случае отсутствия данных для экспорта.

задумался как написать условие чтобы в случае присутствия данных для экспорта выводилось сообщение "Экспорт выполнен!", если нет то "Нет данных для экспорта!"

решил привязать к полю "name" и записал так

Visual Basic
1
2
3
4
If (rst.fields("name")) = "" Then
MsgBox "Экспорт выполнен!"
Else
MsgBox "Нет данных для экспорта!"
Выдает ошибку.

Подскажите, как правильно записать условие!?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.09.2020, 13:55
Ответы с готовыми решениями:

Уведомление в процессе выполнения макроса
подскажите как сделать уведомление в процессе выполнения макроса типа: "пожалуйста,подождите..."?

Для матрицы А (4 строки, 4 столбца) вывести те столбцы, в которых есть нулевые элементы, или вывести сообщение "нет столбцов с нулями"
Задание состоит в написании программного кода Delphi. Для матрицы А (4 строки, 4 столбца) вывести те столбцы, в которых есть нулевые...

Неактивность компонента при условии! Реально или нет?
В меню программы есть ползунок Громкость. Так же есть галочка мьюта рядом. Короче, вод код. Что я не так сделал? Если тот код стоит -...

14
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4171 / 2457 / 511
Регистрация: 13.12.2016
Сообщений: 8,343
Записей в блоге: 5
03.09.2020, 14:47
Serg064, конструкция не закончена. в конце должно быть
Visual Basic
1
End If
0
0 / 0 / 0
Регистрация: 17.02.2020
Сообщений: 61
03.09.2020, 14:58  [ТС]
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    Dim xmlParser As Object ' MSXML2.DOMDocument
    Dim xmlInstr As Object ' MSXML2.IXMLDOMProcessingInstruction
    Dim rootNode As Object ' MSXML2.IXMLDOMElement
    Dim subNode1 As Object ' MSXML2.IXMLDOMElement
    Dim subNode2 As Object ' MSXML2.IXMLDOMElement
    Dim subNode3 As Object ' MSXML2.IXMLDOMElement
    Dim subNode4 As Object ' MSXML2.IXMLDOMElement
    
    Dim rst As Object 'Dao.recordset
    
Set rst = CurrentDb.OpenRecordset("select * from ExportXML order by name") ' ExportXML это название запроса в базе Access
 
Do While Not rst.EOF
 
Set xmlParser = CreateObject("Msxml2.DOMDocument")
Set xmlInstr = xmlParser.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
xmlParser.appendChild xmlInstr
 
If NZ(rst.fields("name")) = "" Then MsgBox "Нет данных для экспорта": Exit Sub ' ВЫДАЕТ ОШИБКУ
 
Set rootNode = xmlParser.appendChild(xmlParser.createElement("root")) 'создаем рутовую ноду
 
Set subNode1 = rootNode.appendChild(xmlParser.createElement("orders"))
Set subNode2 = subNode1.appendChild(xmlParser.createElement("order"))
    subNode2.setAttribute "descr", "Заказ"
    subNode2.setAttribute "name", rst.fields("name")
    subNode2.setAttribute "field_1", Format(rst.fields("field_1"), "dd\.mm\.yyyy hh\.mm\.ss")
    subNode2.setAttribute "field_2", Format(rst.fields("field_2"), "dd\.mm\.yyyy hh\.mm\.ss")
    
    
Set subNode3 = rootNode.appendChild(xmlParser.createElement("params"))
Set subNode4 = subNode3.appendChild(xmlParser.createElement("param"))
    subNode4.setAttribute "field_4", rst.fields("field_4")
    subNode4.setAttribute "field_5", rst.fields("field_5")
  
  
'Debug.Print xmlParser.XML
 
xmlParser.Save CurrentProject.Path & "\" & rst.fields("name") & ".xml"
 
DoEvents
 
rst.MoveNext
 
Loop
 
MsgBox "Экспорт выполнен"
 
rst.Close
    
 
    Set xmlParser = Nothing
    Set rst = Nothing
Выдает ошибку
0
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4171 / 2457 / 511
Регистрация: 13.12.2016
Сообщений: 8,343
Записей в блоге: 5
03.09.2020, 15:03
Serg064, замените
If NZ(rst.fields("name")) = "" Then MsgBox "Нет данных для экспорта": Exit Sub ' ВЫДАЕТ ОШИБКУ
на
Visual Basic
1
2
3
4
If NZ(rst.fields("name")) = "" Then 
      MsgBox "Нет данных для экспорта" 
      Exit Sub 
End If
Добавлено через 4 минуты
Может использовать функцию IsNull ?
0
0 / 0 / 0
Регистрация: 17.02.2020
Сообщений: 61
03.09.2020, 15:04  [ТС]
Не видит и выдает сообщение Экспорт выполнен
0
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4171 / 2457 / 511
Регистрация: 13.12.2016
Сообщений: 8,343
Записей в блоге: 5
03.09.2020, 15:15
Serg064, я не знаю, конкретно какие значения у вас в этом поле...
гадать?
может Len(NZ(rst.fields("name"))) =0 в условие...
0
0 / 0 / 0
Регистрация: 17.02.2020
Сообщений: 61
03.09.2020, 15:21  [ТС]
Цитата Сообщение от АЕ Посмотреть сообщение
какие значения
текст,

но тоже самое пропускает и Экспорт выполнен
0
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4171 / 2457 / 511
Регистрация: 13.12.2016
Сообщений: 8,343
Записей в блоге: 5
03.09.2020, 15:29
Цитата Сообщение от Serg064 Посмотреть сообщение
пропускает и Экспорт выполнен
Что пропускает? Вы спровоцировали в наборе записей пустое значение в поле с названием name?
Может зам запрос имеет 0 записей и тогда никакой ошибки нет...
перед циклом поставьте счетчик x=0
в цикле поставьте x=x+1
А перед проверкой посмотрите чему он равен
Вот вам и рещение
0
0 / 0 / 0
Регистрация: 17.02.2020
Сообщений: 61
03.09.2020, 15:35  [ТС]
Цитата Сообщение от АЕ Посмотреть сообщение
Может зам запрос имеет 0 записей и тогда никакой ошибки нет...
Я и хочу, чтобы если в запросе нет записей то сообщение "Нет данных для экспорта", в противном случае "Экспорт выполнен"

Я не программист, только учусь)
0
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4171 / 2457 / 511
Регистрация: 13.12.2016
Сообщений: 8,343
Записей в блоге: 5
03.09.2020, 15:36
вот кусок - проверяйте
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
x = 0
Do While Not rst.EOF
 
Set xmlParser = CreateObject("Msxml2.DOMDocument")
Set xmlInstr = xmlParser.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
xmlParser.appendChild xmlInstr
 
Set rootNode = xmlParser.appendChild(xmlParser.createElement("root")) 'создаем рутовую ноду
 
Set subNode1 = rootNode.appendChild(xmlParser.createElement("orders"))
Set subNode2 = subNode1.appendChild(xmlParser.createElement("order"))
    subNode2.setAttribute "descr", "Заказ"
    subNode2.setAttribute "name", rst.Fields("name")
    subNode2.setAttribute "field_1", Format(rst.Fields("field_1"), "dd\.mm\.yyyy hh\.mm\.ss")
    subNode2.setAttribute "field_2", Format(rst.Fields("field_2"), "dd\.mm\.yyyy hh\.mm\.ss")
    
    
Set subNode3 = rootNode.appendChild(xmlParser.createElement("params"))
Set subNode4 = subNode3.appendChild(xmlParser.createElement("param"))
    subNode4.setAttribute "field_4", rst.Fields("field_4")
    subNode4.setAttribute "field_5", rst.Fields("field_5")
  
  
'Debug.Print xmlParser.XML
 
xmlParser.Save CurrentProject.Path & "\" & rst.Fields("name") & ".xml"
 
DoEvents
 
rst.MoveNext
x = x + 1
Loop
If x = 1 Then MsgBox "Нет данных для экспорта" Else MsgBox "Экспорт выполнен"
rst.Close
1
0 / 0 / 0
Регистрация: 17.02.2020
Сообщений: 61
03.09.2020, 15:37  [ТС]
под пропускает, я имел ввиду, что записей нет в запросе и сообщения "Нет данных для экспорта" нет, а появляется "Экспорт выполнен"
0
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4171 / 2457 / 511
Регистрация: 13.12.2016
Сообщений: 8,343
Записей в блоге: 5
03.09.2020, 15:40
Лучший ответ Сообщение было отмечено Serg064 как решение

Решение

могу ошибаться и проверять надо на x = 0

Добавлено через 55 секунд
поставьте в конце debug.print x = чему равен?
1
0 / 0 / 0
Регистрация: 17.02.2020
Сообщений: 61
03.09.2020, 16:07  [ТС]
Цитата Сообщение от АЕ Посмотреть сообщение
и проверять надо на x = 0
Заработало. Спасибо Вам большое.

Можно еще один вопрос?

Добавлено через 21 минуту
Если установили счетчик, то можно ли в сообщение Экспорт выполнен вывести количество циклов

Чтобы выводилось, например, "Экспорт выполнен! Всего заказов 5"
0
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4171 / 2457 / 511
Регистрация: 13.12.2016
Сообщений: 8,343
Записей в блоге: 5
03.09.2020, 16:13
Visual Basic
1
If x = 0 Then MsgBox "Нет данных для экспорта" Else MsgBox "Экспорт выполнен, заказов " & x
а для спасибо кнопка имеется....
1
0 / 0 / 0
Регистрация: 17.02.2020
Сообщений: 61
03.09.2020, 16:18  [ТС]
Огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.09.2020, 16:18
Помогаю со студенческими работами здесь

Вывести значение при условии
Весь мозг сломал. Дана ячейка, напр., J2. Необходимо: Если J2<=24999, то в ячейку K2 выводится число 0. Если...

Поле со списком (определить имеет или нет значение)
Как определить пустое ли поле списком или нет? Я делаю условие: If Me.Комп.Value = Null then ... Пробовал и так: If Me.Комп = Null...

Нужно, чтобы в поле V формула считала при условии что в поле M стоит 0
привет нужно, чтобы в поле V формула считала при условии что в поле M стоит 0 в противном случае складывает значения из поля A :( моя...

Вывести на экран слова, в которых все символы повторяющиеся, или сообщение «Нет», если требуемых слов нет
Дана последовательность символов, состоящая из слов. Вывести на экран слова, в которых все символы повторяющиеся, или сообщение «Нет», если...

Определить есть ли такое значение в базе данных или нет
Здравствуйте делаю регистрацию и хочу проверить есть ли такой эмейл в базе. $rezul = mysql_query("SELECT * FROM users WHERE...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru