powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / строка VBA: не работает запрос на обновление
35 сообщений из 35, показаны все 2 страниц
строка VBA: не работает запрос на обновление
    #40083127
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
При попытке вызвать запрос на обновление выдаёт сообщение, что запрос повреждён и ругается на строку кода (см. Снимок1).

Подскажите пожалуйста, где ошибка в коде.
Access 2013
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083130
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,

ходи сюда - https://www.sql.ru/faq/faq_topic.aspx?fid=157
и крути на эту фразу - А теперь очень полезная рекомендация
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083132
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri
ругается на строку кода

возможно в прицепляемых значениях есть запятая или кавычка
по картинке это не видно
код надо формировать наглядно проверять его через debug.print или on error
Код: vbnet
1.
2.
3.
4.
5.
s1="update soplata"
s1=s1 & " set ....."
....
debug.print s1
bbb.execute s1
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083149
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если поле klient_id числовое,то зачем ф-ция STR, а если текст-где апострофы, а для date_id,если это дата, ф-ция FORMAT(ну а дальше не видно-какие еще поля,закрывающая скобка)
прочтите
court об этом и толкует
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083635
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не понимаю, как это сделать

ПЕНСИОНЕРКА
Tauri
ругается на строку кода

возможно в прицепляемых значениях есть запятая или кавычка
по картинке это не видно
код надо формировать наглядно проверять его через debug.print или on error
Код: vbnet
1.
2.
3.
4.
5.
s1="update soplata"
s1=s1 & " set ....."
....
debug.print s1
bbb.execute s1

...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083638
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА
по картинке это не видно

по крайней мере выложите запрос текстом , а не картинкой
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083687
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА
ПЕНСИОНЕРКА
по картинке это не видно

по крайней мере выложите запрос текстом , а не картинкой


Код: vbnet
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.
Private Sub Кнопка25_Click()
Dim bbb As Database
If IsNull(Me![ПолеСоСписком15]) = True Then
MsgBox "Укажите дату", vbCritical, "Отсутствует значение!"
DoCmd.GoToControl "ПолеСоСписком15"
ElseIf IsNull(Me![ПолеСоСписком17]) = True Then
MsgBox "Укажите клиента", vbCritical, "Отсутствует значение!"
DoCmd.GoToControl "ПолеСоСписком17"
ElseIf IsNull(Me![Поле19]) = True Then
MsgBox "Введите сумму оплаты", vbCritical, "Отсутствует значение!"
DoCmd.GoToControl "Поле19"
ElseIf IsNull(Me![ПолеСоСписком21]) = True Then
MsgBox "Укажите форму оплаты", vbCritical, "Отсутствует значение!"
DoCmd.GoToControl "ПолеСоСписком21"
Else
Set bbb = CurrentDb
bbb.Execute "UPDATE soplata SET soplata.data_id = " & Str(Me![ПолеСоСписком15]) & ", soplata.klient_id =" & Str(Me![ПолеСоСписком17]) & ", soplata.summa = " & Str(Me![Поле19]) & ", soplata.fopl_id = " & Str(Me![ПолеСоСписком21]) & ", soplata.prim = '" & Me![Поле23] & "' WHERE (oplata_id)= " & Str(Me![oplata_id]) & ";"
bbb.Close
Forms![fwork].Requery
If DLookup("[dolg]", "zdolg", "[klient_id]=" & Me![ПолеСоСписком17]) > 0 Then
Forms![fwork]![Поле37] = "долг " & DLookup("[dolg]", "zdolg", "[klient_id]=" & Me![ПолеСоСписком17]) & " руб."
ElseIf DLookup("[dolg]", "zdolg", "[klient_id]=" & Me![ПолеСоСписком17]) < 0 Then
Forms![fwork]![Поле37] = "переплата " & -(DLookup("[dolg]", "zdolg", "[klient_id]=" & Me![ПолеСоСписком17])) & " руб."
ElseIf DLookup("[dolg]", "zdolg", "[klient_id]=" & Me![ПолеСоСписком17]) = 0 Then
Forms![fwork]![Поле37] = Null
End If
DoCmd.Close
End If
End Sub




Почему-то на моём компе дома (Access 2016) этот код работает, а в офисе (Access 2013) - нет.
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083688
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri

Код: vbnet
1.
2.
3.
bbb.Execute "UPDATE soplata SET soplata.data_id = " & Str(Me![ПолеСоСписком15]) & ", soplata.klient_id =" & 
Str(Me![ПолеСоСписком17]) & ", soplata.summa = " & Str(Me![Поле19]) & ", soplata.fopl_id = " & 
Str(Me![ПолеСоСписком21]) & ", soplata.prim = '" & Me![Поле23] & "' WHERE (oplata_id)= " & Str(Me![oplata_id]) & ";"


Вопрос:какой тип у выделенных цветом полей (что они все текстовые)?
Верно ли это: 5 литров = 5 километров
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083695
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tauri

Почему-то на моём компе дома (Access 2016) этот код работает, а в офисе (Access 2013) - нет.


Если вы создали или сохранили файл в 2016 офисе, а потом открываете его в 2013, то проблемы обязательно появятся.
Надо пользоваться одной версией (одного года).
Но если создали в 2013, а потом только проверяли в 2016, то без комментариев.
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083699
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Geizer1,
По пробуйте перекомпилировать в 2013 офисе.
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083704
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,

самая проблемная строка soplata.summa = " & Str(Me![Поле19])
Str(Me![Поле19]) может вернуть как 12,5 так и 12.5 в зависимости от настроек системы
вариант 12,5 дает ошибку выполнения запроса

вторая проблема - строка Dim bbb As Database
надо явно указать библиотеку, т.к. со ссылкой на dao есть неопределенность
Код: vbnet
1.
Dim bbb As dao.Database
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083717
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя поле суммы обычно числовое - зачем вообще нужно STR
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083731
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА
хотя поле суммы обычно числовое - зачем вообще нужно STR

STR всегда преобразует число (строку которая "выглядит" "как число") в строку с десятичным разделителем "точка"
Вне зависимости от локализации
Код: vbnet
1.
2.
?Str("5,9")
 5.9
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083736
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)рекомендую Вам оформлять код SQL запрос в VBA вот так
2) str - VBA сам сделает это из любово другого типа данных, но если будет NULL или Empty будет ошибка

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
 
    sql = ""
    sql = sql & Chr(10) & "UPDATE soplata"
    sql = sql & Chr(10) & "Set soplata.data_id      = " & IIf(IsNull(Me![ПолеСоСписком15]), "null", Me![ПолеСоСписком15])
    sql = sql & Chr(10) & "   ,soplata.klient_id    = " & IIf(IsNull(Me![ПолеСоСписком17]), "null", Me![ПолеСоСписком17])
    sql = sql & Chr(10) & "   ,soplata.summa        = " & IIf(IsNull(Me![Поле19]), "null", Me![Поле19])
    sql = sql & Chr(10) & "   ,soplata.fopl_id      = " & IIf(IsNull(Me![ПолеСоСписком21]), "null", Me![ПолеСоСписком21])
    sql = sql & Chr(10) & "   ,soplata.prim         = '" & Me![Поле23] & "'"
    sql = sql & Chr(10) & "WHERE (oplata_id)        = " & Me![oplata_id]
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083786
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku
Tauri

Код: vbnet
1.
2.
3.
bbb.Execute "UPDATE soplata SET soplata.data_id = " & Str(Me![ПолеСоСписком15]) & ", soplata.klient_id =" & 
Str(Me![ПолеСоСписком17]) & ", soplata.summa = " & Str(Me![Поле19]) & ", soplata.fopl_id = " & 
Str(Me![ПолеСоСписком21]) & ", soplata.prim = '" & Me![Поле23] & "' WHERE (oplata_id)= " & Str(Me![oplata_id]) & ";"


Вопрос:какой тип у выделенных цветом полей (что они все текстовые)?
Верно ли это: 5 литров = 5 километров


числовые: soplata.data_id, soplata.klient_id, soplata.summa, soplata.fopl_id
текст: soplata.prim
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083791
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,
ну и занахрена в числовое поле пытаться записать текст(функция STR)-здесь всегда возникнет ошибка
Об этом и говорит ПЕНСИОНЕРКА
soplata.data_id-если это дата,то и делайте его дата/время
и не храните в таблицах вычисляемые поля-если поле summa таковым является
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083808
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku
Tauri,
ну и занахрена в числовое поле пытаться записать текст(функция STR)-здесь всегда возникнет ошибка
Об этом и говорит ПЕНСИОНЕРКА
soplata.data_id-если это дата,то и делайте его дата/время
и не храните в таблицах вычисляемые поля-если поле summa таковым является


Тут (и в форме и в таблице) все поля либо числовые либо текст.
Вычисляемых полей нет.
Т.е. в запросе в числовых полях убрать функцию Str ?
А почему тогда на моём компе дома работает?
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083813
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА
Код: vbnet
1.
Dim bbb As dao.Database


на некоторых версиях аксесс это идет по умолчанию, пройдут обе версии
Dim bbb As dao.Database
Dim bbb As Database

но в некоторых версиях это не проходит, надо строго Dim bbb As dao.Database и установить явно ссылку в REFERENCES на MICROSOFT DAO object library ( dao360.DLL )
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083833
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА
ПЕНСИОНЕРКА
Код: vbnet
1.
Dim bbb As dao.Database


на некоторых версиях аксесс это идет по умолчанию, пройдут обе версии
Dim bbb As dao.Database
Dim bbb As Database

но в некоторых версиях это не проходит, надо строго Dim bbb As dao.Database и установить явно ссылку в REFERENCES на MICROSOFT DAO object library ( dao360.DLL )



Спасибо.
А функцию Str(числовое_поле) убирать из запроса?
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083837
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Focha
1)рекомендую Вам оформлять код SQL запрос в VBA вот так
2) str - VBA сам сделает это из любово другого типа данных, но если будет NULL или Empty будет ошибка

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
 
    sql = ""
    sql = sql & Chr(10) & "UPDATE soplata"
    sql = sql & Chr(10) & "Set soplata.data_id      = " & IIf(IsNull(Me![ПолеСоСписком15]), "null", Me![ПолеСоСписком15])
    sql = sql & Chr(10) & "   ,soplata.klient_id    = " & IIf(IsNull(Me![ПолеСоСписком17]), "null", Me![ПолеСоСписком17])
    sql = sql & Chr(10) & "   ,soplata.summa        = " & IIf(IsNull(Me![Поле19]), "null", Me![Поле19])
    sql = sql & Chr(10) & "   ,soplata.fopl_id      = " & IIf(IsNull(Me![ПолеСоСписком21]), "null", Me![ПолеСоСписком21])
    sql = sql & Chr(10) & "   ,soplata.prim         = '" & Me![Поле23] & "'"
    sql = sql & Chr(10) & "WHERE (oplata_id)        = " & Me![oplata_id]



К сожалению, я не понимаю, как разместить этот код в тексте VBA. В какое место VBA его вставлять - можете написать?

Я знаю только конструкцию типа:
bbb.Execute "UPDATE...
bbb.Close
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083854
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,
эта конструкция ничем не отличается от вашей - только разбита по подстрокам для наглядности
Код: vbnet
1.
2.
3.
4.
5.
s1="update soplata"
s1=s1 & " set ....."
....
debug.print s1
bbb.execute s1



для более конкретного ответа надо смотреть вашу базу, структуру таблиц, форму ввода
непонятно зачем нужна update или у вас форма на свободных полях основана
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083861
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,
STR() убирать,однозначно(интонация Жириновского)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
'поле rs(2) числовое\денежное
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("цены")
rs.AddNew
'rs(2) = Str(1.5) 'А-2010-ошибка
'не утверждаю-предполагаю что в А-2016 если текст число, возможно, автоматическое преобразование
rs(2) = 1.5     'А-2010 нет ошибки
rs.Update

Добавить записи можно и рекордсетом
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083866
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku
Tauri,
STR() убирать,однозначно(интонация Жириновского)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
'поле rs(2) числовое\денежное
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("цены")
rs.AddNew
'rs(2) = Str(1.5) 'А-2010-ошибка
'не утверждаю-предполагаю что в А-2016 если текст число, возможно, автоматическое преобразование
rs(2) = 1.5     'А-2010 нет ошибки
rs.Update

Добавить записи можно и рекордсетом


Тогда надо писать так?:
bbb.Execute "UPDATE soplata SET soplata.data_id = " & Me![ПолеСоСписком15] & ", soplata.klient_id =" & Me![ПолеСоСписком17] & ",...

где Me![ПолеСоСписком15] и Me![ПолеСоСписком17] и... - числовые
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083891
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri
Тогда надо писать так?:

Вам же практически написали готовый пример
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 sql = ""
    sql = sql & Chr(10) & "UPDATE soplata"
    sql = sql & Chr(10) & "Set soplata.data_id      = " & IIf(IsNull(Me![ПолеСоСписком15]), "null", Me![ПолеСоСписком15])
    sql = sql & Chr(10) & "   ,soplata.klient_id    = " & IIf(IsNull(Me![ПолеСоСписком17]), "null", Me![ПолеСоСписком17])
    sql = sql & Chr(10) & "   ,soplata.summa        = " & IIf(IsNull(Me![Поле19]), "null", Me![Поле19])
    sql = sql & Chr(10) & "   ,soplata.fopl_id      = " & IIf(IsNull(Me![ПолеСоСписком21]), "null", Me![ПолеСоСписком21])
    sql = sql & Chr(10) & "   ,soplata.prim         = '" & Me![Поле23] & "'"
    sql = sql & Chr(10) & "WHERE (oplata_id)        = " & Me![oplata_id]

bbb.Execute sql


Преимущество в том , что при пошаговой отладке , Вы можете видеть истинное значение пеменной sql , и легче найти ошибку в каком месте спотыкается .
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083903
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMan
Tauri
Тогда надо писать так?:

Вам же практически написали готовый пример
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 sql = ""
    sql = sql & Chr(10) & "UPDATE soplata"
    sql = sql & Chr(10) & "Set soplata.data_id      = " & IIf(IsNull(Me![ПолеСоСписком15]), "null", Me![ПолеСоСписком15])
    sql = sql & Chr(10) & "   ,soplata.klient_id    = " & IIf(IsNull(Me![ПолеСоСписком17]), "null", Me![ПолеСоСписком17])
    sql = sql & Chr(10) & "   ,soplata.summa        = " & IIf(IsNull(Me![Поле19]), "null", Me![Поле19])
    sql = sql & Chr(10) & "   ,soplata.fopl_id      = " & IIf(IsNull(Me![ПолеСоСписком21]), "null", Me![ПолеСоСписком21])
    sql = sql & Chr(10) & "   ,soplata.prim         = '" & Me![Поле23] & "'"
    sql = sql & Chr(10) & "WHERE (oplata_id)        = " & Me![oplata_id]

bbb.Execute sql


Преимущество в том , что при пошаговой отладке , Вы можете видеть истинное значение пеменной sql , и легче найти ошибку в каком месте спотыкается .


Спасибо. Но я его не понимаю. Я не программист. Мне нужен (иногда) готовый код, который я копирую и вставляю.
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40083906
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri
Мне нужен (иногда) готовый код, который я копирую и вставляю.

тогда выкладывайте базу(здесь только очень малый размер, поэтому чаще ссылка на файлообменник), по картинкам задачи не решаются
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40084007
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri
Спасибо. Но я его не понимаю. Я не программист. Мне нужен (иногда) готовый код, который я копирую и вставляю.


Это и есть готовый код.
Его надо вставить вместо вашего
bbb.Execute "UPDATE ..."
У вас в кавычках используется текстовая переменная.
Здесь ее значение собирается в переменную sql:
сначала это пустая строка, потом к ней "прицепляется" с использованием оператора & текст "UPDATE soplata",
далее "прицепляется" следующий кусок и т.д.
После всех сцеплений переменная sql имеет значение, равная тому, что у вас в кавычках.
bbb.Execute sql - это и есть ваш bbb.Execute "UPDATE ..."
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40084278
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИВП
Tauri
Спасибо. Но я его не понимаю. Я не программист. Мне нужен (иногда) готовый код, который я копирую и вставляю.


Это и есть готовый код.
Его надо вставить вместо вашего
bbb.Execute "UPDATE ..."
У вас в кавычках используется текстовая переменная.
Здесь ее значение собирается в переменную sql:
сначала это пустая строка, потом к ней "прицепляется" с использованием оператора & текст "UPDATE soplata",
далее "прицепляется" следующий кусок и т.д.
После всех сцеплений переменная sql имеет значение, равная тому, что у вас в кавычках.
bbb.Execute sql - это и есть ваш bbb.Execute "UPDATE ..."


Т.е. такой код должен быть?:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim bbb As dao.Database
Set bbb = CurrentDb
    sql = ""
    sql = sql & Chr(10) & "UPDATE soplata"
    sql = sql & Chr(10) & "Set soplata.data_id      = " & IIf(IsNull(Me![ПолеСоСписком15]), "null", Me![ПолеСоСписком15])
    sql = sql & Chr(10) & "   ,soplata.klient_id    = " & IIf(IsNull(Me![ПолеСоСписком17]), "null", Me![ПолеСоСписком17])
    sql = sql & Chr(10) & "   ,soplata.summa        = " & IIf(IsNull(Me![Поле19]), "null", Me![Поле19])
    sql = sql & Chr(10) & "   ,soplata.fopl_id      = " & IIf(IsNull(Me![ПолеСоСписком21]), "null", Me![ПолеСоСписком21])
    sql = sql & Chr(10) & "   ,soplata.prim         = '" & Me![Поле23] & "'"
    sql = sql & Chr(10) & "WHERE (oplata_id)        = " & Me![oplata_id]
bbb.Execute sql
bbb.Close
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40084299
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri
Т.е. такой код должен быть?:

А Вы вообще пробовали вставлять примеры кода к себе в программу? Или Вы так и будете ждать пока все сделают за Вас? Так выложите сюда свою базу , может кто и сделает.
Или еще лучше , наймите программиста.
P.S И почитайте в FAQ как оформлять сообщения. Спасибо.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim bbb As dao.Database
Set bbb = CurrentDb
sql = ""
sql = sql & Chr(10) & "UPDATE soplata"
sql = sql & Chr(10) & "Set soplata.data_id = " & IIf(IsNull(Me![ПолеСоСписком15]), "null", Me![ПолеСоСписком15])
sql = sql & Chr(10) & " ,soplata.klient_id = " & IIf(IsNull(Me![ПолеСоСписком17]), "null", Me![ПолеСоСписком17])
sql = sql & Chr(10) & " ,soplata.summa = " & IIf(IsNull(Me![Поле19]), "null", Me![Поле19])
sql = sql & Chr(10) & " ,soplata.fopl_id = " & IIf(IsNull(Me![ПолеСоСписком21]), "null", Me![ПолеСоСписком21])
sql = sql & Chr(10) & " ,soplata.prim = '" & Me![Поле23] & "'"
sql = sql & Chr(10) & "WHERE (oplata_id) = " & Me![oplata_id]
bbb.Execute sql
bbb.Close
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40084329
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
за пробелами таки следить надо
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim strsql As string
strsql = "UPDATE soplata " & _
"Set data_id = " & Me.ПолеСоСписком15.value & " ," & _
"klient_id = " & Me.ПолеСоСписком17.value & " ," & _
"summa = " & nz(Me.Поле19.value,0)  & " ," & _
"fopl_id = " & Me.ПолеСоСписком21.value & " ," & _
"prim = '" & Me![Поле23] & "' " & _
"WHERE (oplata_id = " & Me.oplata_id.value & ");"
'debug.print strsql
Currentdb.Execute strsql 

...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40084332
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tauri

Т.е. такой код должен быть?:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim bbb As dao.Database
Set bbb = CurrentDb
    sql = ""
    sql = sql & Chr(10) & "UPDATE soplata"
    sql = sql & Chr(10) & "Set soplata.data_id      = " & IIf(IsNull(Me![ПолеСоСписком15]), "null", Me![ПолеСоСписком15])
    sql = sql & Chr(10) & "   ,soplata.klient_id    = " & IIf(IsNull(Me![ПолеСоСписком17]), "null", Me![ПолеСоСписком17])
    sql = sql & Chr(10) & "   ,soplata.summa        = " & IIf(IsNull(Me![Поле19]), "null", Me![Поле19])
    sql = sql & Chr(10) & "   ,soplata.fopl_id      = " & IIf(IsNull(Me![ПолеСоСписком21]), "null", Me![ПолеСоСписком21])
    sql = sql & Chr(10) & "   ,soplata.prim         = '" & Me![Поле23] & "'"
    sql = sql & Chr(10) & "WHERE (oplata_id)        = " & Me![oplata_id]
bbb.Execute sql
bbb.Close


Не забудьте объявить строковую переменную sql.
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40084334
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko
за пробелами таки следить надо

я пробел всегда а начале строки добавляю(хвостовой пробел часто не влезает в ширину экрана)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim bbb As dao.Database
Set bbb = CurrentDb
sql = ""
sql = sql & Chr(10) & " UPDATE soplata"
sql = sql & Chr(10) & " Set soplata.data_id = " & IIf(IsNull(Me![ПолеСоСписком15]), "null", Me![ПолеСоСписком15])
sql = sql & Chr(10) & " ,soplata.klient_id = " & IIf(IsNull(Me![ПолеСоСписком17]), "null", Me![ПолеСоСписком17])
sql = sql & Chr(10) & " ,soplata.summa = " & IIf(IsNull(Me![Поле19]), "null", Me![Поле19])
sql = sql & Chr(10) & " ,soplata.fopl_id = " & IIf(IsNull(Me![ПолеСоСписком21]), "null", Me![ПолеСоСписком21])
sql = sql & Chr(10) & " ,soplata.prim = '" & Me![Поле23] & "'"
sql = sql & Chr(10) & " WHERE (oplata_id) = " & Me![oplata_id]
bbb.Execute sql
bbb.Close
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40084480
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,
спасибо за подсказки и за поддержку
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40084482
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMan
Tauri
Т.е. такой код должен быть?:

А Вы вообще пробовали вставлять примеры кода к себе в программу? Или Вы так и будете ждать пока все сделают за Вас? Так выложите сюда свою базу , может кто и сделает.
Или еще лучше , наймите программиста.
P.S И почитайте в FAQ как оформлять сообщения. Спасибо.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim bbb As dao.Database
Set bbb = CurrentDb
sql = ""
sql = sql & Chr(10) & "UPDATE soplata"
sql = sql & Chr(10) & "Set soplata.data_id = " & IIf(IsNull(Me![ПолеСоСписком15]), "null", Me![ПолеСоСписком15])
sql = sql & Chr(10) & " ,soplata.klient_id = " & IIf(IsNull(Me![ПолеСоСписком17]), "null", Me![ПолеСоСписком17])
sql = sql & Chr(10) & " ,soplata.summa = " & IIf(IsNull(Me![Поле19]), "null", Me![Поле19])
sql = sql & Chr(10) & " ,soplata.fopl_id = " & IIf(IsNull(Me![ПолеСоСписком21]), "null", Me![ПолеСоСписком21])
sql = sql & Chr(10) & " ,soplata.prim = '" & Me![Поле23] & "'"
sql = sql & Chr(10) & "WHERE (oplata_id) = " & Me![oplata_id]
bbb.Execute sql
bbb.Close



Естественно я сам всё сделаю.
Если бы у меня были возможности, то я нанял бы программиста, но возможности нет - поэтому пытаюсь понять всё сам.
Так, как я не профессиональный программист (в отличии от Вас), то я многого не знаю (и иногда не понимаю) - поэтому задаю вопросы.
Если мои вопросы Вам не нравятся, то Вы на них просто не отвечайте.
В любом случае, спасибо за подсказки.
...
Рейтинг: 0 / 0
строка VBA: не работает запрос на обновление
    #40084496
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
топик занимает уже 2 страницы....
переливание из пустого в порожнее идет успешно....
и судя по тому коду что Вы здесь выкладывали-хотите обновить(а не добавить новую) некую уже сохраненную запись,лишившись напрочь истории-Вы хотите именно этого.
Не проще ли выложить проблемный фрагмент БД с четким описанием "хотелки"(при этом Вам быстро помогут), а перед этим хорошенько подумать над логикой работы этой базы,её структурой.
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / строка VBA: не работает запрос на обновление
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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