powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / команда Repla и Insert
8 сообщений из 8, страница 1 из 1
команда Repla и Insert
    #32465449
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли ограничени на количество полей при команде Repla и Insert
кроме ограничания на <255 полей...

Если есть, то как мжно это обскакать(не разбивая команду repla)
Если нет, то почему может ругается если перезаписываются более 128 полей
(Говорит Синтакс еррор)

Всем заранее спасибо...
...
Рейтинг: 0 / 0
команда Repla и Insert
    #32465610
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ограничение на длину одной команды - 8,192 символов

Но, скорее всего, ты где-то действительно допустил синтаксическую ошибку. В такой длинной команде - это не удивительно.

Разбей свою длинную команду на несколько последовательных REPLACE с целью уточнить, в каком именно месте у тебя допущена эта ошибка.
...
Рейтинг: 0 / 0
команда Repla и Insert
    #32465700
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ:
У меня стоит

REPLACE &my_fild_repla IN &my_repla_alias

my_fild_repla = 5750 символов
my_repla_alias = 10 символов

Я разобрал строку my_fild_repla на две...
и перечислил все поля...
После добавления 129 поля возникает Синтаксис еррор

Если пишу так:
repla 128Полей in a1
repla ОставшиесяПоля in a1
то все работает...

Почему... привышений символов нет...
Полей 187...

Ошибку я не мог допустить...
так как эта функция для всех остальных таблиц работает...
Пример куска функции получения равнозначных полей...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	PARAMETERS all_no_yes, my_repla_alias, my_otkuda_repla, mypoisk_kod, my_fild_repla, nado_prizvib
		my_fild_repla = ''
		my_fild_to_insert = ''
		my_fild_sele_to_insert = ''
		FOR my_rep_val =  1  TO FCOUNT(my_repla_alias)
			IF FSIZE(FIELD(my_rep_val,my_repla_alias),my_repla_alias) = FSIZE(FIELD(my_rep_val,my_repla_alias),my_otkuda_repla) AND;
				TYPE(FIELD(my_rep_val,my_repla_alias)) = TYPE(FIELD(FIELD(my_rep_val,my_repla_alias),my_otkuda_repla))
				my_fild_repla = my_fild_repla + IIF(!EMPTY(my_fild_repla),', ','') + FIELD(my_rep_val,my_repla_alias) + ' WITH ' + my_otkuda_repla + '.' + FIELD(my_rep_val,my_repla_alias)
				my_fild_to_insert = my_fild_to_insert + IIF(!EMPTY(my_fild_to_insert),',','') + FIELD(my_rep_val,my_repla_alias)
				my_fild_sele_to_insert = my_fild_sele_to_insert + IIF(!EMPTY(my_fild_sele_to_insert),',','') + my_otkuda_repla + '.' + FIELD(my_rep_val,my_repla_alias)
			ENDIF
		ENDFOR


Сдесь выбираются все поля которые одинаковые по типу и размеру в источнике и перезаписуемой таблице...
потом происходит сам репла...
...
Рейтинг: 0 / 0
команда Repla и Insert
    #32465997
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, похоже на то, что 128 полей для команды REPLACE - это предел. Сделал тестовый примерчик. С горя, даже явно написал

REPLACE f1 WITH 1, f2 WITH 1, ...

до 128 полей берет нормально, а на 129 - синтаксическая ошибка

Так что, придется тебе делать 2 команды REPLACE
...
Рейтинг: 0 / 0
команда Repla и Insert
    #32466095
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да...
Век живи... Век учись...

Хоть бы разработчики как-нибудь предупредили...
А то работаешь... работаешь... и такая лажа...
Теперь еще и дополнительные проверки вносить...{:-(}
...
Рейтинг: 0 / 0
команда Repla и Insert
    #32466112
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Единственно что радует...
Так то, что инсерт с 187 полями работает как дети в школу(проверено вирусов нет){:-)}
...
Рейтинг: 0 / 0
команда Repla и Insert
    #32466340
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну есть же масса других вариантов - и работа через массив (GATHER FROM ARRAY ... FIELDS LIKE &fldList) и через объект полученный по SCATTER NAME например.
А вообще действительно зашифровали это ограничение. Только в описании ошибки 1864 есть намёк :)
WBR, Igor
...
Рейтинг: 0 / 0
команда Repla и Insert
    #32466592
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скатер-Гезар меня не устраивает...
так как надо выбрать таблицу... типа селе а1

Да я уже и сделал репла-инсерт(если нет записи) и по фене какой алиас...
Эт надо для автосохранения... А то понимаете ли врубается и бегает между алиасами... Че не приемлемо при работе пользователя и чревато ошибками...

Раньше оно(автосохранение) работало через Скатер-Гезар и пропадали записи...
И шишь поймешь когда... Так как эт была плавающая ошибка...
У кого-то возникала... особенно при слабой сетке и компы до нашей эры...
И попробуй разберись... если это происходит гне-нидь в неизвестном тебе городе...

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

А вообще не благодорное эт дело идти на поводу у пользователей...
Они захотят че-то... а кому потом отдуваться...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / команда Repla и Insert
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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