Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / -1 / 0
Регистрация: 15.06.2017
Сообщений: 122

Запрос. В вба не работает, а в конструкторе для запросов работает

25.03.2018, 15:27. Показов 3480. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Public Function addData(pID As String, exID As String)
    Dim sql As String
    sql = "INSERT INTO currentExpenses ( costDate, описание, costID, counterpartiesID, total)" & _
"SELECT payment.dateOfPayment, payment.purposeOfPayment, " & Chr(34) & "CE0001" & Chr(34) & ", payment.personID, payment.total " & _
"FROM payment" & _
"WHERE (((payment.paymentCode)= " & Chr(34) & "P0373" & Chr(34) & "));"
 
CurrentDb.QueryDefs("lastQuery").sql = sql
CurrentDb.QueryDefs("lastQuery").Execute
 
End Function
SQL
1
2
3
4
INSERT INTO currentExpenses ( costDate, описание, costIDtotal, counterpartiesID, total)
SELECT payment.dateOfPayment, payment.purposeOfPayment, "CE0001", payment.personID, payment.total 
FROM payment
WHERE (((payment.paymentCode)= "P0373"));
Раньше было
SQL
1
FROM payment AS t1
Chr(34) - двойные ковычки
Вот и весь код.
Пишет что проблема в фроме, но я не могу понять что там не так.
Если для решения требуеться база я скину!
Зарание спасибо!!!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2018, 15:27
Ответы с готовыми решениями:

Запрос при выполнении в вба просит ввести данные, а в конструкторе работает нормально
Столкнулся со следующей проблемой. В вба запрос выдает это: Но если делать через конструктор запросов, то все отлично работает. Этих...

Как изменить запрос в конструкторе запросов Visual Studio?
Visual Studio 2015 MS Sql - 2014 Разместил на форме "dataGridView". Подключил источник данных. Создал запрос. Вопрос. Где...

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

53
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,630
26.03.2018, 15:55
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от meref Посмотреть сообщение
Нет costID - короткий текст
Базу давно пора выкладывать
0
0 / -1 / 0
Регистрация: 15.06.2017
Сообщений: 122
26.03.2018, 15:56  [ТС]
Я скину базу. Запрос 21.1.1 - копия (2).rar
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,630
26.03.2018, 16:00
Цитата Сообщение от meref Посмотреть сообщение
Я скину базу. Запрос 2
И "Запрос 2" и SQL:
SQL
1
2
UPDATE payment SET payment.costID = 'CE0001'
WHERE (((payment.paymentCode)='P0001'));
Всё работает !
Код где смотреть?
0
0 / -1 / 0
Регистрация: 15.06.2017
Сообщений: 122
26.03.2018, 16:06  [ТС]
Код в модуле в функции addData() там данные в табл затрат и в табл оплат. У меня не работет(.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Function addData(pID As String, exID As String)
    Dim sql As String
    sql = "INSERT INTO currentExpenses ( costDate, îïèñàíèå, costID, counterpartiesID, total)" & _
" SELECT payment.dateOfPayment, payment.purposeOfPayment, '" & exID & "', payment.personID, payment.total " & _
" FROM payment" & _
" WHERE (((payment.paymentCode)= '" & pID & "'));"
 
CurrentDb.QueryDefs("lastQuery").sql = sql
CurrentDb.QueryDefs("lastQuery").Execute
 
sql = "INSERT INTO currentExpenses ( costDate, îïèñàíèå, costID, counterpartiesID, total)" & _
" SELECT payment.dateOfPayment, payment.purposeOfPayment, '" & exID & "', payment.personID, payment.total " & _
" FROM payment" & _
" WHERE (((payment.paymentCode)= '" & pID & "'));"
 
''CurrentDb.QueryDefs("lastQuery").sql = sql
''CurrentDb.QueryDefs("lastQuery").Execute
 
End Function
вот вторая часть предназначена для добавления в табл оплаты, но я еще не сделал

Добавлено через 1 минуту
Visual Basic
1
2
Dim sql As String
    sql = "INSERT INTO currentExpenses ( costDate, описание, costID, counterpartiesID, total
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
26.03.2018, 16:07
Попробуйте:
Visual Basic
1
2
3
4
5
Dim StrSql As String
StrSql = "INSERT INTO currentExpenses (costDate,описание,costID,counterpartiesID,total) " & _
         "SELECT dateOfPayment,purposeOfPayment,""" & [Переменная1] & """,personID,total " & _
         "FROM payment " & _
         "WHERE paymentCode=""" & [Переменная2] & """"
Желательно не называть переменные служебными словами (sql).

Базу не смотрела.
0
0 / -1 / 0
Регистрация: 15.06.2017
Сообщений: 122
26.03.2018, 16:09  [ТС]
вот:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Function addData(pID As String, exID As String)
    Dim sql As String
    sql = "INSERT INTO currentExpenses ( costDate, описание, costID, counterpartiesID, total)" & _
" SELECT payment.dateOfPayment, payment.purposeOfPayment, '" & exID & "', payment.personID, payment.total " & _
" FROM payment" & _
" WHERE (((payment.paymentCode)= '" & pID & "'));"
 
CurrentDb.QueryDefs("lastQuery").sql = sql
CurrentDb.QueryDefs("lastQuery").Execute
 
sql = "UPDATE payment SET payment.costID = '" & exID & "'" & _
"WHERE (((payment.paymentCode)='" & pID & "'));"
 
CurrentDb.QueryDefs("lastQuery").sql = sql
CurrentDb.QueryDefs("lastQuery").Execute
 
End Function
Добавлено через 23 секунды
ок
переименую sql на что-то, но первую часть трогать не хочеться
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12511 / 5085 / 814
Регистрация: 07.08.2010
Сообщений: 14,962
Записей в блоге: 4
26.03.2018, 16:19
строка 12
Visual Basic
1
" WHERE (((payment.paymentCode)='" & pID & "'));"
и мне кажется, что exID --числовое
1
0 / -1 / 0
Регистрация: 15.06.2017
Сообщений: 122
26.03.2018, 16:23  [ТС]
shanemac51, Сделал. Но обновление не работает. Сам запрос не работает (всм если не в коде проверять)
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,630
26.03.2018, 16:24
Цитата Сообщение от meref Посмотреть сообщение
У меня не работет(
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Public Function addData(pID As String, exID As String)
    Dim sql As String
    sql = "INSERT INTO currentExpenses ( costDate, описание, costID, counterpartiesID, total)" & _
        " SELECT dateOfPayment, purposeOfPayment, '" & exID & "', personID, total" & _
        " FROM payment" & _
        " WHERE paymentCode= '" & pID & "'"
    
    CurrentDb.Execute sql
    CurrentDb.QueryDefs("lastQuery").sql = sql
    'CurrentDb.QueryDefs("lastQuery").Execute 'НЕ НУЖНО! Уже исполнили выше
 
End Function
Работает ...
Вызывал так:
createExpense "P0004"
1
0 / -1 / 0
Регистрация: 15.06.2017
Сообщений: 122
26.03.2018, 16:31  [ТС]
Да первая часть работает.
Цитата Сообщение от meref Посмотреть сообщение
sql = "UPDATE payment SET payment.costID = '" & exID & "'" & _
"WHERE (((payment.paymentCode)='" & pID & "'));"
CurrentDb.QueryDefs("lastQuery").sql = sql
А вот эта нет

Добавлено через 27 секунд
Visual Basic
1
2
3
4
sql = "UPDATE payment SET payment.costID = '" & exID & "'" & _
"WHERE (((payment.paymentCode)='" & pID & "'));"
 
CurrentDb.QueryDefs("lastQuery").sql = sql
Добавлено через 4 минуты
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Сообщение от meref
Я скину базу. Запрос 2
И "Запрос 2" и SQL:
SQLВыделить код
1
2
UPDATE payment SET payment.costID = 'CE0001'
WHERE (((payment.paymentCode)='P0001'));
Всё работает !
Код где смотреть?
вот это у меня не работает
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,630
26.03.2018, 16:33
Цитата Сообщение от meref Посмотреть сообщение
А вот эта нет
Если поставить пробел пред "WHERE" - Работает!


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Function addData(pID As String, exID As String)
    Dim sql As String
    sql = "INSERT INTO currentExpenses ( costDate, описание, costID, counterpartiesID, total)" & _
        " SELECT dateOfPayment, purposeOfPayment, '" & exID & "', personID, total" & _
        " FROM payment" & _
        " WHERE paymentCode= '" & pID & "'"
    
    CurrentDb.Execute sql
    CurrentDb.QueryDefs("lastQuery01").sql = sql
    'CurrentDb.QueryDefs("lastQuery").Execute 'НЕ НУЖНО! Уже исполнили выше
 
 
    sql = "UPDATE payment SET costID = '" & exID & "' WHERE paymentCode='" & pID & "'"
    CurrentDb.Execute sql
    CurrentDb.QueryDefs("lastQuery02").sql = sql
    ''CurrentDb.QueryDefs("lastQuery02").Execute 'НЕ НУЖНО! Уже исполнили выше
 
End Function
Вложения
Тип файла: zip 1.1.1 - копия (3).zip (465.8 Кб, 2 просмотров)
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,630
26.03.2018, 16:42
meref, кстати:
Public Function addData ... точно нужно Public и Function ?
Там вполне подойдёт:
Private Sub addData ... т.к. основной вызов через createExpense ... того же модуля.
Ну это так ... заметки на полях.
0
0 / -1 / 0
Регистрация: 15.06.2017
Сообщений: 122
26.03.2018, 16:49  [ТС]
фигня какая-та. У всех работает, а у меня нет.
Я скачал вашу базу. Открыл> зашел в платежи > зашел в платежи контр агентов > создал новую запись добавил там чутка данных > нажал на кнопку > создал > обновил форму платежи контр агентов но в поле код оплаты не появился айди.

Добавлено через 58 секунд
Щас по вашим советам по исправляю и отправлю базу снова
0
0 / -1 / 0
Регистрация: 15.06.2017
Сообщений: 122
26.03.2018, 17:00  [ТС]
1.1.3.rar
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,630
26.03.2018, 17:17
meref, а ???
А где исполнение запроса?
Visual Basic
1
    CurrentDb.Execute sql
Так работает:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub addData(pID As String, exID As String)
    Dim strSql As String
    strSql = "INSERT INTO currentExpenses ( costDate, описание, costID, counterpartiesID, total)" & _
    " SELECT dateOfPayment, purposeOfPayment, '" & exID & "', personID, payment.total" & _
    " FROM payment" & _
    " WHERE (((payment.paymentCode)= '" & pID & "'));"
    CurrentDb.Execute sql
    CurrentDb.QueryDefs("lastQuery01").sql = strSql
 
    strSql = "UPDATE payment SET payment.costID = '" & exID & "'" & _
    " WHERE paymentCode='" & pID & "'"
    CurrentDb.Execute sql
    CurrentDb.QueryDefs("lastQuery02").sql = strSql
End Sub
0
0 / -1 / 0
Регистрация: 15.06.2017
Сообщений: 122
26.03.2018, 17:24  [ТС]
щяс попробую

Добавлено через 3 минуты
Цитата Сообщение от Eugene-LS Посмотреть сообщение
CurrentDb.Execute sql
strSql
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,630
26.03.2018, 17:28
Цитата Сообщение от meref Посмотреть сообщение
strSql
Ну да конечно !
Visual Basic
1
    CurrentDb.Execute strSql
Скопи-пастил со старого варианта ... не заметил изменения наименования переменной.

И эти строчки:
Visual Basic
1
2
CurrentDb.QueryDefs("lastQuery01").sql = strSql
CurrentDb.QueryDefs("lastQuery02").sql = strSql
Вы же потом уберёте?
1
0 / -1 / 0
Регистрация: 15.06.2017
Сообщений: 122
26.03.2018, 17:49  [ТС]
да. Они для дебага.
Запрос 02 не работает. Открываем его заходим в режим исп и он ничего там не пишет. Но все равно Спасибо что помогаете решить проблему

Добавлено через 8 минут
Я изучу проблему и вынесу полностью описанную в другом вопросе.
0
Эксперт MS Access
 Аватар для Eugene-LS
13266 / 5943 / 1529
Регистрация: 05.10.2016
Сообщений: 16,630
26.03.2018, 17:54
Цитата Сообщение от meref Посмотреть сообщение
Запрос 02 не работает
Только что проверил кодом:
Visual Basic
1
createExpense "P0007"
Всё работает ...

Может вызов из формы барахлит?
Изображения
 
Вложения
Тип файла: zip 1.1.3_v02.zip (471.3 Кб, 3 просмотров)
1
0 / -1 / 0
Регистрация: 15.06.2017
Сообщений: 122
26.03.2018, 18:14  [ТС]
Вот я нашел у себя бандикам.
bandicam 2018-03-26 18-11-46-834.rar
Как я там показал, у меня не работает. (Уже подозрение что у меня заколдованный комп)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.03.2018, 18:14

вба не работает не знаю что делать
программа должна выводить слова где две буквы а, считывая из файла блокнот Private mywords$(), i% Private Sub...

Программа для отправки GET запросов работает только в отладочном режиме
Программа должна отправлять запросы по указанной ссылке , можно указать период отправок и кол-во повторений. При билдинге (F5) и запуске...

Не работает метод в конструкторе
У меня не работает метод - если странна США, то цена больше на 50 процентов. Мой код должен оставаться конструктором class Person: ...

Не работает rand в конструкторе
подскажите пожалуйста, создаю два объекта и для каждого в конструкторе по идее должен создаваться свой размер t случайным выбором rand....

Запрос к бд работает в аксес но не работает в delphi? Подскажите в чём ошибка
begin //ADOQuery1.SQL.Text:='drop table `request`'; //ADOQuery1.ExecSQL; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Add('Select...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru