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

Insert blank выдаёт ошибку

INSERT cannot be issued when row or table buffering is enabled or when integrity constraints are in effect

В update criteria стоит галка на SQL DELETE then INSERT, на ключевых полях тоже стоит галка на редактировании

Подскажите в чём ошибка
Спасибо
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33544531
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 kostic
Перевод твоей ошибки:
Либо отключите буферизацию строк и таблицы с помощью функции CURSORSETPROP('Buffering',1...), либо воспользуйтесь командой APPEND вместо INSERT.
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33544534
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 kostic
Тьфу...
Вот перевод, а то способ решения этой ошибки:
Нельзя выдавать команду INSERT, когда включена буферизация строк или таблицы, или когда действуют ограничения целостности
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33544591
kostic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это я уже прочитал в HELP ...
запустил команду
CURSORSETPROP('Buffering', 1, 'имя_представления')
получил другое сообщение

Views require either DB_BUFOPTROW or DB_BUFOPTTABLE.
перевод :
[Для представлений необходим режим DB_BUFOPTROW или DB_BUFOPTTABLE]
Курсоры на базе локального или удаленного представления поддерживают обновление только с помощью режима "оптимистической" буферизации.

что-то делаю не так
подскажите
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33545176
Guest1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
append не могу использовать ...
вставлять записи надо не в конец, а по месту
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33545240
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UPDATE ?
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33545270
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Команда INSERT (не INSERT SQL) оставлена для совместимости, ей не надо пользоваться (для буфферизированных данных вообще запрещена), она физически перестраивает структуру хранения данных - это во первых, во вторых для RV/LV нельзя установить буфферизацию 1.

Ошибка в Вашем INSERT-е заключается в том что 3 таблицы используют ссылочную целостность, для того что бы не было конфликтов необходимо корректно внести данные для первичного и внешних ключей.
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33545574
kostic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistОшибка в Вашем INSERT-е заключается в том что 3 таблицы используют ссылочную целостность, для того что бы не было конфликтов необходимо корректно внести данные для первичного и внешних ключей.
Я понимаю это, подскажите, пожалуйста, подробнее, как сделать правильно.
для упрощения на примерных таблицах
1 пальто 1зимние 1 1 пальто зимние
2 куртки 2осенние 1 2 пальто осенние
3 плащи 3 весенние 1 3 пальто весенние
4 летние 2 1 куртки зимние
2 2 куртки осенние
2 3 куртки весенние
3 1 плащи зимние
3 2 плащи осенние
3 3 плащи весенние
нужно привести третью таблицу к виду, добавив строки с признаком "летние"
1 1 пальто зимние
1 2 пальто осенние
1 3 пальто весенние
1 4 пальто летние
2 1 куртки зимние
2 2 куртки осенние
2 3 куртки весенние
2 4 куртки летние
3 1 плащи зимние
3 2 плащи осенние
3 3 плащи весенние
3 4 плащи летние
Спасибо
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33545818
kostic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понимаю это, подскажите, пожалуйста, подробнее, как сделать правильно.
для упрощения на примерных таблицах
1 пальто2 куртки3 плащи

1зимние2осенние3 весенние4 летние

1 1 пальто зимние1 2 пальто осенние1 3 пальто весенние2 1 куртки зимние2 2 куртки осенние2 3 куртки весенние3 1 плащи зимние3 2 плащи осенние3 3 плащи весенние
нужно привести третью таблицу к виду, добавив строки с признаком "летние"
1 1 пальто зимние 1 2 пальто осенние 1 3 пальто весенние 1 4 пальто летние 2 1 куртки зимние 2 2 куртки осенние 2 3 куртки весенние 2 4 куртки летние 3 1 плащи зимние 3 2 плащи осенние 3 3 плащи весенние 3 4 плащилетниеСпасибо
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33545963
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 kostic
Через выборку и проверку. самый простой способ
for count1 = 1 to reccount("таб1")
go count1 in таб1
for ount2 = 1 to reccount ("таб2")
go count1 in таб2
select * from таб3 where поле1_таб3 = поле1_таб1 .and.поле1_таб3 = поле1_таб2 into cursor temp_cursor
if reccount("temp_cursor") = 0 then
append blank in таб3
replace поле1 with таб1.поле1, поле2 with таб2.поле1, поле3 with alltrim(таб1.поле2)+alltrim(таб2.поле2) in таб3
endif
next count2
next1
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33546087
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
View, как и любую другую таблицу можно индексировать. Постройте временный индекс по View и отображайте в нужной последовательности.

Нет никакой необходимости физически вставлять запись в указанное место. Достаточно ОТОБРАЗИТЬ данные в нужной последовательности, а с этим прекрасно справляется индекс.
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33546393
kostic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМНет никакой необходимости физически вставлять запись в указанное место.

В данном случае нужно именно вставить записи физически, поэтому и возник вопрос, как это сделать
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33546416
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kostic ВладимирМНет никакой необходимости физически вставлять запись в указанное место.

В данном случае нужно именно вставить записи физически, поэтому и возник вопрос, как это сделать
Можешь объяснить "на пальцах" почему надо вставить именно физически ? Почему недостаточно проиндексировать? Т.е. отобразить в нужном порядке?

Причем, насколько я понимаю, речь идет не о конечной таблице, а о View. Которое само по себе является временной таблицей, существующей только в пределах среды FoxPro. Т.е. из вне приложения FoxPro с ним работать невозможно.
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33547095
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ

Что Вы имеете ввиду под словом View и что дает индексирование?
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33547343
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недоходящий
Что Вы имеете ввиду под словом View и что дает индексирование?
Читаем первые строчки вопроса в данной теме

kosticВ удалённом представлении есть ...
Я это понимаю так, что речь идет об объекте Remote View. Это как раз и можно перевести как "Удаленное представление".

Читаем дальше

Guest1вставлять записи надо не в конец, а по месту
Как правило, требуется не столько физически вставить запись в указанное место, сколько отобразить добавленную запись в нужном месте. Где она физически находится, по большому счету, никого не интересует. Она должна быть отображена (в отчете, в Grid, в каком-либо еще списке) на нужном месте.

Одна из функций индексов - как раз и состоит в отображении записей в некоем логическом порядке (SET ORDER)

Разумеется, View (в данном случае Remote View) никакого индекса не имеет. Однако его можно построить. Надо только сформировать выражения ключа этого индекса таким образом, чтобы после вставки новой записи (физически, вставка пойдет в конец Remote View) она оказалась отображена на нужном месте.

Физическая вставка в нужное место для Remote View абсолютно бессмысленна. Такая задача может понадобиться только в случае экспорта таблицы куда-то "во вне". Т.е. для некоего "внешнего" приложения. Но Remote View - это исключительно внутренний объект. Он просто не существует вне среды FoxPro.

Следовательно, при любом раскладе понадобиться предварительно сделать выборку из Remote View в некоторую постоянную таблицу ( другую таблицу). Т.е. опять-таки абсолютно бессмысленно пытаться вставить в нужное место в Remote View, если физическое упорядочивание можно сделать в процессе выборки в другую таблицу.
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33547432
kostic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ kostic ВладимирМНет никакой необходимости физически вставлять запись в указанное место.

В данном случае нужно именно вставить записи физически, поэтому и возник вопрос, как это сделать
Можешь объяснить "на пальцах" почему надо вставить именно физически ? Почему недостаточно проиндексировать? Т.е. отобразить в нужном порядке?

Причем, насколько я понимаю, речь идет не о конечной таблице, а о View. Которое само по себе является временной таблицей, существующей только в пределах среды FoxPro. Т.е. из вне приложения FoxPro с ним работать невозможно.
объясняю
есть реальная база на SQL
в её таблицу надо добавить (физически) много записей, но добавить не в конец базы, а по месту. Признак добавления - при смене кода группы записей.
То есть группы записей идут,например
111222333добавить записи надо
так(в места, помеченные звёздочками)
111*1222*2333*3Написана программа типа
do while ! eof()
if группа сменилась
insert blank
repl и тд
endif
skip
enddo
Создано и запущено удалённое представление, запущена программа ...
ругается на строке insert blank (текст ошибки в предыдущих сообщениях).
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33547522
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Батенька, да на SQL Server совсем нет такого понятия как "физический порядок записей". Напрочь. По определению. И место для вставки, в вашем понимании, там там невозможно определить. Определенный порядок гарантируется только включением предложения Order by в запрос и никак иначе.

Вынужден констатировать неправильную постановку задачи.
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33547529
kostic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я правильно понял, что insert blank нельзя сделать в удалённом представлении VFP на таблице SQL базы ?

Подскажите, плз, тогда свой вариант решения этой задачи
Спасибо
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33547548
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящийБатенька, да на SQL Server совсем нет такого понятия как "физический порядок записей". Напрочь. По определению. .
Ну почему же нет.. Очень даже есть. При наличии кластерного индекса физический порядок записей будет соответстовать ключу кластерного индекса. Сервер будет вставлят записи "физически" именно в соответствии с ключом индекса.
А вот зачем это надо для вашей задачин, kostic, не очень понятно. Чего вы хотите выиграть от "физического" порядка записей?
И какое отношение имеет
kostic "база на SQL" .
с командами типа
kostic do while ! eof()
if группа сменилась
insert blank
repl и тд
endif
skip
enddo
Какое вам дело, как SQL Server хранит данные и где, главное, чтобы порядок записей был требуемый. Так это ORDER BY в построителей Remote View или индексация локального курсора при SQLEXEC.

С уважением, Алексей.
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33547581
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Aleksey-K:

Ключевые слова: "При наличии кластерного индекса"! То бишь при отдельном указании серверу по какой информации из записи производить сортировку. А ведь именно про индексы человеку и пытаются тут втолковать. Боюсь, что Ваше замечание о достаточно низкоуровневой реализации хранения записей на конкретнм сервере при, увы, полном отсутствии хотя бы основных знаний из области реляционной теории у вопрошавшего может этого вопрошавшего только ввести в заблуждение.
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33547632
kostic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящийБоюсь, что Ваше замечание о достаточно низкоуровневой реализации хранения записей на конкретнм сервере при, увы, полном отсутствии хотя бы основных знаний из области реляционной теории у вопрошавшего может этого вопрошавшего только ввести в заблуждение.
1. если вы заметили, вопрос был задан в форум VFP, а не SQL
2. только глупый человек может заявлять, что знает исключительно всё... Всегда есть человек, который знает больше тебя ...
3. конкретный ответ на вопрос так и не получен
4. отвечают на этом форуме - добровольно, если вы отвечаете только лишь для того, чтобы ВОЗВЫСИТЬ себя при этом .... см п.2
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33547662
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то, Вам уже ответили, причем неоднократно:

1) Для View это сделать невозможно, поскольку любое View всегда находится в режиме оптимистической буферизации и отключить этот режим для него невозможно. А команда INSERT BLANK работает только с НЕ буферизированными таблицами.

Более того, команда INSERT BLANK оставлена для совместимости со старыми версиями FoxPro и ее использование настоятельно НЕ рекомендуется.

2) Это не имеет практического смысла. Причин "вагон и маленькая тележка". Нет смысла повторяться.

Если бы Вы все-таки попытались объяснить, если не здесь, в форуме, то хотя бы для себя ЗАЧЕМ Вам надо делать вставку именно в физическом порядке следования и нельзя ли решить поставленную задачу без этого, то, уверен, проблема бы отпала сама по себе.

Я просто не вижу причин, зачем это может понадобиться.


Возьмем Ваш код со сменой группы. Я так понимаю, задача состоит в том, чтобы сформировать итоговые строки по каждой группе.

Лично я создал бы еще одно дополнительное поле (не на сервере, а в самом View в процессе выборки - пустое вычисляемое поле), которое будет содержать признак того, что данная строка итоговая. Ну, хотя бы просто число: 0 - информация, 1 - итог.

Далее строится индекс по выражению вроде:

INDEX ON (код группы)+(признак итога) TAG SortOrd

Теперь выполняешь все тот же код SCAN...ENDSCAN с дополнительным фильтром, на игнорирование итоговых строк. Создание итоговой строки по каждой группе - это стандартный APPEND BLANK или INSERT-SQL с обязательным заполнением поля (код группы) и (признак итога).

Перед отображением результата устанавливаешь созданный индекс как главный и получаешь нужный результат.
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33547699
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kostic
1. если вы заметили, вопрос был задан в форум VFP, а не SQL
2. только глупый человек может заявлять, что знает исключительно всё... Всегда есть человек, который знает больше тебя ...
3. конкретный ответ на вопрос так и не получен
4. отвечают на этом форуме - добровольно, если вы отвечаете только лишь для того, чтобы ВОЗВЫСИТЬ себя при этом .... см п.2

1. Но в VFP удаленные представления предназначены для работы с удаленными (в смысле "далекими") данными, а не со своими родными DBF. SQL server также упомянут в уточненной постановке задачи. И вам пытаются объяснить, что недоступность команды Insert в удаленном представлении обусловлена не особенностями VFP или нежеланием разработчиков VFP, а особенностями именно того самого SQL server'а, в который вы пытаетесь запихать свои записи в нужном вам порядке. У сервера на этот счет свое мнение и VFP тут ничем не поможет.

2. Где было такое завление?

3. Конкретный ответ был уже дан, о чем тоже уже упоминалось.

4. Где и в какой фразе есть указание на возвышение? В констатации незнания основ реляционной теории? Ну в таком случае вы противоречите сами себе по п.2
...
Рейтинг: 0 / 0
insert в удалённом представлении
    #33547872
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi kostic!

Команда INSERT BLANK оставлена исключительно для целей обратной
совместимости - используй INSERT INTO (...) ... или уж на худой конец APPEND
BLANK.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / insert в удалённом представлении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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