Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление представления / 11 сообщений из 11, страница 1 из 1
21.03.2008, 14:24
    #35206053
Обновление представления
Как поборать Update conflict?

Есть таблица Table1, на основе этой таблицы сделано обычное представление vTable1, в которое добавлены все поля из Table1. На вкладке Update Criteria следующие установки:
1. Send SQL updates
2. Обновление всех полей, кроме ключевого.
3. SQL WHERE - Key and modified fields
4. Update using - SQL UPDATE

При открытии формы в представление добавляются записи, через INSERT.
Потом есть команда REPLACE ALL и вот на ней прога ругается.
...
Рейтинг: 0 / 0
21.03.2008, 14:26
    #35206061
Обновление представления
забвл добавить: у таблицы Table1 5 режим буфферизации установлен в 5
...
Рейтинг: 0 / 0
21.03.2008, 15:56
    #35206368
Обновление представления
ругается на REPLACE ALL?

или на tableupdate() ??

ругается до начала сохранения изменений?
или когда Вы пытаетесь сохранить внесенные изменения?
...
Рейтинг: 0 / 0
21.03.2008, 16:16
    #35206458
Обновление представления
Скорее всего я просто не так что-то делаю.
У меня таблица Table1 пока пустая. Записей там нет. Хочу сначала добавить/изменить записи в представление, а потом сбросить/обновить их в таблицу. Хотелось бы это реализовать через Send SQL updates представления, а не сбрасыванием данных из представления в таблицу в лоб через инсёрты и реплэйсы. Как лучше реализовать сиё?
А ругается именно на реплэйс. До tableupdate() пока не дошёл.
...
Рейтинг: 0 / 0
21.03.2008, 20:51
    #35207109
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление представления
Команда Replace по умолчанию обновляет записи в текущей рабочей области. Вы пытаетесь делать модификацию в таблице или во View?

Буферизацию надо устанавливать на View, а не на исходную таблицу.
...
Рейтинг: 0 / 0
21.03.2008, 23:00
    #35207183
Обновление представления
Ну то, что буфферизировать надо представление до меня дошло :D
Поставил 3-й тип буфферизации, что меня не устраивает. Хотелось бы 5-ый тип установить, но у меня данные из представления выводятся в иерархический грид, поэтому после добавления/удаления записи необходимо выполнять команду INDEX, чтобы данные отображались правильно, но ведь INDEX можно применять только при строчной буфферизации представления.
И второй момент как раз связан с добавлением новой записи. Выполняю INSERT, добавляется новая запись. Соответственно она добавляется в представление со значением ключевого поля равным 0, но записи в самой таблице с таким ключом ещё нет. И когда я начинаю менять эту новую добавленную запись REPLACE'ом, то выходит Update conflict.
Вобщем, моск уже кипит как лучше сделать. Может ктонить посоветует чегонить дельное?
...
Рейтинг: 0 / 0
22.03.2008, 00:58
    #35207239
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление представления
Создавать индекс командой INDEX надо всего-лишь один раз при открытии View. После этого переключить View в 5 режим буферизации и спокойно работать.
...
Рейтинг: 0 / 0
22.03.2008, 15:55
    #35207535
Обновление представления
теперь работется спокойно :)) но вот только обновления данных в таблице не происходит...
открываю форму, в представлении vTable1 добавляю/удаляю/изменяю записи и при закрытии формы, т.е. тогда, когда необходимо сбросить данные из предствления в таблицу Tables1, они не сбрасываются...
В ините формы открываю представление, устанавливаю
Код: plaintext
1.
2.
CURSORSETPROP("Buffering",  5 , "vTables1")
CURSORSETPROP("Tables", "vTables", "vTables1")
При закрытии формы выводится сообщение "Сохранить внесённые изменения?" и если выбрано "Да", то выполняется следующий код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CURSORSETPROP("UpdateNameList", <список полей>, "vTables1")
CURSORSETPROP("KeyFieldList", "id", "vTables1")
CURSORSETPROP("UpdatableFieldList", <список полей>, "vTables1")
CURSORSETPROP("UpdateType",  1 , "vTables1")
CURSORSETPROP("WhereType",  3 , "vTables1")
CURSORSETPROP("SendUpdates", .T., "vTables1")
TABLEUPDATE(.T., .T., "vTables1")

и ничего не обновляется....
...
Рейтинг: 0 / 0
22.03.2008, 16:12
    #35207548
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление представления
Это в init перенеси:
Код: plaintext
1.
2.
3.
4.
5.
CURSORSETPROP("UpdateNameList", <список полей>, "vTables1")
CURSORSETPROP("KeyFieldList", "id", "vTables1")
CURSORSETPROP("UpdatableFieldList", <список полей>, "vTables1")
CURSORSETPROP("UpdateType",  1 , "vTables1")
CURSORSETPROP("WhereType",  3 , "vTables1")
CURSORSETPROP("SendUpdates", .T., "vTables1")

Это при сохранении:
Код: plaintext
1.
TABLEUPDATE(.T., .T., "vTables1")
и анализируй что возвращается в TABLEUPDATE()
...
Рейтинг: 0 / 0
22.03.2008, 16:20
    #35207556
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление представления
А лучше один раз все необходимые настройки для представления сделай, после создания. Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
	Create sql View vPrice as SELECT Price.nPriceId as nVPriceId, Price.nKol ... 

	DbSetProp('vPrice', 'View', 'Tables', 'Price')
	DbSetProp('vPrice.nVPriceId', 'Field', 'UpdateName', 'price.nPriceId')
	DbSetProp('vPrice.nVPriceId', 'Field', 'KeyField', .t.)
	DbSetProp('vPrice.nKol', 'Field', 'Updatable', .t.)
	DbSetProp('vPrice', 'View', 'SendUpdates', .t.)
при открытии (или в инит)
Код: plaintext
CURSORSETPROP("Buffering",  5 , "vTables1")
сохранение
Код: plaintext
TABLEUPDATE(.T., .T., "vTables1")
...
Рейтинг: 0 / 0
22.03.2008, 18:29
    #35207657
Обновление представления
разобрался, тема закрыта....
ну вобщем в конструкторе установил все свойства представления, открыл представление, проиндексировал его, а потом установл CURSORSETPROP("Buffering", 5, "vTables1")... при закрытии формы сделал TABLEUPDATE(.T., .T., "vTables1")
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление представления / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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