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

Обновление существующей записи

27.10.2015, 05:46. Показов 2013. Ответов 21

Студворк — интернет-сервис помощи студентам
Здравствуйте. Нужно делать запись в существующей в таблице в выбранной строке из "Форма1" в которую выводятся данные по нажатию кнопки или клавиши.

Сделал такой запрос, но выдает ошибку "Object doesn't support this property or method"
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Dim strSQL As String
If Not IsNull(Me!Форма1!Фам.Value) And Not IsNull(Me!Форма1!Фам.Column(0)) Then
    strSQL = "UPDATE Таблица1 SET [КодПоле] = '" & Null & "', " & _
    "[Поле1] = " & Null & ", " & _
    "[Поле2] = " & 2 & ", " & _
    " WHERE [Фам] = " & Me!Форма1!Фам.Column(0) & ";"
    CurrentDb.Execute strSQL
    ' обнов списокa
    Me!Таблица1.Requery
Else
    MsgBox "1", vbExclamation, "2"
End If
Что должно происходить:
В [КодПоле] - должно записываться пустое значение.
В [Поле1] - должно записываться пустое значение.
В [Поле2] - в таблице есть список с 3мя(1,2,3) значениями и нужно записывать одно из них "2".

Добавлено через 23 минуты
UPD:
Исправил Column(0) на Value, ошибка "Object doesn't support this property or method" пропала. Теперь ругается на сам запрос UPDATE, не правильный синтаксис команды.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2015, 05:46
Ответы с готовыми решениями:

Insert существующей записи
Стряпаю прогу на C# , суть в том что она сканит компы в домене и заносит в БД информацию об установленном ПО на каждом ПК. Проблема в том,...

Интересный вариант поиска существующей записи
как реализовать такой вариант? --есть одиночная форма, данные из таблицы "работники" --при вводе нового работника, в поле...

Заполнение полей по ранее существующей записи
Имеется код для формы с помощью, которого при внесении в поле "№паспорта" , если таковой уже имеется в БД, заполняются остальные поля...

21
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,934
Записей в блоге: 4
27.10.2015, 07:03
сначала просмотрите полученную строку ---поможет понять ошибку
Visual Basic
1
2
msgbox strSQL
CurrentDb.Execute strSQL
по крайней мере ---лишнии запятые и кавычки
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim strSQL As String
If Not IsNull(Me!Форма1!Фам.Value) And Not IsNull(Me!Форма1!Фам.Column(0)) Then
    strSQL = "UPDATE Таблица1 SET [КодПоле] = " & Null & ", " & _
    "[Поле1] = " & Null & ", " & _
    "[Поле2] = " & 2 &  _
    " WHERE [Фам] = " & Me!Форма1!Фам.Column(0) & ";"
debug.print  strSQL
    CurrentDb.Execute strSQL
    ' обнов списокa
    Me!Таблица1.Requery
Else
    MsgBox "1", vbExclamation, "2"
End If
и я сомневаюсь, что [КодПоле] может быть пустым
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 69
27.10.2015, 07:31  [ТС]
Цитата Сообщение от shanemac51 Посмотреть сообщение
сначала просмотрите полученную строку ---поможет понять ошибку
MySQL
1
2
3
4
5
6
7
---------------------------
Microsoft Office Access
---------------------------
UPDATE Таблица1 SET [КодПоле] = ' ', [Поле1] = '', [После2] = '2',  WHERE [Фам] = Фамилия;
---------------------------
ОК   
---------------------------
Вроде c запросом все нормально, из-за формата данных может ругаться на синтаксис UPDATE?
[КодПоле] - числовой
[Поле1] - текстовый
[Поле2] - числовой

Добавлено через 4 минуты
Цитата Сообщение от shanemac51 Посмотреть сообщение
и я сомневаюсь, что [КодПоле] может быть пустым
Это не ключевое поле. Его нужно сделать пустым, чтоб не было связи с другой таблицей.

Добавлено через 11 минут
На данный момент этот отрезок выглядит вот так.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim strSQL As String, str1 As Long, str2 As String, str3 As Long
str3 = 2
str1 = 3
str2 = "ПРивет"
If Not IsNull(Me!Форма1!Фам.Value) Then
    strSQL = "UPDATE Таблица1 SET [КодПоле] = '" & str1 & "', " & _
    "[Поле1] = '" & str2 & "', " & _
    "[Поле2] = '" & str3 & "', " & _
    " WHERE [Фам] = " & Me!Форма1!Фам.Value & ";"
    MsgBox strSQL
    CurrentDb.Execute strSQL
    ' обнов списокa
    Me!Таблица1.Requery
Else
    MsgBox "1", vbExclamation, "2"
End If
Сообщение - MsgBox strSQL
MySQL
1
2
3
4
5
6
7
---------------------------
Microsoft Office Access
---------------------------
UPDATE Таблица1 SET [КодПоле] = '3', [Поле1] = 'ПРивет', [Поле2] = '2',  WHERE [Фам] = Фамилия;
---------------------------
ОК   
---------------------------
Ошибка
---------------------------
Microsoft Office Access
---------------------------
Ошибка синтаксиса в инструкции UPDATE.
---------------------------
ОК
---------------------------
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
27.10.2015, 08:25
Лучший ответ Сообщение было отмечено dunkan22 как решение

Решение

Цитата Сообщение от dunkan22 Посмотреть сообщение
[Поле2] = '2', WHERE
Ничего странного не видите?
1
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,934
Записей в блоге: 4
27.10.2015, 08:32
также как и в
Visual Basic
1
[КодПоле] = ' '
причем [КодПоле] числовое
и какой тип у [Фам]
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 69
27.10.2015, 08:41  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
Ничего странного не видите?
Точно, пропустил... Спасибо

Цитата Сообщение от shanemac51 Посмотреть сообщение
и какой тип у [Фам]
Текстовый.
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
27.10.2015, 08:54
Лучший ответ Сообщение было отмечено dunkan22 как решение

Решение

Цитата Сообщение от dunkan22 Посмотреть сообщение
[КодПоле] - числовой
[Поле1] - текстовый
[Поле2] - числовой
[Фам] - текстовый
Visual Basic
1
2
3
4
    strSQL = "UPDATE Таблица1 SET [КодПоле] = " & str1 & ", " & _
    "[Поле1] = " & str2 & ", " & _
    "[Поле2] = " & str3 &  _
    " WHERE [Фам] = '" & Me!Форма1!Фам & "'"
1
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
27.10.2015, 09:54
Лучший ответ Сообщение было отмечено dunkan22 как решение

Решение

Цитата Сообщение от mobile Посмотреть сообщение
"[Поле1] = " & str2 & ", " & _
Visual Basic
1
"[Поле1] = '" & str2 & "', " & _
2
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 69
27.10.2015, 10:27  [ТС]
Спасибо. Отредактировал как написали, однако никаких изменений в таблице в выделенной записи не происходит после нажатия кнопки, идет обработка команды и все. Как быть в таком случае?
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
27.10.2015, 10:32
Цитата Сообщение от dunkan22 Посмотреть сообщение
MsgBox strSQL
* *
Вместо этого напишите
Visual Basic
1
debug.print strSQL
в окошке imediate внизу отобразится результат после запуска, его сюда выложите, посмотрим
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 69
28.10.2015, 05:08  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
в окошке imediate внизу отобразится результат после запуска, его сюда выложите, посмотрим
Готово.
MySQL
1
UPDATE Таблица1 SET [КодПоле] = 0, [Поле1] = 'Текст', [Поле2] = 0 WHERE [Фам] = 'Фамилия'
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
28.10.2015, 05:39
У вас точно КодПоле имеет тип Числовой, а не счётчик? Оно индексированное? При выполнении запроса хоть какая-то ошибка показывается? У поля [Фам] есть значение Фамилия в таблице?
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 69
28.10.2015, 06:44  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
У вас точно КодПоле имеет тип Числовой, а не счётчик? Оно индексированное?
Числовой. Не индексированное.

Цитата Сообщение от alvk Посмотреть сообщение
У поля [Фам] есть значение Фамилия в таблице?
Да, отображается выбранная Фамилия из списка таблицы.

Цитата Сообщение от alvk Посмотреть сообщение
При выполнении запроса хоть какая-то ошибка показывается?
В immediate выводит только строку запроса.

Код кнопки
Кликните здесь для просмотра всего текста
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
Private Sub Кнопка76_Click()
On Error GoTo Err_Кнопка76_Click
Dim strSQL As String, str1 As Long, str2 As String
str1 = 0
str2 = "Текст"
 
 
If Not IsNull(Me!Форма1!Фам.Value) Then
    strSQL = "UPDATE Таблица1 SET [КодПоля] = " & str1 & ", " & _
    "[Поле1] = '" & str2 & "', " & _
    "[Поле2] = " & str1 & _
    " WHERE [Фам] = '" & Me!Форма1!Фам & "'"
   ' MsgBox strSQL
   Debug.Print strSQL
    CurrentDb.Execute strSQL
  
    ' обнов списокa
    Me!Форма1.Requery
Else
    MsgBox "1" , vbExclamation, "2"
End If
 
 
Exit_Кнопка76_Click:
    Exit Sub
 
Err_Кнопка76_Click:
    MsgBox Err.Description
    Resume Exit_Кнопка76_Click
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
28.10.2015, 07:31
Цитата Сообщение от dunkan22 Посмотреть сообщение
Да, отображается выбранная Фамилия из списка таблицы.
Цитата Сообщение от dunkan22 Посмотреть сообщение
WHERE [Фам] = 'Фамилия'
Это слово Фамилия у вас, а не выбранная фамилия. Вот если бы было WHERE [Фам] = 'Петров', то я бы спросил про Петрова. Или вы что-то недоговариваете?
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 69
28.10.2015, 07:43  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
Это слово Фамилия у вас, а не выбранная фамилия. Вот если бы было WHERE [Фам] = 'Петров', то я бы спросил про Петрова. Или вы что-то недоговариваете?
Можно поставить 'Петров', я просто убрал Фамилию из того, что показывает в immediate и поставил 'Фамилия'.

Просто есть форма в которую выводятся данные людей, и при выборе определенного человека подставляется его фамилия.

Яж не врал когда написал.

Цитата Сообщение от dunkan22 Посмотреть сообщение
Да, отображается выбранная Фамилия из списка таблицы.
т.е. если я выберу Иванова, то там будет 'Иванов'
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
28.10.2015, 07:46
Цитата Сообщение от dunkan22 Посмотреть сообщение
UPDATE Таблица1 SET [КодПоле] = 0, [Поле1] = 'Текст', [Поле2] = 0 WHERE [Фам] = 'Фамилия'
Что ещё тут не соответствует действительности? В таблице поля именно так и называются?
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 69
28.10.2015, 07:54  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
Что ещё тут не соответствует действительности? В таблице поля именно так и называются?
Поля по другому называются. Но там они соответствуют именам полей таблицы, т.к. в случае если не верно указано имя поля будет выдавать ошибку "Слишком мало параметров".
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
28.10.2015, 08:22
Ладно, возьмите строчку из дебага и вставьте её в новый запрос, т.е. создайте любой запрос, перейдите в режим sql и вставьте полученную строку. После этого запустите запрос. Обновил он поля в таблице?
1
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 69
28.10.2015, 09:05  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
Ладно, возьмите строчку из дебага и вставьте её в новый запрос, т.е. создайте любой запрос, перейдите в режим sql и вставьте полученную строку. После этого запустите запрос. Обновил он поля в таблице?
Проверил. Оказывается, проблема с полем([КодПоле]), которое связано с другой таблицей. Т.е. я пытался обновить на 0, а там нет такой записи.
Запрос выполняется нормально, который написан в режиме sql.
MySQL
1
2
3
UPDATE Таблица1 
SET Таблица1.КодПоле = Null,  Таблица1.Поле1 = Null, Таблица1.Поле2 = 2
WHERE (((Таблица1.Фам)='Иванов'));
В коде ставлю в значения Null, опять ничего не происходит. Поэтому вопрос, как передать пустое значение?

Visual Basic
1
2
3
4
strSQL = "UPDATE Таблица1 SET [КодПоле] = '" & Null & "', " & _
    "[Поле1] = '" & Null & "', " & _
    "[Поле2] = " & 2 & _
    " WHERE [Фам] = '" & Me!Форма1!Фам & "'"
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
28.10.2015, 09:26
А у вас не выйдет его вставить, раз связь не позволяет. Вообще подозреваю, что у вас либо связи неверные, либо вы не в ту таблицу вставляете. Ведь если вставлять на стороне многие, то Акцесс никаких вопросов не задаёт.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.10.2015, 09:26
Помогаю со студенческими работами здесь

Ограничение на ввод дублера (уже существующей) записи в ПОЛЕ
Форумчане! Помогите создать процедуру, которая проверяет было ли такое (текстовое) значение уже введено в поле "Чип_Обозн" ...

Связь между таблицами.Обновление одной записи при обновлении другой записи
Всем привет. Делаю БД для курсового проекта. Есть БД сотрудников организаций. Есть таблица "перевод сотрудников" и таблица...

Запрет дублирования уже существующей записи в таблице по "поле1" вводимым из формы?
Уважаемые форумчане? Подскажите, как запретить создание новой записи в форме при условии уже существующей аналогичной. При этом поле в...

Как узнать, форма открыта для добавления записи или для изменения существующей?
всем привет! собственно вопрос в том и заключается: как узнать форма открыта для добавления записи или для изменения существующей? мне...

Организовать проверку на наличие уже существующей записи в таблице по "поле1", "поле2" вводимым из формы
Всем привет! Подскажите! Как организовать проверку на наличие уже существующей записи в таблице по "поле1", "поле2"...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru