powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Конструкция Update
7 сообщений из 7, страница 1 из 1
Конструкция Update
    #34056825
_Mikle_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста, корректно ли такое решение проблемы:
Код: plaintext
UPDATE bookord SET bsfip_oncome_date=CTOD("31/12/2006") WHERE rn in(sele rn from c_bookord)

c_bookord - курсор, содержащий RN-ы, выбранные из другой таблицы.
Нужно заполнить в таблице bookord поле bsfip_oncome_date

Или лучше организовывать конструкцию SCAN - ENDSCAN ?

VFP 8.0

Заранее спасибо.
...
Рейтинг: 0 / 0
Конструкция Update
    #34057159
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конструкция у вас верна, но, мне кажется, что через JOIN должно работать быстрее (при наличии индексов по rn в таблицах):

Код: plaintext
1.
UPDATE bookord SET bsfip_oncome_date={^ 2006 . 12 . 31 }
INNER JOIN c_bookord ON bookord.rn = c_bookord.rn
С уважением, Алексей
...
Рейтинг: 0 / 0
Конструкция Update
    #34057246
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не уверен, что такая конструкция будет работать в VFP8.

Если есть индекс в таблице c_bookord по полю rn, то можно попробовать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
USE c_bookord IN  0 

UPDATE bookord SET bsfip_oncome_date={^ 31 - 12 - 2006 }  ;
WHERE SEEK(bookord.rn,"c_bookord","rn")

* Или
select bookord
REPLACE bsfip_oncome_date WITH {^ 31 - 12 - 2006 } ;
FOR SEEK(bookord.rn,"c_bookord","rn")

Здесь я предполагаю, что в таблице c_bookord есть индекс по полю rn, который так и называется rn
...
Рейтинг: 0 / 0
Конструкция Update
    #34057297
_Mikle_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что в курсоре c_bookord не более 1000 записей. Индекс не создавался, программа и так работает быстро, меня больше волнует правильность конечного результата.
...
Рейтинг: 0 / 0
Конструкция Update
    #34057304
_Mikle_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Данный кусок кода повторяется для нескольких таблиц, и хотелось как-то упростить читабельность кода, SCAN - ENDSCAN этому явно не способствует :-)
...
Рейтинг: 0 / 0
Конструкция Update
    #34057340
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Mikle_Дело в том, что в курсоре c_bookord не более 1000 записей. Индекс не создавался, программа и так работает быстро, меня больше волнует правильность конечного результата.
А какие есть сомнения на этот счет?

Сейчас "под рукой" нет VFP8, не могу проверить будет ли такая конструкция работать вообще. Но если она работает, то "на словах" означает следующее:

Присвоить в таблице bookord полю bsfip_oncome_date значение {^2006.12.31} для тех записей, значение поля rn которых равно значению поля rn хотя бы в одной записи таблицы c_bookord

Именно это и надо сделать?
...
Рейтинг: 0 / 0
Конструкция Update
    #34057790
_Mikle_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, спасибо всем за участие, тема закрыта.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Конструкция Update
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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