powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Технология КС в дельфи
25 сообщений из 53, страница 1 из 3
Технология КС в дельфи
    #32889290
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения у модератора, что поднимаю этот вопрос в НАШЕМ форуме, но у меня остались неясности из топика "Есть люди отказавшиеся от Delphi?", причем оппоненты Фокса, на мой взгляд весьма знающие в своем деле и вполне адекватно реагирующие на критику.

Прошу не удалять, хотелось бы услышать/увидеть ответы

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

pkarklin

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

Т.е. Вы хотите сказать, что гараздо лучше сначал ВСЕ данные, необходимые для расчета подтянуть на клиента, и там уже считать??? Простите, а для чего тогда собственно сервер СУБД нужен? Чтоб эмулировать dbf?

Давайте разберем/разложим этот пример
Что надо показать пользователю

- наверное нужен список продукции кот. мы выпускаем с её количеством (соответственно подтянули кусок справочника изделий обьединенный с кол-вом выпуска), наверное понятно что бы юзер мог указать что для изделия №1 выпуск планируем такой-то, а для др. изделия такой-то

- нужен общий обьем выпуска (тоже на сервере посчитали и подтянули на клиента), что бы получить искомый процент

Понятно, что данных цифр достаточно, что бы получить результат.

Теперь, как это реализуется в дельфи или как Вы бы реализовали, исходя из архитектуры КС для получения результата ?

pkarklinСтранно однако слышать, что обработка данных для сервера СУБД - это "несвойственная ему задача". Их обычно "молотилками данных" называют - ибо это прямое их предназначение.

У японцев популярен замечательный тест Super PI 1.1e здесь http://www.overclockers.ru/files/index.shtml?dir=33
попробуйте запустить его пару-тройку экземпляров на сервере и один на дохлом селероне и посмотрите на результат (у меня получился сравним по времени)

Теперь конкретные вопросы

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

- каким образом в дельфи происходит посылка команды на сервер (меня устроит ответ есть такая ф-ия/компонент)

- каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер)

Спасибо за ответы.
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889349
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДавайте разберем/разложим этот пример
Что надо показать пользователю

- наверное нужен список продукции кот. мы выпускаем с её количеством (соответственно подтянули кусок справочника изделий обьединенный с кол-вом выпуска), наверное понятно что бы юзер мог указать что для изделия №1 выпуск планируем такой-то, а для др. изделия такой-то

- нужен общий обьем выпуска (тоже на сервере посчитали и подтянули на клиента), что бы получить искомый процент

Понятно, что данных цифр достаточно, что бы получить результат.

Теперь, как это реализуется в дельфи или как Вы бы реализовали, исходя из архитектуры КС для получения результата ?
Если я правильно понял смысл, то меняем объем выпуска - выполняем ХП на сервере, где update и т.д.
Обновляем данные общего объема.
Не понял, что тут такого? Или не то ответил? :)

автор- каким образом в дельфи разрешается конфликт модификации данных (например, два пользователя редактируют одну запись - первый сохранил, а потом второй сохранил, какие данные получатся в итоге. Или для этих целей используется ХП сервера, тогда какой принцип в этом случае применяете )
Зависит вообще от того, нужно это вам или нет. У нас нигде не используется. Кто последний - тот и молодец.
Но если нужно - при начале редактирования пишется в лог, что данная запись на редактировании (вообще в форуме MS SQL приводилось несколько алгоритмов, на 100% готовых к работе для таких ситуаций). Кто следующий хочет редактировать, проверяем лог, если запись есть - сообщение, что Вася эту запись забрал себе.
А у вас как это делается?

автор- каким образом в дельфи происходит посылка команды на сервер (меня устроит ответ есть такая ф-ия/компонент)
Собственно у меня и pkarklin через компонент Query дергается нужная хранимая процедура с установленными параметрами. Все. Обратно получаем результат, если нужно.

автор- каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер)
Тоже все через ХП.

Кто-то работает и не через ХП (но это не наш путь :)), но посылают на сервер те же команды.

Я дкмаю, что к-с в Фокспро ничем не отличается от к-с в Дельфи

-- Tygra's --
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889556
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ

tygraЕсли я правильно понял смысл, то меняем объем выпуска - выполняем ХП на сервере, где update и т.д.
Обновляем данные общего объема.
Не понял, что тут такого? Или не то ответил? :)

И да и нет.

Попробую разложить как сам понял Ваш ответ.

- через интерфейс, что-то изменили в данных (например, прошли циклом по датасету и присвоили новые значения)

- пересылаем данные на сервер (наверное через компонент, который реализует эту функциональность, например создает временную табличку на сервере), затем вызываем ХП, которая знает про временную табличку и производит модификацию (здесь скорее рассчет) основных данных и возвращает результат, в виде изделие №1 процент выпуска стал такой-то, для др. изделия такой-то

- затем все эти расчеты надо показать юзеру (не утверждаю, просто не знаю как это реализуется в дельфи - проходим по датасету и добавляем новые полученные цифры)

Я правильно понял?

tygra автор
- каким образом в дельфи разрешается конфликт модификации данных (например, два пользователя редактируют одну запись - первый сохранил, а потом второй сохранил, какие данные получатся в итоге. Или для этих целей используется ХП сервера, тогда какой принцип в этом случае применяете )
Зависит вообще от того, нужно это вам или нет. У нас нигде не используется. Кто последний - тот и молодец.
Но если нужно - при начале редактирования пишется в лог, что данная запись на редактировании (вообще в форуме MS SQL приводилось несколько алгоритмов, на 100% готовых к работе для таких ситуаций). Кто следующий хочет редактировать, проверяем лог, если запись есть - сообщение, что Вася эту запись забрал себе.

Понял, это одно из трех решений для разрешения конфликтов модификации, ладно.

tygraА у вас как это делается?

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

tygra автор- каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер)
Тоже все через ХП.

Вот об этом по подробнее (свое представление об этом я написал выше), каким образом в ХП передаются параметры и каким образом оформляется транзакция.

Давайте на простом примере Фокса расскажу, что хочу спросить, в Фоксе можно сформировать символьную строку, скажем такого вида

Код: plaintext
1.
2.
3.
4.
5.
cStr = [BEGIN TRANSACTION ;
         EXEC MySp(.....)    
         INSERT INTO TABLE(....) VALUES(....) ;
-- проверка на ошибки
ROLLBACK
COMMIT]

и затем эту строку ф-ей SQLEXEC затолкать на сервер, те вы видите, что при формировании строки можно явно прописать параметры как для INSERT, так и для EXEC (мы здесь рассматриваем простой пример передачи параметров, есть и другие может даже ещё проще)

Каким образом это делается в дельфи.

tygraЯ дкмаю, что к-с в Фокспро ничем не отличается от к-с в Дельфи

Да у меня такое же мнение и повторюсь, я написал пост после Ваших слов "а как это делается в Фоксе" и мне тоже стало интересно "а как это делается в Дельфи"
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889703
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ да и нет.

Попробую разложить как сам понял Ваш ответ.

- через интерфейс, что-то изменили в данных (например, прошли циклом по датасету и присвоили новые значения)

- пересылаем данные на сервер (наверное через компонент, который реализует эту функциональность, например создает временную табличку на сервере), затем вызываем ХП, которая знает про временную табличку и производит модификацию (здесь скорее рассчет) основных данных и возвращает результат, в виде изделие №1 процент выпуска стал такой-то, для др. изделия такой-то
Если менять у многих товаров сразу... То все-равно: как только у каждого товара изменили данные, они для этого товара сразу же посредством ХП идут на сервер (ниже, как это делается через ХП). Т.е. каждый раз для каждого товара.

автор- затем все эти расчеты надо показать юзеру (не утверждаю, просто не знаю как это реализуется в дельфи - проходим по датасету и добавляем новые полученные цифры)
Да нет, вызывается ХП, которая там внутри считает, если до этого еще не было посчитано, и выдает select на клиента. Датасет просто закрывается и открывается с новыми данными. На клиенте ничего не меняется в датасете - все приходит из сервера.

авторВот об этом по подробнее (свое представление об этом я написал выше), каким образом в ХП передаются параметры и каким образом оформляется транзакция.
Ну как это будет в дельфи.
Например, на сервере есть ХП ClientUpdFIO (изменить фио клиента). Соответственно входящие параметры - фамилия, имя, отчество и ID клиента.
В компоненте Query прописывается текст:
Код: plaintext
exec ClientUpdFIO @ID = :ID, @FName = :Fname, @LName = :LName и т.д...
Собственно, он там еще с момента разработки - раз уж мы тут обычно меняем фио клиентов, то есть на форме компонент с этой ХП.
Потом параметрам присваиваем соответствующие значения
Код: plaintext
1.
2.
Query.Params("ID").AsInteger :=  11111 ;
Query.Params("FName").AsString := 'Вася';
Query.Params("LName").AsString := 'Петров'; и т.д.
Потом дергаем процедуру
авторQuery.Exec --или Open, если нам обратно нужно получить рекордсет. это для тех ХП, где обратно выдается select ....
Транзакцию можно открыть внутри ХП. Откат, коммит там же. Любые действия, которые нужно произвести над данными, там же, что при изменении, что при select. Да и вообще вся работа только через ХП, есть много ХП, которые вызываются только из ХП (рассчеты разные и т.д.)
Если чего нужно поправить, обычно правится ХП - клиента вообще не касается, если только не меняются входящие параметры.

Вроде ответил?

-- Tygra's --
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889708
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так выделить надо:
Код: plaintext
Query.Exec --или Open, если нам обратно нужно получить рекордсет. это для тех ХП, где обратно выдается select ....

ошибся кнопкой :)

-- Tygra's --
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889778
Фотография Диченка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraтак выделить надо:
Код: plaintext
Query.Exec --или Open, если нам обратно нужно получить рекордсет. это для тех ХП, где обратно выдается select ....

ошибся кнопкой :)

-- Tygra's --

Тигра, а можно ли в Дельфи передать в ХП XML-документ как параметр ХП ?
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889795
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно. Как просто текст. А там, в ХП, разбирать как XML.
Правда я такое не делаю. Не очень я люблю XML :)

-- Tygra's --
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889798
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraВроде ответил?

Да, вполне доходчиво, спасибо.

У меня остался один маленький вопрос.

tygraЕсли менять у многих товаров сразу... То все-равно: как только у каждого товара изменили данные, они для этого товара сразу же посредством ХП идут на сервер (ниже, как это делается через ХП). Т.е. каждый раз для каждого товара.

Вот здесь не понятно, а если произошла ошибка, то каким образом откатываются изменения у уже модифицированных данных?

tygraНапример, на сервере есть ХП ClientUpdFIO (изменить фио клиента). Соответственно входящие параметры - фамилия, имя, отчество и ID клиента.
В компоненте Query прописывается текст:
exec ClientUpdFIO @ID = :ID, @FName = :Fname, @LName = :LName и т.д...

Собственно, он там еще с момента разработки - раз уж мы тут обычно меняем фио клиентов, то есть на форме компонент с этой ХП.
Потом параметрам присваиваем соответствующие значения
Query.Params("ID").AsInteger := 11111;
Query.Params("FName").AsString := 'Вася';
Query.Params("LName").AsString := 'Петров'; и т.д.

Потом дергаем процедуру

Для одного понятно, так вот, вопрос следующий - а если нам надо изменить ФИО у двух человек, причем либо у двух, либо ни у кого, как поступают в таком случае, как такую модификацию вкладывают в транзакцию?
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889801
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выше про разбор XML - это о MS SQL. Ну наверное и в других можно разбирать.
Правда смотря для чего передается XML в ХП.
Собственно параметра у ХП с типом XML нет. Тип text - запросто.

-- Tygra's --
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889807
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буду отвечать постепенно.

авторДавайте разберем/разложим этот пример
Что надо показать пользователю

- наверное нужен список продукции кот. мы выпускаем с её количеством (соответственно подтянули кусок справочника изделий обьединенный с кол-вом выпуска), наверное понятно что бы юзер мог указать что для изделия №1 выпуск планируем такой-то, а для др. изделия такой-то

- нужен общий обьем выпуска (тоже на сервере посчитали и подтянули на клиента), что бы получить искомый процент

Понятно, что данных цифр достаточно, что бы получить результат.

Теперь, как это реализуется в дельфи или как Вы бы реализовали, исходя из архитектуры КС для получения результата ?

И так, как бы это делал я.

на сервере должна как минимум быть таблица:

tblProdPlan(
colPeriod, -- период плана (месяц)
colProductID, -- код продукции из спарвочника продукции
colAmount, -- планируемое кол-во
colPercantage -- процент данной продукции по отношению к общему выпуску.)

еще бы мне понадобились хранимые процедуры:

usp_ProdPlanChange -- отвечающая за вставку, изменение, удаление позиций
usp_ProdPlanSelect -- отвечающая за выборку плана за определеный период
usp_ProdPlanRecal -- отвечающая за пересчет плана.

На клиенте, с помощью usp_ProdPlanSelect в гриде открываем набор. пользователь вносит изменения, которыйкэшируются локально, пока пользователь не нажмет кнопочку сохранить. Когда он нажимает на эту кнопку, для каждой измененной, удаленной, добавленной записи происходит вызов usp_ProdPlanChange с необходимыми параметрами. Все это в одной транзакции. В этой же транзакции в самом конце происходит вызов usp_ProdPlanRecal, которая и пересчитывает план. после этого идет переоткрытие набора.

Это так, на скорую руку, не шипко сильно обдумывая.

...
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889838
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВот здесь не понятно, а если произошла ошибка, то каким образом откатываются изменения у уже модифицированных данных?
авторДля одного понятно, так вот, вопрос следующий - а если нам надо изменить ФИО у двух человек, причем либо у двух, либо ни у кого, как поступают в таком случае, как такую модификацию вкладывают в транзакцию?
Ну если так, то тогда можно либо открыть клиентскую транзакцию и сделать так, как у pkarklin - отправить одно за одним изменения на сервер - и если все ОК, то закоммитить, если Ошибка, то роллбак.
Либо можно запихать данные во временную таблицу на сервере - тоже через ХП один за одним, а потом вызвать соответствующую ХП, которая используя временную таблицу сделает все изменения, тогда транзакцию открывать только в ХП, с клиента не надо (вообще лучше избегать клиентских транзакций)

-- Tygra's --
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889844
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор- каким образом в дельфи разрешается конфликт модификации данных (например, два пользователя редактируют одну запись - первый сохранил, а потом второй сохранил, какие данные получатся в итоге. Или для этих целей используется ХП сервера, тогда какой принцип в этом случае применяете )

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

ADO & SQL Server , блокировка записей

автор- каким образом в дельфи происходит посылка команды на сервер (меня устроит ответ есть такая ф-ия/компонент)

Я использую компонент TClientDataSet, суть которого понятна из названия - а основное назначение - кэшировать изменения, вносимые пользователем на клиенте. К TClientDataSet привязан компонент TClientUpdate (собственной разработки) который имеет три свойства UpdateSQL, InsertSQL, DeleteSQL. В котором на этапе дизайна прописывают хп или инсрукции SQL с параметрами. при вызове метода TClientDataSet.ApplyUpdates для каждой измененной (I, U, D) записи происходит подстановка параметров из клиентского датасета и отправка инструкции на сервер. Все инструкцуии в одной транзакции. В случаи успешного коммита кэш TclientDataSet сбрасывает признак модификации записей.

автор- каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер)

В приниципе, Выше описал.
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889848
Фотография Диченка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraМожно. Как просто текст. А там, в ХП, разбирать как XML.
Правда я такое не делаю. Не очень я люблю XML :)

-- Tygra's --

А можно ли открытый датасет, связанный с гридом, преобразовать в XML ? Или XML-документ нужно ручками набивать ?
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889860
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диченко tygraМожно. Как просто текст. А там, в ХП, разбирать как XML.
Правда я такое не делаю. Не очень я люблю XML :)

-- Tygra's --

А можно ли открытый датасет, связанный с гридом, преобразовать в XML ? Или XML-документ нужно ручками набивать ?

Да, если это TClientDataSet , то с помощью его метода

Код: plaintext
procedure SaveToFile(const FileName: string = ''; Format TDataPacketFormat=dfBinary);

где

Код: plaintext
TDataPacketFormat

ValuеMeaningdfBinaryInformation is encoded in binary format.dfXMLInformation is encoded in XML with extended characters encoded using an escape sequence.dfXMLUTF8Information is encoded in XML with extended characters represented using UTF8.
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889878
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra

Всё, понял.

tygraтогда можно либо открыть клиентскую транзакцию и сделать так, как у pkarklin - отправить одно за одним изменения на сервер - и если все ОК, то закоммитить, если Ошибка, то роллбак.

Надо же, Borland ни чем не отличается от MS, в фоксе тоже есть такое понятие клиентской транзакции

tygra(вообще лучше избегать клиентских транзакций)

И я тоже так считаю

tygraЛибо можно запихать данные во временную таблицу на сервере - тоже через ХП один за одним, а потом вызвать соответствующую ХП, которая используя временную таблицу сделает все изменения, тогда транзакцию открывать только в ХП, с клиента не надо

Тоже использую такой прием.

Так получается , что Фокс и Дельфи если уж не родные, то во всяком случае двоюродные братья.

("Мы с тобой одной крови" (с) Р.Киплинг )

pkarklin

pkarklinИ так, как бы это делал я.

на сервере должна как минимум быть таблица:

Да, ладно не до такой же степени, конечно в дельфи меня и начинающим назвать трудно.

Спасибо, вроде основные моменты понятны.
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889890
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНадо же, Borland ни чем не отличается от MS, в фоксе тоже есть такое понятие клиентской транзакции

Клиентская транзакция означает только то, что инструкции BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN оправляются с клиента. Что в принципе не есть гуд. Но без этого никуда при реализации кэшированных изменений, да еще в более чем одном датасете. Например, в документе (шапка, табличная часть, связанные документы...).
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889924
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinКлиентская транзакция означает только то, что инструкции BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN оправляются с клиента. Что в принципе не есть гуд. Но без этого никуда при реализации кэшированных изменений, да еще в более чем одном датасете.

Вот это жаль, хотя в Фоксе тоже примерно также обстоят дела, просто там немного полегче и можно извернуться по другому, но это уже тонкости о которых и Вы мне можете нарасказывать целую кучу подробностей.
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889948
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistТак получается , что Фокс и Дельфи если уж не родные, то во всяком случае двоюродные братья...
А причем здесь Фокс и Дельфи? Все изложенное выше относится к описанию принципов работы с данными ADO (ADOX) - который одинаков для многих сред разработки и немного отличается синтаксисом этих сред... В свое время он позиционировался как универсальным... Неужели стал?

P.S. Для разрботчиков FoxPro - примеры как использоваит ADO находятся в общей справке в разделе - "OLE DB Provider for Visual FoxPro" (это я так, на всякий случай для начинающих написал)...
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889983
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey ChА причем здесь Фокс и Дельфи? Все изложенное выше относится к описанию принципов работы с данными ADO (ADOX) - который одинаков для многих сред разработки и немного отличается синтаксисом этих сред... В свое время он позиционировался как универсальным... Неужели стал?

Ээ... простите, и где в этом топике, кроме Вашего упоминалось ADO? Хотя да для получения Forwardonly курсоров на клиенте для заполнения датасетов я использую TADODataSet,а для отправления команд, не возвращающих данных TADOCommand. Но функционал ADORecordset не используется, ибо невозможно его использовать.
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32889990
Фотография Диченка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем преимущество ADO над ODBC ?
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32890036
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том, что ADO - родное для MS SQL (отсюда много возможностей и т.д.). А ODBC - надстройка над ... (функционал урезан, т.к. универсальность нужна и т.д.)

Точнее и в терминах может кто другой расскажет :))

-- Tygra's --
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32890358
-ноль-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да , ну да. ADO, c его навигацие, и особенно его юзание через DataSet ,а счас(NET, в котором может лежать коллекция DataTable) - это наверное круто ;) А для не особо одаренных в фоксе есть компонента COMUTIL(так по моему?) , причем мелкомягкая. Элементарно конвертит RS->CURSOR, наслаждайся после этого и навигацие и свободой манипуляций. А ты тут трешь ност своим дельфи. Это вообще что такое ? :)
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32890590
Фотография FM32YO aka KID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос у меня...
Тигра упомянул, что в технологии КС все делается через ХП (ну может не все но я так понял)
То есть: у меня кнопка "сохранить данные"
я пишу ФС (фокспровщик я) там я делаю
INSERT INTO ... VALUES (то что в контрролах формы) (утрированно написал но понятно надеюсь)
то есть команда выполняется на клиенте, что и подразумевает ФС

если сделать КС то:
под той же кнопкой ишется
"Эй Сервер - выполни ХП номер 25 с параметрами (то что есть в контролах данной формы)", а уже в ХП номер 25 будет этот инсерт написан
Тигра я правильно понял? или же это во мне наследие мышления ВФоуспровщика говорит?
Надеюсь, что я правильно все понял, в сторону такого подхода работы давно присматриваюсь... так как понимаю метод хорош
НО.. однажды на каком-то форуме прочел сообщение:
"желательно не перегружать сервак Хранимками..."а, исходя из моих пониманий при таком подходе ХП-шек будет немало... так как же так?
1 - надо юзать ХП и это удобно
2 - не перегружайте...

Поясните???
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32890629
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Вы не возражаете - то я немного отвечу про ХП (близко к ним триггеры).
Их основное назначение придать любой операции изменения данных "осмысленный характер" - то есть там прописывается вся логика (например, удаляя заголовок счета - Вы удаляете и все записи из этого счета). Оформляете это в виде процедуры с параметрами - единственное отличие от файл-сервера в том, что данная процедура сохранена в самой базе данных... Далее - все клиенты базы данных удаляют счета только через эту процедуру путем передачи параметров (если они знают о существовании этой ХП )

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

В принципе прагматичные американцы подсчитали, что при числе клиентов менее 50 - выгодны и эффективны во всех отношениях файл - серверные системы, но (большое НО) у Microsoft остался только FoxPro в этом классе задач... и все (Access - не в счет - так как это несерьезно)... Вот и насаждается везде идеология КС - там где надо и не надо...

P.S. Это мое сугубо личное мнение и не претендует на истину...
...
Рейтинг: 0 / 0
Технология КС в дельфи
    #32890720
Фотография FM32YO aka KID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Ch(например, удаляя заголовок счета - Вы удаляете и все записи из этого счета). Оформляете это в виде процедуры с параметрами - единственное отличие от файл-сервера в том, что данная процедура сохранена в самой базе данных... ...

это мне известно конечно же...

Sergey Ch(В технологии КС уже не дашь просто так свободу просмотра данных как мы привыкли давать клиентам в наших приложениях FoxPro... В идеале - там надо работать так: послал запрос на одну запись, получил ее, обработал, послал обновление на серер... и все...
...

да но можно же и в ВФП послать команду выполнения ХП с параметрами, или же написать обновление на клиенте... значит ли это, что при использовании ХП, я, как бы перекидываю мостик к технологии КС???
Ведь по идее - я перехожу напрочь на ХП (в идеале, ибо не будет этого.. так как с ВФП мне не слезть...) СУБД меняется, но на клиенте-то у меня кода минимум, все в ХП, которые портируются на другую СУБД и вперед...
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 1 из 3
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Технология КС в дельфи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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