Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 43
1

Синтаксис запроса в VBA

10.01.2019, 15:31. Показов 1867. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь сделать запрос на изменение полей таблицы Оплата. Возникает ошибка "Run-time error 3144". Весь запрос помечается желтым, а стрелка указывает на последнюю строку.

SQL
1
2
3
4
5
6
CurrentDb.Execute "UPDATE Оплата " & _
    " SET [Основная_зарплата] = '" & [Forms]![Зарплата]![Расчет]![Основная_зарплата] & "'" & _
    ", [Премия] = " & [Forms]![Зарплата]![Расчет]![Премия] & "" & _
    ", [Подоходный] = " & [Forms]![Зарплата]![Расчет]![Подоходный] & "" & _
    ", [Пенсионный] = " & [Forms]![Зарплата]![Расчет]![Пенсионный] & "" & _
    " WHERE [Код_зарплаты] = '" & [Forms]![Зарплата]![Расчет]![Код_зарплаты] & "';"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2019, 15:31
Ответы с готовыми решениями:

Синтаксис запроса на объединение в VBA
Доброго времени суток! Не пинайте сильно за поставленный так вопрос. Наверное он очевиден для...

Синтаксис запроса
Здравствуйте! Помогите пожалуйста с синтаксисом. Нужен sql запрос источником данных которого...

Синтаксис between в VBA
Напомните пожалуйста каков синтаксис between в VBA? Есть запрос в SQL с выборкой периода на основе...

Синтаксис в VBA - FindFirst
В Access 2003 пытаюсь сделать так, чтобы при выборе в левой части формы (поле31) (см принтскрин)...

20
1266 / 448 / 129
Регистрация: 21.03.2013
Сообщений: 1,210
10.01.2019, 15:47 2
По моему так
SQL
1
CurrentDb.Execute "UPDATE Оплата  ([Основная_зарплата], [Премия], [Подоходный], [Пенсионный]) values ("'" & [Forms]![Зарплата]![Расчет]![Основная_зарплата] & "' ,'"  [Forms]![Зарплата]![Расчет]![Премия] & "' ,    '" & [Forms]![Зарплата]![Расчет]![Подоходный] & "' ,'" & [Forms]![Зарплата]![Расчет]![Пенсионный] & "'")   WHERE [Код_зарплаты] = '" & [Forms]![Зарплата]![Расчет]![Код_зарплаты] & "'"
0
Модератор
Эксперт MS Access
6012 / 2840 / 693
Регистрация: 12.06.2016
Сообщений: 7,624
10.01.2019, 15:51 3
Цитата Сообщение от boby104 Посмотреть сообщение
По моему так
values используется в INSERT INTO, но не в UPDATE.
0
1266 / 448 / 129
Регистрация: 21.03.2013
Сообщений: 1,210
10.01.2019, 16:24 4
Цитата Сообщение от Capi Посмотреть сообщение
values используется в INSERT INTO, но не в UPDATE.
Согласен.

Не по теме:

давайте обсудим без SuperNoobas,
какие у него стоят задачи, структура данных и какие ему нужны запросы.
может он поймет что мы не ясновидящие

0
0 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 43
10.01.2019, 19:07  [ТС] 5
boby104, а, ну, простите, просто я думала, что кода достаточно для нахождения синтаксической ошибки..? Или не синтаксическая? Ээ
Ну в общем

1. Есть форма "Зарплата". На ней подчиненная форма "Расчет"
2. При нажатии на кнопку должны обновляться поля записи в таблице "Оплата" с помощью запроса выше. Но при нажатии на кнопку возникает ошибка

Добавлено через 8 минут
Хотя, подождите, я сейчас скину бд
0
Мы один, давай на "ты"
3421 / 1299 / 312
Регистрация: 16.06.2016
Сообщений: 3,046
10.01.2019, 20:13 6
SuperNoobas, открой набор (Recordset) и обнови поля. Или привяжи форму к данным.

Обычно так не делают (обновлять), нужно добавлять данные.
0
0 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 43
10.01.2019, 20:30  [ТС] 7
Поздновато правда(
смотреть свойство кнопки "добавить" на подчиненной форме Расчет, воть
Вложения
Тип файла: zip бд10.zip (76.2 Кб, 5 просмотров)
0
0 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 43
11.01.2019, 09:03  [ТС] 8
Панург, не подскажете как это делать?
Цитата Сообщение от Панург Посмотреть сообщение
Обычно так не делают (обновлять), нужно добавлять данные.
0
Мы один, давай на "ты"
3421 / 1299 / 312
Регистрация: 16.06.2016
Сообщений: 3,046
11.01.2019, 09:43 9
Цитата Сообщение от SuperNoobas Посмотреть сообщение
не подскажете как это делать?
Нет, не подскажу. Форум не замена учебной литературы. Учись пользоваться и поиском - без интереса переписывать азбучные истины.

Я подсказал способ, но не реализацию.
0
1266 / 448 / 129
Регистрация: 21.03.2013
Сообщений: 1,210
11.01.2019, 10:17 10
Цитата Сообщение от SuperNoobas Посмотреть сообщение
смотреть свойство кнопки "добавить" на подчиненной форме Расчет, воть
Пытался разобраться в смысле кнопки добавить на расчет.
Не понял у вас все поля кроме оклада расчетные (причем нормы расчета уже забиты в запрос, который служит данными для формы) - зачем их добавлять в таблицу оплаты?
0
ᴁ®
Эксперт MS Access
3648 / 2004 / 427
Регистрация: 13.12.2016
Сообщений: 6,894
Записей в блоге: 5
11.01.2019, 10:31 11
SuperNoobas, в предыдущей теме я вам в своем решении именно кнопку предложил для добавления записи.
Посмотрите ее код. ссылка
Из формы сотрудники
0
1266 / 448 / 129
Регистрация: 21.03.2013
Сообщений: 1,210
11.01.2019, 10:38 12
SuperNoobas,
если я правильно понял
Вложения
Тип файла: zip бд10.zip (120.6 Кб, 1 просмотров)
0
126 / 96 / 33
Регистрация: 28.02.2017
Сообщений: 478
11.01.2019, 12:55 13
SuperNoobas,
А зачем такие сложности с кнопкой. Насколько я понял, вся проблема в том что новые данные не записываются в таблицу "Оплата". Нужно просто повесить на событие поля "Дата зарплаты" событие после обновления следующий код и ни каких кнопок не нужно.
Visual Basic
1
2
3
4
5
6
7
Private Sub Дата_зарплаты_AfterUpdate()
Me.Основная_зарплата = Forms!Зарплата!Фамилия_имя_отчество.Column(2)
Me.Премия = Основная_зарплата * 0.2
Me.Подоходный = Основная_зарплата * 0.2 + Основная_зарплата * 0.13
Me.Пенсионный = Основная_зарплата * 0.2 + Основная_зарплата * 0.01
Me.Dirty = False
End Sub
Вложения
Тип файла: zip бд10.zip (181.7 Кб, 5 просмотров)
0
Модератор
Эксперт MS Access
6012 / 2840 / 693
Регистрация: 12.06.2016
Сообщений: 7,624
11.01.2019, 13:40 14
Цитата Сообщение от pagpal Посмотреть сообщение
Основная_зарплата
Что это за "Основная_зарплата"?
Может, оклад?

Цитата Сообщение от pagpal Посмотреть сообщение
Me.Подоходный = Основная_зарплата * 0.2 + Основная_зарплата * 0.13
Скобки не потеряли, случайно?
Цитата Сообщение от pagpal Посмотреть сообщение
Me.Пенсионный = Основная_зарплата * 0.2 + Основная_зарплата * 0.01
Аналогичный вопрос: скобки не потеряли, случайно?
0
126 / 96 / 33
Регистрация: 28.02.2017
Сообщений: 478
11.01.2019, 13:57 15
Цитата Сообщение от Capi Посмотреть сообщение
Что это за "Основная_зарплата"?
Может, оклад?
Как у ТС названо поле в подчиненной форме, так и взято в процедуру.
Цитата Сообщение от Capi Посмотреть сообщение
Скобки не потеряли, случайно?
Скобки в каком месте? Если имеется ввиду здесь
Цитата Сообщение от Capi Посмотреть сообщение
Основная_зарплата * 0.2
, то я не вижу в них смысл, так как по правилам арифметики сначала выполняется * а потом +.
0
ᴁ®
Эксперт MS Access
3648 / 2004 / 427
Регистрация: 13.12.2016
Сообщений: 6,894
Записей в блоге: 5
11.01.2019, 14:18 16
у меня было реализовано немного не так
Visual Basic
1
2
3
4
5
6
7
Private Sub Кнопка23_Click()
Me.Дата_зарплаты = Date
Me.Основная_зарплата = Me.okl
Me.Премия = Me.Основная_зарплата * Me.prem
Me.Подоходный = (Me.Премия + Me.Основная_зарплата) * 0.13
Me.Пенсионный = (Me.Премия + Me.Основная_зарплата) * 0.01
End Sub
где Me.okl и Me.prem свободные поля и со скобками как говорит Capi, все правильно
Me.prem по умолчанию 20% - но можно и другой процент обозначить....
0
126 / 96 / 33
Регистрация: 28.02.2017
Сообщений: 478
11.01.2019, 14:24 17
Цитата Сообщение от АЕ Посмотреть сообщение
и со скобками как говорит Capi, все правильно
В вашем случае да, так как вам нужно сначала сложить два поля, а потом умножить. А в моем случае скобки бесполезны.
0
ᴁ®
Эксперт MS Access
3648 / 2004 / 427
Регистрация: 13.12.2016
Сообщений: 6,894
Записей в блоге: 5
11.01.2019, 14:59 18
Цитата Сообщение от pagpal Посмотреть сообщение
А в моем случае скобки бесполезны
это точно!
Цитата Сообщение от Capi Посмотреть сообщение
Me.Подоходный = Основная_зарплата * 0.2 + Основная_зарплата * 0.13
Расшифровываю -подоходный = преммя + 13% от зарплаты
не 130 руб с 1000 а 200 премии +130 = 330
хотя должно быть (1000+200)*13% = 156
Разберитесь с элементарным...
0
Модератор
Эксперт MS Access
6012 / 2840 / 693
Регистрация: 12.06.2016
Сообщений: 7,624
11.01.2019, 15:20 19
Цитата Сообщение от pagpal Посмотреть сообщение
я не вижу в них смысл, так как по правилам арифметики сначала выполняется * а потом +
Хм-м-м.
Сумму премии выдираете у сотрудника в качестве подоходного налога?
Жестоко.
0
126 / 96 / 33
Регистрация: 28.02.2017
Сообщений: 478
11.01.2019, 15:21 20
Цитата Сообщение от АЕ Посмотреть сообщение
Разберитесь с элементарным...
Да согласен, формулы брал с запросов ТС, возможно где-то не досмотрел, теперь конечно и скобки нужны, должно быть так
Visual Basic
1
2
3
4
5
6
7
Private Sub Дата_зарплаты_AfterUpdate()
Me.Основная_зарплата = Forms!Зарплата!Фамилия_имя_отчество.Column(2)
Me.Премия = Основная_зарплата * 0.2
Me.Подоходный = (Основная_зарплата * 0.2 + Основная_зарплата) * 0.13
Me.Пенсионный = (Основная_зарплата * 0.2 + Основная_зарплата) * 0.01
Me.Dirty = False
End Sub
0
11.01.2019, 15:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2019, 15:21
Помогаю со студенческими работами здесь

Синтаксис SELECT FROM в VBA
А кто мне подскажет в чём тут дело? strSQL = "SELECT * FROM adr" CurrentDb.Execute strSQLПри...

Синтаксис запроса со строковой переменной
Здравствуйте. Подскажите, пожалуйста, правильный синтаксис запроса. Есть: s -строковая...

Какой синтаксис запроса пересечения?
В Accesse мне нужно объединить две таблицы,в результате чего будут выводится общие данные. Какой...

Как правильно написать синтаксис в VBA?
Всем Здраствовать и Доброго дня! Подскажите как правильно написать синтаксис в VBA? Пишу так:...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru