powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Буферизация курсоров в VFP9, созданных с помощью MSSQL
25 сообщений из 80, страница 1 из 4
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34375411
Sergiy Diak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Команда SQLEXEC(nHandle, lcSelectCommand, lcCursorName) под VFP9.0 вернёт курсор с именем lcCursorName и поставит ему по умолчанию свойство buffering = 3. При попытке поменять его получается изменить только на 5. Есть ли возможность скинуть его в 1?
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34375695
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergiy DiakКоманда SQLEXEC(nHandle, lcSelectCommand, lcCursorName) под VFP9.0 вернёт курсор с именем lcCursorName и поставит ему по умолчанию свойство buffering = 3. При попытке поменять его получается изменить только на 5. Есть ли возможность скинуть его в 1?
Сразу напрашивается вопрос - а зачем?
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34375727
Фотография Генетический мусор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Ch
Сразу напрашивается вопрос - а зачем?

Чтобы tableupdate не делать постоянно. Иногда бывает что такие курсоры например после фоксовских апдейтов не обновляются, пока им принудительно не сделаешь tableupdate(). В клиент-серверных системах буферизация не нужна.

По сабжу - после получения курсора, сделать
Код: plaintext
select* from mycursor into mycursor readwrite
, других способов нет.
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34375730
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergiy DiakКоманда SQLEXEC(nHandle, lcSelectCommand, lcCursorName) под VFP9.0 вернёт курсор с именем lcCursorName и поставит ему по умолчанию свойство buffering = 3. При попытке поменять его получается изменить только на 5. Есть ли возможность скинуть его в 1?
Нет. Невозможно.
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34375976
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Генетический мусор Чтобы tableupdate не делать постоянно. Иногда бывает что такие курсоры например после фоксовских апдейтов не обновляются, пока им принудительно не сделаешь tableupdate(). В клиент-серверных системах буферизация не нужна..
Что-то я Вас не понимаю... Где Вы хотите обновить курсор? На сервере? Если это так, то из строки, которую привел автор следует, что тут надо написать самому эту обработку, причем она как правило работает довольно стабильно...
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34376458
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторВ клиент-серверных системах буферизация не нужна.

пАчему этА?

ну нарисуй на бумажке сложный бизнеспроцесс и подумай

когда идет тарабан
пощупали в первой табличке
потом еще 10 щупаем
а когда 11-ю закончили только тогда
скинуть 1-ю на сервер нужно

а во время всего этого даем еще справочники и настройки трогать,
и в любой момент даем возможность откатиться назад

вот тогда только КАД + ООП и дает возможность выкрутиться

а если склэкзек+500 безумных ХП, то 50тыс обращений за год,
штат 500 чел, и никакой возможности исправить то,
что придумали покурив.
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34377596
Фотография Генетический мусор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100только КАД + ООП и дает возможность выкрутиться


С таким подходом тебе прямая дорога в конфигурасты, 1це программиздить. Люди писали сложнейшие клиент-серверные системы задолго до появления курсор-адаптеров и прочей мути. Значит как-то выкручивались, умели делать, знали как нужно было работать.
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34377603
Фотография Генетический мусор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Ch Генетический мусор Чтобы tableupdate не делать постоянно. Иногда бывает что такие курсоры например после фоксовских апдейтов не обновляются, пока им принудительно не сделаешь tableupdate(). В клиент-серверных системах буферизация не нужна..
Что-то я Вас не понимаю... Где Вы хотите обновить курсор? На сервере? Если это так, то из строки, которую привел автор следует, что тут надо написать самому эту обработку, причем она как правило работает довольно стабильно...

Вы не поняли. Если полученный с сервера курсор не избавить от буферизации, и начать фоксовскими командами править в нем данные (REPLACE,UPDATE,GATHER и т.д.) - то изменения в курсоре иногда визуально не отражаются, пока не выполнить принудительно tableupdate(), что не очень удобно. Лучше всего после получения курсора избавить его от буферизации, чтобы потом голова не болела.

sqlexec(myhandle,"select * from ...","mycursor")

update mycursor set a = 100

и иногда этот апдейт не проходит пока не сделать tableupdate()
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34377623
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, в общем-то, так и задумано. Сначала все изменения делаются в локальном курсоре, а потом с помощью функции TableUpdate() посылают эти изменения на серер. Хочется как-то по-другому?
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34377638
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
во-первых, водку я с Вами не пил

трудозатраты нужно считать

работа с сервером руками на-прямую
приводит к непосильным трудозатратам
и огромному количеству ошибок

авторЛюди писали сложнейшие клиент-серверные системы задолго до появления курсор-адаптеров

вот то что написали, и суппортю год

50 тыс обращений за год
и вой юзеров про отсутствие ума у программеров
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34377833
Фотография Генетический мусор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov.Ну, в общем-то, так и задумано. Сначала все изменения делаются в локальном курсоре, а потом с помощью функции TableUpdate() посылают эти изменения на серер. Хочется как-то по-другому?

Сколько раз уже доказывали что в реальных системах записью одних только изменений в курсоре недостаточно. Классический пример - документ + фактура. Изменяем данные в фактуре и пересчитываем суммы по документу, все в одной транзакции. Как тут tableupdate обойдешься ?
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34377839
Фотография Генетический мусор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100вот то что написали, и суппортю год

50 тыс обращений за год
и вой юзеров про отсутствие ума у программеров

Ну дак перепиши все через курсор-адаптер, зачем так мучаться то ?
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34377846
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забуферите мне такую табличку
Код: plaintext
1.
2.
3.
4.
CREATE TABLE [Table1] (
	[fld1] [int] NULL 
) ON [PRIMARY]
GO

мой код не сбрасывает изменения на сервер,
и по моим соображениям на отвязанном курсоре и не должен
Код: 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.
28.
close databases all

local lcConnString, lnConnection, ;
	  laErrors[ 1 ]
text to lcConnString noshow pretext  15 
	Driver=SQL Server;
	SERVER=beaver\l00;
	DATABASE=Kot_MyTest;
	uid=kot;
	pwd=;
endtext	
lnConnection = sqlstringconnect(lcConnString)
if lnConnection<= 0 
   messagebox('не подцепился')
   return 
endif


sqlexec(lnConnection,'select fld1 from table1','tt')
SET MULTILOCKS ON 
=CURSORSETPROP('Buffering',  5 , 'tt')
*set step on 
insert into tt value( 123 )
messagebox(CURSORGETPROP('Buffering', 'tt'))
select tt
if !tableupdate(.t.,.t.,'tt')
   messagebox('ttt')
endif


а затем с такой табличкой покажите
Код: plaintext
1.
2.
3.
4.
CREATE TABLE [testBigInt] (
	[bigint] [bigint] NULL 
) ON [PRIMARY]
GO
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34377852
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я на хлеб зарабатываю с икрой

и смотрю как не нужно делать
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34377867
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Генетический мусор Вы не поняли. Если полученный с сервера курсор не избавить от буферизации, и начать фоксовскими командами править в нем данные (REPLACE,UPDATE,GATHER и т.д.) - то изменения в курсоре иногда визуально не отражаются, пока не выполнить принудительно tableupdate(), что не очень удобно. Лучше всего после получения курсора избавить его от буферизации, чтобы потом голова не болела.

sqlexec(myhandle,"select * from ...","mycursor")

update mycursor set a = 100

и иногда этот апдейт не проходит пока не сделать tableupdate()
Действительно не понял... Изменения в локальном курсоре видны сразу клиенту их сделавшему (в VFP 9.0 есть некоторые ньюансы для грязного чтения)... За много лет работы не встречал проблем, описанных Вами... Странно все это...
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34378006
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Генетический мусорВ клиент-серверных системах буферизация не нужна
Сильное замечание. Отсюда следует логичный вывод, что FoxPro писали, мягко говоря, не очень умные люди. Зачем-то прикрутили совершенно не нужный функционал от которого невозможно избавится...

Кстати, не поверю, что Вы не пользуетесь буферизацией и именно в клиент-серверных приложениях. Т.е. допускаю, что Вы не пользуетесь штатным буфером FoxPro, но Вы все-равно создаете свой собственный буфер. Либо копией курсора, либо набором переменных памяти, но Вы разделяете то, что получено с сервера и то, что модифицирует пользователь. Т.е. на клиенте Вы все-равно имеете некий аналог "буфера".

В противном случае, по нажатию кнопки "Сохранить" Вы начнете гнать на сервер кучу не нужной информации, которая вообще-то не изменялась, но Вы не в состоянии это никак определить, пока не сравните эти данные с данными сервера.

Генетический мусорЛюди писали сложнейшие клиент-серверные системы задолго до появления курсор-адаптеров и прочей мути. Значит как-то выкручивались, умели делать, знали как нужно было работать.
Если посмотреть, что же именно они сделали, то окажется, что они создавали свой собственный класс CursorAdapter. Только не общего назначения, а "заточенный" под конкретную задачу со своей спецификой.

Ключевое слово здесь "выкручивались". То, на что раньше требовалось писать кучу кода сейчас делается "штатными" средствами.

Генетический мусорЕсли полученный с сервера курсор не избавить от буферизации, и начать фоксовскими командами править в нем данные (REPLACE,UPDATE,GATHER и т.д.) - то изменения в курсоре иногда визуально не отражаются, пока не выполнить принудительно tableupdate(), что не очень удобно
Если Вы используете для модификации прямые команды REPLACE, UPDATE и т.п., то дописать после них TableUpdate() - не проблема. Командой больше, командой меньше - не принципиально. Несколько неудобно, это да, но не настолько, чтобы "крик поднимать"

Генетический мусорСколько раз уже доказывали что в реальных системах записью одних только изменений в курсоре недостаточно. Классический пример - документ + фактура. Изменяем данные в фактуре и пересчитываем суммы по документу, все в одной транзакции. Как тут tableupdate обойдешься ?
Насколько я заметил, с этим утверждением никто и не спорил. Буферизация и транзакция - это РАЗНЫЕ вещи и предназначены для РАЗНЫХ целей. Ведь даже если Вы исключите буферизацию запись БЕЗ транзакции делать не будете.


Понимаете, Вы точно также как и alex11100 рассуждаете исходя из собственного опыта и личных предпочтений. Логика примерно такая: если я этим не пользуюсь или в моей задаче это мешает, то это вредно и не нужно. То, что этим пользуются другие люди и создают успешно работающие программы с негодованием отвергается.
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34378036
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторalex11100 рассуждаете исходя из собственного опыта и личных предпочтений

Владимир, логика - это Логика.
Это наука, которая как раз и расставляет все точки над ...
учит правильно мыслить.

Давайте рассуждать.
Я в своих рассуждениях как раз и пользуюсь
этими правилами.


Логичное - простое.
Чем сложнее суждение (к программировании применимо алгоритм),
тем больше ситуаций когда суждение или алгоритм неверен(ошибочен).

Возражайте.

Основной принцип, который позволяет избежать ошибок
при построении сложных суждение - АБСТРАКЦИЯ.

Возражайте.
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34378043
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну давайте. напрямую

выясним, что лучше, и с точки зрения Логики.

ООП или тупое и слепое набивание прг и лепление форм.
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34378048
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это не логика, о чем Вы говорите.

это умозаключение и суждение

суждения бывают простыми и сложными.

в сложных суждения выделяют дедукцию.

вот давайте и порассуждаем.
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34378114
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100Владимир, логика - это Логика.
Это наука, которая как раз и расставляет все точки над ...
учит правильно мыслить.

Давайте рассуждать.
Я в своих рассуждениях как раз и пользуюсь
этими правилами.


Логичное - простое.
Чем сложнее суждение (к программировании применимо алгоритм),
тем больше ситуаций когда суждение или алгоритм неверен(ошибочен).

Возражайте.

Основной принцип, который позволяет избежать ошибок
при построении сложных суждение - АБСТРАКЦИЯ.

Возражайте.Алекс, можно я повозражаю? Первое - это не логика, а софистика. Второе - это методология.
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34378143
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет, уважаемый Urri, софистика - это направление в философии.

здесь мы обсуждаем умозаключения.

умозаключение такое.

"в большинстве случаев при работе с MS SQL предпочтительней использовать
КУРСОРАДАПТЕР - класс, который значительно облегчает и ускоряет разработку,
позволяет избежать ошибок"

при исследовании правдивости этого умозаключения будем использовать
законы Логики.

и философия здесь не причем.

мы имеем конкретные посылки и конкретные вещи, которые исследованы
и не требуют при исследовании применения методов философии.
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34378176
Фотография Генетический мусор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100умозаключение такое.

"в большинстве случаев при работе с MS SQL предпочтительней использовать
КУРСОРАДАПТЕР - класс, который значительно облегчает и ускоряет разработку,
позволяет избежать ошибок"


Умозаключение неверное, ибо курсор адаптер не позволяет возвращать output-параметры из хранимых процедур, только лишь курсоры, что значительно сковывает разработчика.
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34378201
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в большинстве случаев

умозаключение верное

для большинства случаев есть задача
получить курсор и внести необходимые изменения

ошибка в ХП - верните пустой курсор
или курсор определенной структуры и с опред. набором данных

курсорадаптер имеет ограничение
одинкурсорадаптер=один локальный курсор
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34378202
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100Логичное - простое.
Чем сложнее суждение (к программировании применимо алгоритм),
тем больше ситуаций когда суждение или алгоритм неверен(ошибочен).

Возражайте.
Возражаю.

Логичное - не значит простое. Совсем не значит. Это два принципиально разных понятия. Из одного никак, никоим образом, другое не следует. Логичное может быть простым, но может быть и сложным.

Логичное - это всего-лишь вытекающее (следующее) из определенных рассуждений при соблюдении определенных правил. Но как сами рассуждения, так и правила могут быть настолько сложны, что мало кто в них разберется.

Теория дифференциальных уровнений логичная? Безусловно! А простая? Ну, для кого как.

Сложное - если понимать буквально, состоящее из многих частей - сложенное. Но, как правило, под этим подразумевают "трудное для понимания".

На практике, самым трудным для понимания оказываются самые простые вещи. Нормализация - отсутствие дублей. Просто. Но кто-нибудь, когда-нибудь приводил ТАКОЕ определение? Нет! Все время вокруг "накручивают" море слов, через которое надо "продираться" к пониманию элементарных вещей.

Сложность и ошибочность - опять РАЗНЫЕ понятия. Здесь под термином "сложность" подразумевается именно "сложенность", т.е. конструкция из многих слагаемых. Не случайно, Вы тут же вспомнили "вероятность" (разные ситуации)

"Ритуал" может быть очень сложен, но выполняется без ошибок. Для программиста, роль "ритаула" выполняет его стиль программирования. Т.е. некий способ написания кода, который выполняется "на автомате" и позволяет избежать ряда ошибок. Уже не задумываясь над тем, что именно программируется. В результате, следование стилю позволяет писать очень сложные вещи без ошибок.

alex11100Основной принцип, который позволяет избежать ошибок
при построении сложных суждение - АБСТРАКЦИЯ.

Возражайте.
Возражаю.

Абстракция - это ИНСТРУМЕНТ. Как любой другой инструмент, он применим при определенных условиях. Использовать микроскоп в качестве молотка можно, но, может все-таки лучше взять другой инструмент? Более подоходящий в данных условиях для решения данной задачи?

Универсальных инструментов НЕТ.

При построении сложных суждений, используют РАЗНЫЕ инструменты. Если Вы привязываетесь к какому-либо одному инструменту, то вероятность ошибок резко возрастает. И не имеет никакого значения, какой именно инструмент Вы используете. Сложная проблема потому и сложная, что состоит из разных частей. К каждой части нужен свой подход. Свой инструмент.

То, что Вы выделяете как "основной" инструмент - это то, к чему Вы привыкли, что лучше Вам знакомо, что модно, наконец. Но это вовсе не значит, что при помощи этого инструмента задчу можно решить наиболее быстрым и простым способом.

Сейчас очень сильно рекламируют NET-технологию. Но означает ли это, что данный инструмент самый удобный для решения вообще ВСЕХ задач? Разумеется нет.

alex11100ну давайте. напрямую

выясним, что лучше, и с точки зрения Логики.

ООП или тупое и слепое набивание прг и лепление форм.
Дайте ссылку, где я такое говорил. А также укажите граничные условия при которых будет проводится сравнение. "Лучше" при каких условиях и для решения каких задач?

Проблема в том, что Вы никогда не говорите при каких условиях то или иное решение будет лучше или хуже. Вы говорите что это есть хорошо, а это есть плохо. Но КОГДА? Ах "всегда"? Т.е. чтобы перейти на другую сторону улицы мне надо построить самолет? А просто пешком нельзя?
...
Рейтинг: 0 / 0
Буферизация курсоров в VFP9, созданных с помощью MSSQL
    #34378214
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ

я вас попрошу почитать любую книжецу,
начинающуюся словом "Логика..."

там даны определения

предмета
науки
объема
суждения
умозаключения
методов
способов
....
...
Рейтинг: 0 / 0
25 сообщений из 80, страница 1 из 4
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Буферизация курсоров в VFP9, созданных с помощью MSSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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