Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / insert в удалённом представлении / 24 сообщений из 24, страница 1 из 1
14.02.2006, 18:07
    #33544521
kostic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
В удалённом представлении есть 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
14.02.2006, 18:10
    #33544531
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
2 kostic
Перевод твоей ошибки:
Либо отключите буферизацию строк и таблицы с помощью функции CURSORSETPROP('Buffering',1...), либо воспользуйтесь командой APPEND вместо INSERT.
...
Рейтинг: 0 / 0
14.02.2006, 18:11
    #33544534
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
2 kostic
Тьфу...
Вот перевод, а то способ решения этой ошибки:
Нельзя выдавать команду INSERT, когда включена буферизация строк или таблицы, или когда действуют ограничения целостности
...
Рейтинг: 0 / 0
14.02.2006, 18:28
    #33544591
kostic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
это я уже прочитал в HELP ...
запустил команду
CURSORSETPROP('Buffering', 1, 'имя_представления')
получил другое сообщение

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

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

Ошибка в Вашем INSERT-е заключается в том что 3 таблицы используют ссылочную целостность, для того что бы не было конфликтов необходимо корректно внести данные для первичного и внешних ключей.
...
Рейтинг: 0 / 0
15.02.2006, 11:04
    #33545574
kostic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
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
15.02.2006, 12:03
    #33545818
kostic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
Я понимаю это, подскажите, пожалуйста, подробнее, как сделать правильно.
для упрощения на примерных таблицах
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
15.02.2006, 12:43
    #33545963
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
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
15.02.2006, 13:08
    #33546087
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
View, как и любую другую таблицу можно индексировать. Постройте временный индекс по View и отображайте в нужной последовательности.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подскажите, плз, тогда свой вариант решения этой задачи
Спасибо
...
Рейтинг: 0 / 0
15.02.2006, 20:02
    #33547548
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
проходящийБатенька, да на 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
15.02.2006, 20:25
    #33547581
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
2 Aleksey-K:

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

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

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

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

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

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


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

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

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

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

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

Перед отображением результата устанавливаешь созданный индекс как главный и получаешь нужный результат.
...
Рейтинг: 0 / 0
15.02.2006, 22:20
    #33547699
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
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
16.02.2006, 02:23
    #33547872
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert в удалённом представлении
Hi kostic!

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

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


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