powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / команда update
3 сообщений из 3, страница 1 из 1
команда update
    #35251471
neznakomka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему-то не срабатывает обновление записи. Помогите понять в чём дело.

IF NOT EMPTY(thisform.text1.Value) then
UPDATE tov_gruppa SET name = thisForm.text1.Value WHERE id_kod in (SELECTid_kod FROM tov_gruppa WHERE (name= thisformset.form1.grid1.column1.text1.Value))
ON ERROR MESSAGEBOX("error")
thisformset.form1.Refresh
thisformset.form3.Visible= .F.
ENDIF
...
Рейтинг: 0 / 0
команда update
    #35251627
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Внутри команд Select-SQL, Update-SQL, Insert-SQL, Delete-SQL крайне не желательно использовать "иерархию" ссылок вида Parent1.Parent2.Parent3.Value. В некоторых местах этих команд подобная иерархия будет принята нормально, а в некоторых - возникнет ошибка.

Чтобы избежать подобных недоразумений всегда предварительно присваивайте значения переменным памяти

Код: plaintext
1.
2.
3.
LOCAL lcName
lcName = thisForm.text1.Value 
UPDATE tov_gruppa SET name = m.lcName WHERE ...

2) Объект Grid сам по себе ничего не содержит. Это просто "окно" через которое Вы смотрите на таблицу-источник. Поэтому пытаться что-то прочитать из объекта Grid через прямые ссылки вроде thisformset.form1.grid1.column1.text1.Value - довольно самонадеяно. Простой вопрос: из какой записи будет взята эта информация?

Обычно информацию берут не из объекта Grid, а из записи таблицы-источника этого Grid

3) Зачем нужны такие сложные синтаксические конструкции? Ведь отбираться записи будут все-равно по старому значению и второй раз отбор не пойдет. Ну и пишите проще:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
LOCAL lcNameNew, lcNameOld
lcName = thisForm.text1.Value 
* предполагаю, что GridTable - это алиас таблицы-источника Grir
* А поле, значение которого надо использовать  - это Name
lcNameOld = GridTable.Name  

UPDATE tov_gruppa SET name = m.lcNameNew WHERE name = m.lcNameOld
...
Рейтинг: 0 / 0
команда update
    #35251775
neznakomka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасиба за подсказку!!!!
Теперь всё работает)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / команда update
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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