powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FB и update
25 сообщений из 37, страница 1 из 2
FB и update
    #36258875
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Нужно сделать update двух полей из одной таблицы двумя полями из другой. Сервер FB, обновляю через VFP9. Почему выдает ошибку?
...
Рейтинг: 0 / 0
FB и update
    #36258910
RIGOR,
да Вы, батенька, знаете толк в извращениях. Просто текст без ворда уже скопировать и показать невозможно и потому пару сотен символов надо обрачивать в 26 кило шелухи?
...
Рейтинг: 0 / 0
FB и update
    #36258922
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пожайлуста:
SQLEXEC(SQLCONNECT('Connect1'),"update H02_PERSADDRESSES SET inval_date = (select inval_date from BADADRES where H02_PERSADDRESSES.person_id =BADADRES.id_person and H02_PERSADDRESSES.kladr_id=BADADRES.kladr_id and H02_PERSADDRESSES.house =BADADRES.house and H02_PERSADDRESSES.section =BADADRES.section and H02_PERSADDRESSES.apartment =BADADRES.apartment), inval_reason = (select inval_reason from BADADRES where H02_PERSADDRESSES.person_id =BADADRES.id_person and H02_PERSADDRESSES.kladr_id=BADADRES.kladr_id and H02_PERSADDRESSES.house =BADADRES.house and H02_PERSADDRESSES.section =BADADRES.section and H02_PERSADDRESSES.apartment =BADADRES.apartment)")
...
Рейтинг: 0 / 0
FB и update
    #36258937
RIGORПожайлуста:Прелестно. А где сообщение об ошибке?
...
Рейтинг: 0 / 0
FB и update
    #36258950
RIGOR,
кстати, у Вас так показанный кусок кода действительно на несколько строк растянут или он весь на одной строке?
...
Рейтинг: 0 / 0
FB и update
    #36258965
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код на одну строку. Ошибка в прикрепленном Вордовом файле.
...
Рейтинг: 0 / 0
FB и update
    #36258973
RIGORКод на одну строку. Ошибка в прикрепленном Вордовом файле.Спсибо, но такого счастья не нужно. Не думаю, что сообщение длиннее показанного кода и потому использовать для показа такого сообщения вордовый файл - большой моветон.
...
Рейтинг: 0 / 0
FB и update
    #36259048
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если мувитон, то тогда так: Command contains unrecognized phrase/keyword
...
Рейтинг: 0 / 0
FB и update
    #36259606
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RIGORКод на одну строку. Ошибка в прикрепленном Вордовом файле.
Дык... А вы чего хотели? Максимальная длина команды - 8192 байта, но максимальная длина символьной константы - 255 символов.

Можно писать удобнее для себя, хотя бы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
TEXT TO lcSelect TEXTMERGE NOSHOW PRETEXT  7 
	update H02_PERSADDRESSES SET 
		inval_date = (
			SELECT
				inval_date 
				from BADADRES
				where H02_PERSADDRESSES.person_id = BADADRES.id_person 
					and H02_PERSADDRESSES.kladr_id=BADADRES.kladr_id 
					and H02_PERSADDRESSES.house =BADADRES.house 
					and H02_PERSADDRESSES.section =BADADRES.section 
					and H02_PERSADDRESSES.apartment =BADADRES.apartment
			),
		inval_reason = (
			SELECT
				inval_reason
				from BADADRES
				where H02_PERSADDRESSES.person_id = BADADRES.id_person
					and H02_PERSADDRESSES.kladr_id=BADADRES.kladr_id
					and H02_PERSADDRESSES.house =BADADRES.house
					and H02_PERSADDRESSES.section =BADADRES.section
					and H02_PERSADDRESSES.apartment =BADADRES.apartment
			)
ENDTEXT

SQLEXEC(SQLCONNECT('pssqldb'), lcSelect)
...
Рейтинг: 0 / 0
FB и update
    #36259653
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну а теперь:
Fatal error: Exception code=C0000005 @ 19.10.2009 14:37:35. Error log file: C:\Program Files\Microsoft Visual FoxPro 9\vfp9err.log
Где собака порылась?
...
Рейтинг: 0 / 0
FB и update
    #36259691
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При переносе строк необходимо ставить- ;
При выполнении запроса к SQL серверу имеется ограничение на длину команды.
Попробуйте перед запросом к серверу поставить
=sys(3055,2040)
Хотя не факт, что поможет - проверить не могу, сейчас не на работе.
Ранее обходил это ограниечение несколькими короткими запросами и работал с
полученными курсорами.
...
Рейтинг: 0 / 0
FB и update
    #36259769
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не работает. Даже простой селект через 2 таблицы не идет. Простой апдейт (поля таблицы на переменную) - легко. Еще раз уточняю - Сервер FireBird.
...
Рейтинг: 0 / 0
FB и update
    #36259791
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: RIGOR
> Не работает. Даже простой селект через 2 таблицы не идет. Простой апдейт (поля таблицы на переменную) - легко.
> Еще раз уточняю - Сервер FireBird.

а версия FB?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
FB и update
    #36259811
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1.5
...
Рейтинг: 0 / 0
FB и update
    #36259902
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: RIGOR
> 1.5

По моему там были невозможны корелированные подзапросы, напиши процедуру.
И что значит селект через 2 таблицы не идет? пример такого селекта можно?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
FB и update
    #36259928
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT * from H02_PERSADDRESSES inner join BADADRES on H02_PERSADDRESSES.person_id = BADADRES.id_person and H02_PERSADDRESSES.person_id = BADADRES.id_person ;
where H02_PERSADDRESSES.house =BADADRES.house and H02_PERSADDRESSES.section =BADADRES.section and H02_PERSADDRESSES.apartment =BADADRES.apartment
Про версию 1,5 слышал. Там еще бывает засада, если поля пустые и их сравнивают. Как быть-то? Проблему хотелось бы решить с помощью Фокса.
...
Рейтинг: 0 / 0
FB и update
    #36260082
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: RIGOR

твой селект вполне нормальный запрос, правда у меня стоит 2.0. но и на 1.5 должен проходить, а какую ошибку выдает?
Попробуй обновится на 2.1 или в крайнем случае до 2.0.
Для сравнения на Null(это имеется в виду пустые поля?) есть предусмотренный стандартом оператор is null. т.е. запрос
выглядит таким образом:
Код: plaintext
select * from table1 where field1 is null
Этот запрос должен вернуть все записи из таблицы table1 у которых поле field1 равно null. И это не засада, а вполне
стандартное поведение. Потому что по стандарту null не равен ничему и null <> null.
А для обновления данными из другой таблицы напиши хранимую процедуру в которой будешь проходить по таблице, получать
конкретные значения и этими значениями обновлять другую таблицу.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
FB и update
    #36260236
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местами администраторПопробуйте перед запросом к серверу поставить
=sys(3055,2040)
Хотя не факт, что поможет - проверить не могу, сейчас не на работе. Не поможет - это настройки движка Фокса, к FB (любой вгнешней базе) не имеет никакого отношения.
RIGOR, c FB соединяетесь через ODBC?
...
Рейтинг: 0 / 0
FB и update
    #36260305
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Игорь Горбонос
Переход на версию 2.0 или 2.1 грозит переписыванием базы, пробовали. Спеца, который писал на FB нет, ушел в другую контору. Для меня это сложно. Переписывать все на Фокс - ограничен временем, очень большое приложение. Если пишу SQLEXEC(SQLCONNECT('Connect1','SELECT...') Ошибка: Function name is missing). Как должна выглядеть процедура?
...
Рейтинг: 0 / 0
FB и update
    #36260341
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть подозрение, что не понимает, где взять вторую таблицу. Пытался второю таблицу использовать как внешнюю, подключали к базе - эффект ноль
...
Рейтинг: 0 / 0
FB и update
    #36260412
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: RIGOR
> Есть подозрение, что не понимает, где взять вторую таблицу. Пытался второю таблицу использовать как внешнюю,
> подключали к базе - эффект ноль

Ничего не понял

сделай в базе хранимую процедуру с помощью IBExpert
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
create procedure NEW_PROCEDURE
as
declare variable ID integer;
/*Здесь дообъявляй  :PERSON_ID, :KLADR_ID, :HOUSE, :SECTION, :APARTMENT эти переменные*/
begin
   for select ID, PERSON_ID, KLADR_ID, HOUSE, SECTION, APARTMENT
      from H02_PERSADDRESSES
      into :ID, :PERSON_ID, :KLADR_ID, :HOUSE, :SECTION, :APARTMENT
  do
  begin
    update H02_PERSADDRESSES
    set INVAL_DATE = (select min(INVAL_DATE)
                      from BADADRES
                      where :PERSON_ID = BADADRES.ID_PERSON and
                            :KLADR_ID = BADADRES.KLADR_ID and
                            :HOUSE = BADADRES.HOUSE and
                            :SECTION = BADADRES.SECTION and
                            :APARTMENT = BADADRES.APARTMENT),
        INVAL_REASON = (select min(INVAL_REASON)
                        from BADADRES
                        where :PERSON_ID = BADADRES.ID_PERSON and
                              :KLADR_ID = BADADRES.KLADR_ID and
                              :HOUSE = BADADRES.HOUSE and
                              :SECTION = BADADRES.SECTION and
                              :APARTMENT = BADADRES.APARTMENT)
    where ID = :ID;
  end
end;
И из фокса вызывай так:
Код: plaintext
SQLEXEC(SQLCONNECT('Connect1'),"execute procedure NEW_PROCEDURE()")


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
FB и update
    #36260510
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С null значениями можно бороться с помощью NVL()
...
Рейтинг: 0 / 0
FB и update
    #36260658
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Игорь Горбонос
Примерно такую процедуру писал на FB, только начиналось EXCECUTE BLOCK,из фокса запускал также. НЕ пошло.С работы ушел, исходники все там. Попробую завтра Ваш вариант.
...
Рейтинг: 0 / 0
FB и update
    #36261287
RIGOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Игорь Горбонос
Выдает Syntax error. А зачем min(INVAL_DATE)?
...
Рейтинг: 0 / 0
FB и update
    #36261464
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: RIGOR
> Выдает Syntax error.

Какая ошибка?

> А зачем min(INVAL_DATE)?

а для того, что на все твои условия может вернутся не одно значение, а несколько и вместо апдейта получится ошибка
"multiple rows in singleton select." А min(или max, на выбор) гарантирует возврат одного значения

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


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