|
|
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
В удалённом представлении есть 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, на ключевых полях тоже стоит галка на редактировании Подскажите в чём ошибка Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2006, 18:07 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
2 kostic Перевод твоей ошибки: Либо отключите буферизацию строк и таблицы с помощью функции CURSORSETPROP('Buffering',1...), либо воспользуйтесь командой APPEND вместо INSERT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2006, 18:10 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
2 kostic Тьфу... Вот перевод, а то способ решения этой ошибки: Нельзя выдавать команду INSERT, когда включена буферизация строк или таблицы, или когда действуют ограничения целостности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2006, 18:11 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
это я уже прочитал в HELP ... запустил команду CURSORSETPROP('Buffering', 1, 'имя_представления') получил другое сообщение Views require either DB_BUFOPTROW or DB_BUFOPTTABLE. перевод : [Для представлений необходим режим DB_BUFOPTROW или DB_BUFOPTTABLE] Курсоры на базе локального или удаленного представления поддерживают обновление только с помощью режима "оптимистической" буферизации. что-то делаю не так подскажите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2006, 18:28 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
append не могу использовать ... вставлять записи надо не в конец, а по месту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 07:51 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
UPDATE ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 08:55 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
Команда INSERT (не INSERT SQL) оставлена для совместимости, ей не надо пользоваться (для буфферизированных данных вообще запрещена), она физически перестраивает структуру хранения данных - это во первых, во вторых для RV/LV нельзя установить буфферизацию 1. Ошибка в Вашем INSERT-е заключается в том что 3 таблицы используют ссылочную целостность, для того что бы не было конфликтов необходимо корректно внести данные для первичного и внешних ключей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 09:07 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
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 плащи летние Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 11:04 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
Я понимаю это, подскажите, пожалуйста, подробнее, как сделать правильно. для упрощения на примерных таблицах 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 плащилетниеСпасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 12:03 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 12:43 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
View, как и любую другую таблицу можно индексировать. Постройте временный индекс по View и отображайте в нужной последовательности. Нет никакой необходимости физически вставлять запись в указанное место. Достаточно ОТОБРАЗИТЬ данные в нужной последовательности, а с этим прекрасно справляется индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 13:08 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
ВладимирМНет никакой необходимости физически вставлять запись в указанное место. В данном случае нужно именно вставить записи физически, поэтому и возник вопрос, как это сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 14:07 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
kostic ВладимирМНет никакой необходимости физически вставлять запись в указанное место. В данном случае нужно именно вставить записи физически, поэтому и возник вопрос, как это сделать Можешь объяснить "на пальцах" почему надо вставить именно физически ? Почему недостаточно проиндексировать? Т.е. отобразить в нужном порядке? Причем, насколько я понимаю, речь идет не о конечной таблице, а о View. Которое само по себе является временной таблицей, существующей только в пределах среды FoxPro. Т.е. из вне приложения FoxPro с ним работать невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 14:14 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
2 ВладимирМ Что Вы имеете ввиду под словом View и что дает индексирование? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 16:42 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
Недоходящий Что Вы имеете ввиду под словом View и что дает индексирование? Читаем первые строчки вопроса в данной теме kosticВ удалённом представлении есть ... Я это понимаю так, что речь идет об объекте Remote View. Это как раз и можно перевести как "Удаленное представление". Читаем дальше Guest1вставлять записи надо не в конец, а по месту Как правило, требуется не столько физически вставить запись в указанное место, сколько отобразить добавленную запись в нужном месте. Где она физически находится, по большому счету, никого не интересует. Она должна быть отображена (в отчете, в Grid, в каком-либо еще списке) на нужном месте. Одна из функций индексов - как раз и состоит в отображении записей в некоем логическом порядке (SET ORDER) Разумеется, View (в данном случае Remote View) никакого индекса не имеет. Однако его можно построить. Надо только сформировать выражения ключа этого индекса таким образом, чтобы после вставки новой записи (физически, вставка пойдет в конец Remote View) она оказалась отображена на нужном месте. Физическая вставка в нужное место для Remote View абсолютно бессмысленна. Такая задача может понадобиться только в случае экспорта таблицы куда-то "во вне". Т.е. для некоего "внешнего" приложения. Но Remote View - это исключительно внутренний объект. Он просто не существует вне среды FoxPro. Следовательно, при любом раскладе понадобиться предварительно сделать выборку из Remote View в некоторую постоянную таблицу ( другую таблицу). Т.е. опять-таки абсолютно бессмысленно пытаться вставить в нужное место в Remote View, если физическое упорядочивание можно сделать в процессе выборки в другую таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 18:12 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
ВладимирМ kostic ВладимирМНет никакой необходимости физически вставлять запись в указанное место. В данном случае нужно именно вставить записи физически, поэтому и возник вопрос, как это сделать Можешь объяснить "на пальцах" почему надо вставить именно физически ? Почему недостаточно проиндексировать? Т.е. отобразить в нужном порядке? Причем, насколько я понимаю, речь идет не о конечной таблице, а о View. Которое само по себе является временной таблицей, существующей только в пределах среды FoxPro. Т.е. из вне приложения FoxPro с ним работать невозможно. объясняю есть реальная база на SQL в её таблицу надо добавить (физически) много записей, но добавить не в конец базы, а по месту. Признак добавления - при смене кода группы записей. То есть группы записей идут,например 111222333добавить записи надо так(в места, помеченные звёздочками) 111*1222*2333*3Написана программа типа do while ! eof() if группа сменилась insert blank repl и тд endif skip enddo Создано и запущено удалённое представление, запущена программа ... ругается на строке insert blank (текст ошибки в предыдущих сообщениях). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 18:43 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
Батенька, да на SQL Server совсем нет такого понятия как "физический порядок записей". Напрочь. По определению. И место для вставки, в вашем понимании, там там невозможно определить. Определенный порядок гарантируется только включением предложения Order by в запрос и никак иначе. Вынужден констатировать неправильную постановку задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 19:43 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
Я правильно понял, что insert blank нельзя сделать в удалённом представлении VFP на таблице SQL базы ? Подскажите, плз, тогда свой вариант решения этой задачи Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 19:50 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
проходящийБатенька, да на SQL Server совсем нет такого понятия как "физический порядок записей". Напрочь. По определению. . Ну почему же нет.. Очень даже есть. При наличии кластерного индекса физический порядок записей будет соответстовать ключу кластерного индекса. Сервер будет вставлят записи "физически" именно в соответствии с ключом индекса. А вот зачем это надо для вашей задачин, kostic, не очень понятно. Чего вы хотите выиграть от "физического" порядка записей? И какое отношение имеет kostic "база на SQL" . с командами типа kostic do while ! eof() if группа сменилась insert blank repl и тд endif skip enddo Какое вам дело, как SQL Server хранит данные и где, главное, чтобы порядок записей был требуемый. Так это ORDER BY в построителей Remote View или индексация локального курсора при SQLEXEC. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 20:02 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
2 Aleksey-K: Ключевые слова: "При наличии кластерного индекса"! То бишь при отдельном указании серверу по какой информации из записи производить сортировку. А ведь именно про индексы человеку и пытаются тут втолковать. Боюсь, что Ваше замечание о достаточно низкоуровневой реализации хранения записей на конкретнм сервере при, увы, полном отсутствии хотя бы основных знаний из области реляционной теории у вопрошавшего может этого вопрошавшего только ввести в заблуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 20:25 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
проходящийБоюсь, что Ваше замечание о достаточно низкоуровневой реализации хранения записей на конкретнм сервере при, увы, полном отсутствии хотя бы основных знаний из области реляционной теории у вопрошавшего может этого вопрошавшего только ввести в заблуждение. 1. если вы заметили, вопрос был задан в форум VFP, а не SQL 2. только глупый человек может заявлять, что знает исключительно всё... Всегда есть человек, который знает больше тебя ... 3. конкретный ответ на вопрос так и не получен 4. отвечают на этом форуме - добровольно, если вы отвечаете только лишь для того, чтобы ВОЗВЫСИТЬ себя при этом .... см п.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 21:04 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
Вообще-то, Вам уже ответили, причем неоднократно: 1) Для View это сделать невозможно, поскольку любое View всегда находится в режиме оптимистической буферизации и отключить этот режим для него невозможно. А команда INSERT BLANK работает только с НЕ буферизированными таблицами. Более того, команда INSERT BLANK оставлена для совместимости со старыми версиями FoxPro и ее использование настоятельно НЕ рекомендуется. 2) Это не имеет практического смысла. Причин "вагон и маленькая тележка". Нет смысла повторяться. Если бы Вы все-таки попытались объяснить, если не здесь, в форуме, то хотя бы для себя ЗАЧЕМ Вам надо делать вставку именно в физическом порядке следования и нельзя ли решить поставленную задачу без этого, то, уверен, проблема бы отпала сама по себе. Я просто не вижу причин, зачем это может понадобиться. Возьмем Ваш код со сменой группы. Я так понимаю, задача состоит в том, чтобы сформировать итоговые строки по каждой группе. Лично я создал бы еще одно дополнительное поле (не на сервере, а в самом View в процессе выборки - пустое вычисляемое поле), которое будет содержать признак того, что данная строка итоговая. Ну, хотя бы просто число: 0 - информация, 1 - итог. Далее строится индекс по выражению вроде: INDEX ON (код группы)+(признак итога) TAG SortOrd Теперь выполняешь все тот же код SCAN...ENDSCAN с дополнительным фильтром, на игнорирование итоговых строк. Создание итоговой строки по каждой группе - это стандартный APPEND BLANK или INSERT-SQL с обязательным заполнением поля (код группы) и (признак итога). Перед отображением результата устанавливаешь созданный индекс как главный и получаешь нужный результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 21:34 |
|
||
|
insert в удалённом представлении
|
|||
|---|---|---|---|
|
#18+
kostic 1. если вы заметили, вопрос был задан в форум VFP, а не SQL 2. только глупый человек может заявлять, что знает исключительно всё... Всегда есть человек, который знает больше тебя ... 3. конкретный ответ на вопрос так и не получен 4. отвечают на этом форуме - добровольно, если вы отвечаете только лишь для того, чтобы ВОЗВЫСИТЬ себя при этом .... см п.2 1. Но в VFP удаленные представления предназначены для работы с удаленными (в смысле "далекими") данными, а не со своими родными DBF. SQL server также упомянут в уточненной постановке задачи. И вам пытаются объяснить, что недоступность команды Insert в удаленном представлении обусловлена не особенностями VFP или нежеланием разработчиков VFP, а особенностями именно того самого SQL server'а, в который вы пытаетесь запихать свои записи в нужном вам порядке. У сервера на этот счет свое мнение и VFP тут ничем не поможет. 2. Где было такое завление? 3. Конкретный ответ был уже дан, о чем тоже уже упоминалось. 4. Где и в какой фразе есть указание на возвышение? В констатации незнания основ реляционной теории? Ну в таком случае вы противоречите сами себе по п.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 22:20 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1592344]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
164ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 459ms |

| 0 / 0 |
