powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как повторно выполнить запрос для remote view
10 сообщений из 10, страница 1 из 1
Как повторно выполнить запрос для remote view
    #32752258
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. у меня есть параметризованное открытое удаленное представление. Как мне обновить его содержимое при изменении его параметров

Например, если у меня запрос представления имеет вид
Код: plaintext
1.
select .. from employees where employee_id=?id

и я его открыл при значении id=10, как мне, изменив id на 11 перевыполнить запрос не переоткрывая view?
...
Рейтинг: 0 / 0
Как повторно выполнить запрос для remote view
    #32752266
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
LOCAL id
m.id =  11 
REQUERY("MyView")
...
Рейтинг: 0 / 0
Как повторно выполнить запрос для remote view
    #32752360
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался, я в определение remote view писал select id,... from ... where ..=?id

т.е. id без m. и fox путал его с именем поля

Теперь у меня другой вопрос. Если я открываю представление без указания значений параметров, то после их ввода в появившемся диалоговом окне fox шлет на сервер строку типа
Код: plaintext
1.
exec sp_executesql N'SELECT * FROM dbo.test Test WHERE Test.id = @P1 ', N'@P1 int',  2 

если же я указываю значения параметров самостоятельно - например, так m.id=3, то на сервер уходит строка вида
Код: plaintext
1.
exec sp_executesql N'SELECT * FROM dbo.test Test WHERE Test.id = @P1 ', N'@P1 float',  3 .000000000000000e+ 000 
Т.е. тип параметра начинает определяться неверно, как этого избежать?
...
Рейтинг: 0 / 0
Как повторно выполнить запрос для remote view
    #32752441
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак

Если ты указываешь числовые данные как параметр, то FoxPro сам переводит это число в тип Float. Из-за такой самостоятельности возможны ошибки расчета (округление).

Попробуй задать значение так:

m.id=INT(3)

т.е. явно указать FoxPro, что речь идет о типе Integer, а не Numeric. Хотя, здесь без гарантий.
...
Рейтинг: 0 / 0
Как повторно выполнить запрос для remote view
    #32755048
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ
Интересно, а как диологовое окно VFP после запроса параметров верно устанавливает их тип?

И Большое Спасибо за ответы!
...
Рейтинг: 0 / 0
Как повторно выполнить запрос для remote view
    #32755149
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У FoxPro есть некий "внутренний" тип данных для переменных памяти.

Если почитать HELP, то там говорится, что числовые переменные памяти всегда имеют тип данных Numeric. Вобщем, так оно обычно и бывает. Но, тем не менее, иногда, при определенных обстоятельствах переменные памяти получают тип Integer.

Это бывает именно при задании значений в объектах TextBox на форме. Попробуйте создать формочку, бросить на нее TextBox и установить

TextBox.Value=0

Теперь попробуйте ввести в этот TextBox значение более, чем допустимо для типа Integer (-2,147,483,647 to 2,147,483,647). Не получится. Fox будет ругаться нехорошими словами. Т.е. Fox где-то там у себя установил, что в данном объекте тип данных Integer.

Если же задать значение

TextBox.Value=0.00

То Fox предполагает, что речь идет о типе Numeric.
...
Рейтинг: 0 / 0
Как повторно выполнить запрос для remote view
    #32755454
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно, большое спасибо еще раз
...
Рейтинг: 0 / 0
Как повторно выполнить запрос для remote view
    #32757146
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новый вопрос. Как получить информацию об ошибке при операциях модификации удаленного представления?

Т.е. делаю tableupdate(). Фокс посылает на сервер что-то типа


Код: plaintext
exec sp_executesql N'Insert ...

При этом сервер генерит ошибку из-за нарушения какого-то constraint'а. Но tableupdate() возвращает .T.!?
...
Рейтинг: 0 / 0
Как повторно выполнить запрос для remote view
    #32757302
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriПри этом сервер генерит ошибку из-за нарушения какого-то constraint'а. Но tableupdate() возвращает .T.!?
Не встречал такого.

Если выполнение команды было прервано сервером, то TableUpdate() вернет .F.

Хотя, есть ошибки у сервера, которые не являются критичными и не прерывают выполнение команды. Возможно, ты что-то на сервере "подкрутил"? Эта твоя команда в Query Analyzer прерывается на ошибке или идет дальше?

Штатным способом отлова ошибки является AERROR()

IF TableUpdate()=.F.
LOCAL laError(1)
AERROR(laError)
* Анализ массива laError на предмет ошибки
ENDIF

Хотя, возможно, ты даешь команду TableUpdate() не на ту запись, которая вызывает ошибку? В каком режиме буферизации твое View (3 или 5)? Т.е. что возвращает:

?CursorGetProp("buffering","MyView")

Кстати, после TableUpdate()=.T. данные обновились или нет?
...
Рейтинг: 0 / 0
Как повторно выполнить запрос для remote view
    #32760509
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

В общем я поторопился :) - все и так работает. Спасибо еще раз!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как повторно выполнить запрос для remote view
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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