Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Прошу прощения у модератора, что поднимаю этот вопрос в НАШЕМ форуме, но у меня остались неясности из топика "Есть люди отказавшиеся от Delphi?", причем оппоненты Фокса, на мой взгляд весьма знающие в своем деле и вполне адекватно реагирующие на критику. Прошу не удалять, хотелось бы услышать/увидеть ответы Для начала хочу ответить на заданные мне вопросы. pkarklin pkarklin PaulWistНапример, планирование - надо "поиграться" с результатами нашего видения скажем выпуска и в заисимости от результата вычислений изменить начальные условия (т.е. юзер видит у себя на клиенте продукцию какого-то производства или её часть и решает а давайка выпуск этого изделия/группы или всего увеличим в два раза, что получиться с процентом в общем выпуске, ага процент мал, тогда дайка я увеличу в три раза относительно первоначального), те в данном случае гонять данные на сервер и получать обратно смысла нет, хотя и такой вариант возможен и реализуем. Т.е. Вы хотите сказать, что гараздо лучше сначал ВСЕ данные, необходимые для расчета подтянуть на клиента, и там уже считать??? Простите, а для чего тогда собственно сервер СУБД нужен? Чтоб эмулировать dbf? Давайте разберем/разложим этот пример Что надо показать пользователю - наверное нужен список продукции кот. мы выпускаем с её количеством (соответственно подтянули кусок справочника изделий обьединенный с кол-вом выпуска), наверное понятно что бы юзер мог указать что для изделия №1 выпуск планируем такой-то, а для др. изделия такой-то - нужен общий обьем выпуска (тоже на сервере посчитали и подтянули на клиента), что бы получить искомый процент Понятно, что данных цифр достаточно, что бы получить результат. Теперь, как это реализуется в дельфи или как Вы бы реализовали, исходя из архитектуры КС для получения результата ? pkarklinСтранно однако слышать, что обработка данных для сервера СУБД - это "несвойственная ему задача". Их обычно "молотилками данных" называют - ибо это прямое их предназначение. У японцев популярен замечательный тест Super PI 1.1e здесь http://www.overclockers.ru/files/index.shtml?dir=33 попробуйте запустить его пару-тройку экземпляров на сервере и один на дохлом селероне и посмотрите на результат (у меня получился сравним по времени) Теперь конкретные вопросы - каким образом в дельфи разрешается конфликт модификации данных (например, два пользователя редактируют одну запись - первый сохранил, а потом второй сохранил, какие данные получатся в итоге. Или для этих целей используется ХП сервера, тогда какой принцип в этом случае применяете ) - каким образом в дельфи происходит посылка команды на сервер (меня устроит ответ есть такая ф-ия/компонент) - каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер) Спасибо за ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 14:02 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
авторДавайте разберем/разложим этот пример Что надо показать пользователю - наверное нужен список продукции кот. мы выпускаем с её количеством (соответственно подтянули кусок справочника изделий обьединенный с кол-вом выпуска), наверное понятно что бы юзер мог указать что для изделия №1 выпуск планируем такой-то, а для др. изделия такой-то - нужен общий обьем выпуска (тоже на сервере посчитали и подтянули на клиента), что бы получить искомый процент Понятно, что данных цифр достаточно, что бы получить результат. Теперь, как это реализуется в дельфи или как Вы бы реализовали, исходя из архитектуры КС для получения результата ? Если я правильно понял смысл, то меняем объем выпуска - выполняем ХП на сервере, где update и т.д. Обновляем данные общего объема. Не понял, что тут такого? Или не то ответил? :) автор- каким образом в дельфи разрешается конфликт модификации данных (например, два пользователя редактируют одну запись - первый сохранил, а потом второй сохранил, какие данные получатся в итоге. Или для этих целей используется ХП сервера, тогда какой принцип в этом случае применяете ) Зависит вообще от того, нужно это вам или нет. У нас нигде не используется. Кто последний - тот и молодец. Но если нужно - при начале редактирования пишется в лог, что данная запись на редактировании (вообще в форуме MS SQL приводилось несколько алгоритмов, на 100% готовых к работе для таких ситуаций). Кто следующий хочет редактировать, проверяем лог, если запись есть - сообщение, что Вася эту запись забрал себе. А у вас как это делается? автор- каким образом в дельфи происходит посылка команды на сервер (меня устроит ответ есть такая ф-ия/компонент) Собственно у меня и pkarklin через компонент Query дергается нужная хранимая процедура с установленными параметрами. Все. Обратно получаем результат, если нужно. автор- каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер) Тоже все через ХП. Кто-то работает и не через ХП (но это не наш путь :)), но посылают на сервер те же команды. Я дкмаю, что к-с в Фокспро ничем не отличается от к-с в Дельфи -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 14:17 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ tygraЕсли я правильно понял смысл, то меняем объем выпуска - выполняем ХП на сервере, где update и т.д. Обновляем данные общего объема. Не понял, что тут такого? Или не то ответил? :) И да и нет. Попробую разложить как сам понял Ваш ответ. - через интерфейс, что-то изменили в данных (например, прошли циклом по датасету и присвоили новые значения) - пересылаем данные на сервер (наверное через компонент, который реализует эту функциональность, например создает временную табличку на сервере), затем вызываем ХП, которая знает про временную табличку и производит модификацию (здесь скорее рассчет) основных данных и возвращает результат, в виде изделие №1 процент выпуска стал такой-то, для др. изделия такой-то - затем все эти расчеты надо показать юзеру (не утверждаю, просто не знаю как это реализуется в дельфи - проходим по датасету и добавляем новые полученные цифры) Я правильно понял? tygra автор - каким образом в дельфи разрешается конфликт модификации данных (например, два пользователя редактируют одну запись - первый сохранил, а потом второй сохранил, какие данные получатся в итоге. Или для этих целей используется ХП сервера, тогда какой принцип в этом случае применяете ) Зависит вообще от того, нужно это вам или нет. У нас нигде не используется. Кто последний - тот и молодец. Но если нужно - при начале редактирования пишется в лог, что данная запись на редактировании (вообще в форуме MS SQL приводилось несколько алгоритмов, на 100% готовых к работе для таких ситуаций). Кто следующий хочет редактировать, проверяем лог, если запись есть - сообщение, что Вася эту запись забрал себе. Понял, это одно из трех решений для разрешения конфликтов модификации, ладно. tygraА у вас как это делается? в фоксе для этого есть функция (хотел написать штатная) TableUpdate(), в которой в качестве параметров можно выставить какой тип разрешения конфликтов использовать (надо сказать она тоже далека от совершенства и работает только для простого применения, для сложных задач приходиться использовать примерно такую же технологию описанную Вами) tygra автор- каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер) Тоже все через ХП. Вот об этом по подробнее (свое представление об этом я написал выше), каким образом в ХП передаются параметры и каким образом оформляется транзакция. Давайте на простом примере Фокса расскажу, что хочу спросить, в Фоксе можно сформировать символьную строку, скажем такого вида Код: plaintext 1. 2. 3. 4. 5. и затем эту строку ф-ей SQLEXEC затолкать на сервер, те вы видите, что при формировании строки можно явно прописать параметры как для INSERT, так и для EXEC (мы здесь рассматриваем простой пример передачи параметров, есть и другие может даже ещё проще) Каким образом это делается в дельфи. tygraЯ дкмаю, что к-с в Фокспро ничем не отличается от к-с в Дельфи Да у меня такое же мнение и повторюсь, я написал пост после Ваших слов "а как это делается в Фоксе" и мне тоже стало интересно "а как это делается в Дельфи" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 15:13 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
авторИ да и нет. Попробую разложить как сам понял Ваш ответ. - через интерфейс, что-то изменили в данных (например, прошли циклом по датасету и присвоили новые значения) - пересылаем данные на сервер (наверное через компонент, который реализует эту функциональность, например создает временную табличку на сервере), затем вызываем ХП, которая знает про временную табличку и производит модификацию (здесь скорее рассчет) основных данных и возвращает результат, в виде изделие №1 процент выпуска стал такой-то, для др. изделия такой-то Если менять у многих товаров сразу... То все-равно: как только у каждого товара изменили данные, они для этого товара сразу же посредством ХП идут на сервер (ниже, как это делается через ХП). Т.е. каждый раз для каждого товара. автор- затем все эти расчеты надо показать юзеру (не утверждаю, просто не знаю как это реализуется в дельфи - проходим по датасету и добавляем новые полученные цифры) Да нет, вызывается ХП, которая там внутри считает, если до этого еще не было посчитано, и выдает select на клиента. Датасет просто закрывается и открывается с новыми данными. На клиенте ничего не меняется в датасете - все приходит из сервера. авторВот об этом по подробнее (свое представление об этом я написал выше), каким образом в ХП передаются параметры и каким образом оформляется транзакция. Ну как это будет в дельфи. Например, на сервере есть ХП ClientUpdFIO (изменить фио клиента). Соответственно входящие параметры - фамилия, имя, отчество и ID клиента. В компоненте Query прописывается текст: Код: plaintext Потом параметрам присваиваем соответствующие значения Код: plaintext 1. 2. авторQuery.Exec --или Open, если нам обратно нужно получить рекордсет. это для тех ХП, где обратно выдается select .... Транзакцию можно открыть внутри ХП. Откат, коммит там же. Любые действия, которые нужно произвести над данными, там же, что при изменении, что при select. Да и вообще вся работа только через ХП, есть много ХП, которые вызываются только из ХП (рассчеты разные и т.д.) Если чего нужно поправить, обычно правится ХП - клиента вообще не касается, если только не меняются входящие параметры. Вроде ответил? -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 15:45 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
так выделить надо: Код: plaintext ошибся кнопкой :) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 15:46 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
tygraтак выделить надо: Код: plaintext ошибся кнопкой :) -- Tygra's -- Тигра, а можно ли в Дельфи передать в ХП XML-документ как параметр ХП ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:06 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Можно. Как просто текст. А там, в ХП, разбирать как XML. Правда я такое не делаю. Не очень я люблю XML :) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:11 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
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 := 'Петров'; и т.д. Потом дергаем процедуру Для одного понятно, так вот, вопрос следующий - а если нам надо изменить ФИО у двух человек, причем либо у двух, либо ни у кого, как поступают в таком случае, как такую модификацию вкладывают в транзакцию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:12 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Выше про разбор XML - это о MS SQL. Ну наверное и в других можно разбирать. Правда смотря для чего передается XML в ХП. Собственно параметра у ХП с типом XML нет. Тип text - запросто. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:13 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Буду отвечать постепенно. авторДавайте разберем/разложим этот пример Что надо показать пользователю - наверное нужен список продукции кот. мы выпускаем с её количеством (соответственно подтянули кусок справочника изделий обьединенный с кол-вом выпуска), наверное понятно что бы юзер мог указать что для изделия №1 выпуск планируем такой-то, а для др. изделия такой-то - нужен общий обьем выпуска (тоже на сервере посчитали и подтянули на клиента), что бы получить искомый процент Понятно, что данных цифр достаточно, что бы получить результат. Теперь, как это реализуется в дельфи или как Вы бы реализовали, исходя из архитектуры КС для получения результата ? И так, как бы это делал я. на сервере должна как минимум быть таблица: tblProdPlan( colPeriod, -- период плана (месяц) colProductID, -- код продукции из спарвочника продукции colAmount, -- планируемое кол-во colPercantage -- процент данной продукции по отношению к общему выпуску.) еще бы мне понадобились хранимые процедуры: usp_ProdPlanChange -- отвечающая за вставку, изменение, удаление позиций usp_ProdPlanSelect -- отвечающая за выборку плана за определеный период usp_ProdPlanRecal -- отвечающая за пересчет плана. На клиенте, с помощью usp_ProdPlanSelect в гриде открываем набор. пользователь вносит изменения, которыйкэшируются локально, пока пользователь не нажмет кнопочку сохранить. Когда он нажимает на эту кнопку, для каждой измененной, удаленной, добавленной записи происходит вызов usp_ProdPlanChange с необходимыми параметрами. Все это в одной транзакции. В этой же транзакции в самом конце происходит вызов usp_ProdPlanRecal, которая и пересчитывает план. после этого идет переоткрытие набора. Это так, на скорую руку, не шипко сильно обдумывая. ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:15 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
авторВот здесь не понятно, а если произошла ошибка, то каким образом откатываются изменения у уже модифицированных данных? авторДля одного понятно, так вот, вопрос следующий - а если нам надо изменить ФИО у двух человек, причем либо у двух, либо ни у кого, как поступают в таком случае, как такую модификацию вкладывают в транзакцию? Ну если так, то тогда можно либо открыть клиентскую транзакцию и сделать так, как у pkarklin - отправить одно за одним изменения на сервер - и если все ОК, то закоммитить, если Ошибка, то роллбак. Либо можно запихать данные во временную таблицу на сервере - тоже через ХП один за одним, а потом вызвать соответствующую ХП, которая используя временную таблицу сделает все изменения, тогда транзакцию открывать только в ХП, с клиента не надо (вообще лучше избегать клиентских транзакций) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:23 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
автор- каким образом в дельфи разрешается конфликт модификации данных (например, два пользователя редактируют одну запись - первый сохранил, а потом второй сохранил, какие данные получатся в итоге. Или для этих целей используется ХП сервера, тогда какой принцип в этом случае применяете ) Вот тут я приводил готовое решение, проверенной практикой, которое не нагружает сервер открытыми транзакциями, как это пытаются делать начинающие при работе с сервером. ADO & SQL Server , блокировка записей автор- каким образом в дельфи происходит посылка команды на сервер (меня устроит ответ есть такая ф-ия/компонент) Я использую компонент TClientDataSet, суть которого понятна из названия - а основное назначение - кэшировать изменения, вносимые пользователем на клиенте. К TClientDataSet привязан компонент TClientUpdate (собственной разработки) который имеет три свойства UpdateSQL, InsertSQL, DeleteSQL. В котором на этапе дизайна прописывают хп или инсрукции SQL с параметрами. при вызове метода TClientDataSet.ApplyUpdates для каждой измененной (I, U, D) записи происходит подстановка параметров из клиентского датасета и отправка инструкции на сервер. Все инструкцуии в одной транзакции. В случаи успешного коммита кэш TclientDataSet сбрасывает признак модификации записей. автор- каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер) В приниципе, Выше описал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:25 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
tygraМожно. Как просто текст. А там, в ХП, разбирать как XML. Правда я такое не делаю. Не очень я люблю XML :) -- Tygra's -- А можно ли открытый датасет, связанный с гридом, преобразовать в XML ? Или XML-документ нужно ручками набивать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:26 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Диченко tygraМожно. Как просто текст. А там, в ХП, разбирать как XML. Правда я такое не делаю. Не очень я люблю XML :) -- Tygra's -- А можно ли открытый датасет, связанный с гридом, преобразовать в XML ? Или XML-документ нужно ручками набивать ? Да, если это TClientDataSet , то с помощью его метода Код: plaintext где Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:31 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
tygra Всё, понял. tygraтогда можно либо открыть клиентскую транзакцию и сделать так, как у pkarklin - отправить одно за одним изменения на сервер - и если все ОК, то закоммитить, если Ошибка, то роллбак. Надо же, Borland ни чем не отличается от MS, в фоксе тоже есть такое понятие клиентской транзакции tygra(вообще лучше избегать клиентских транзакций) И я тоже так считаю tygraЛибо можно запихать данные во временную таблицу на сервере - тоже через ХП один за одним, а потом вызвать соответствующую ХП, которая используя временную таблицу сделает все изменения, тогда транзакцию открывать только в ХП, с клиента не надо Тоже использую такой прием. Так получается , что Фокс и Дельфи если уж не родные, то во всяком случае двоюродные братья. ("Мы с тобой одной крови" (с) Р.Киплинг ) pkarklin pkarklinИ так, как бы это делал я. на сервере должна как минимум быть таблица: Да, ладно не до такой же степени, конечно в дельфи меня и начинающим назвать трудно. Спасибо, вроде основные моменты понятны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:34 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
авторНадо же, Borland ни чем не отличается от MS, в фоксе тоже есть такое понятие клиентской транзакции Клиентская транзакция означает только то, что инструкции BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN оправляются с клиента. Что в принципе не есть гуд. Но без этого никуда при реализации кэшированных изменений, да еще в более чем одном датасете. Например, в документе (шапка, табличная часть, связанные документы...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:38 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
pkarklinКлиентская транзакция означает только то, что инструкции BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN оправляются с клиента. Что в принципе не есть гуд. Но без этого никуда при реализации кэшированных изменений, да еще в более чем одном датасете. Вот это жаль, хотя в Фоксе тоже примерно также обстоят дела, просто там немного полегче и можно извернуться по другому, но это уже тонкости о которых и Вы мне можете нарасказывать целую кучу подробностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:45 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
PaulWistТак получается , что Фокс и Дельфи если уж не родные, то во всяком случае двоюродные братья... А причем здесь Фокс и Дельфи? Все изложенное выше относится к описанию принципов работы с данными ADO (ADOX) - который одинаков для многих сред разработки и немного отличается синтаксисом этих сред... В свое время он позиционировался как универсальным... Неужели стал? P.S. Для разрботчиков FoxPro - примеры как использоваит ADO находятся в общей справке в разделе - "OLE DB Provider for Visual FoxPro" (это я так, на всякий случай для начинающих написал)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:56 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Sergey ChА причем здесь Фокс и Дельфи? Все изложенное выше относится к описанию принципов работы с данными ADO (ADOX) - который одинаков для многих сред разработки и немного отличается синтаксисом этих сред... В свое время он позиционировался как универсальным... Неужели стал? Ээ... простите, и где в этом топике, кроме Вашего упоминалось ADO? Хотя да для получения Forwardonly курсоров на клиенте для заполнения датасетов я использую TADODataSet,а для отправления команд, не возвращающих данных TADOCommand. Но функционал ADORecordset не используется, ибо невозможно его использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 17:10 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
А в чем преимущество ADO над ODBC ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 17:12 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
В том, что ADO - родное для MS SQL (отсюда много возможностей и т.д.). А ODBC - надстройка над ... (функционал урезан, т.к. универсальность нужна и т.д.) Точнее и в терминах может кто другой расскажет :)) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 17:34 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Ну да , ну да. ADO, c его навигацие, и особенно его юзание через DataSet ,а счас(NET, в котором может лежать коллекция DataTable) - это наверное круто ;) А для не особо одаренных в фоксе есть компонента COMUTIL(так по моему?) , причем мелкомягкая. Элементарно конвертит RS->CURSOR, наслаждайся после этого и навигацие и свободой манипуляций. А ты тут трешь ност своим дельфи. Это вообще что такое ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 22:02 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Вопрос у меня... Тигра упомянул, что в технологии КС все делается через ХП (ну может не все но я так понял) То есть: у меня кнопка "сохранить данные" я пишу ФС (фокспровщик я) там я делаю INSERT INTO ... VALUES (то что в контрролах формы) (утрированно написал но понятно надеюсь) то есть команда выполняется на клиенте, что и подразумевает ФС если сделать КС то: под той же кнопкой ишется "Эй Сервер - выполни ХП номер 25 с параметрами (то что есть в контролах данной формы)", а уже в ХП номер 25 будет этот инсерт написан Тигра я правильно понял? или же это во мне наследие мышления ВФоуспровщика говорит? Надеюсь, что я правильно все понял, в сторону такого подхода работы давно присматриваюсь... так как понимаю метод хорош НО.. однажды на каком-то форуме прочел сообщение: "желательно не перегружать сервак Хранимками..."а, исходя из моих пониманий при таком подходе ХП-шек будет немало... так как же так? 1 - надо юзать ХП и это удобно 2 - не перегружайте... Поясните??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2005, 09:01 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Если Вы не возражаете - то я немного отвечу про ХП (близко к ним триггеры). Их основное назначение придать любой операции изменения данных "осмысленный характер" - то есть там прописывается вся логика (например, удаляя заголовок счета - Вы удаляете и все записи из этого счета). Оформляете это в виде процедуры с параметрами - единственное отличие от файл-сервера в том, что данная процедура сохранена в самой базе данных... Далее - все клиенты базы данных удаляют счета только через эту процедуру путем передачи параметров (если они знают о существовании этой ХП ) По поводу неперегружать - каждое действие требует ресурсов - и сервер баз данных очень легко "ставят на колени" десяток активных пользователей - отсюда резко лезет вверх цена на серверное железо и на саму программу обслуживания - SQL Server В технологии КС уже не дашь просто так свободу просмотра данных как мы привыкли давать клиентам в наших приложениях FoxPro... В идеале - там надо работать так: послал запрос на одну запись, получил ее, обработал, послал обновление на серер... и все... В принципе прагматичные американцы подсчитали, что при числе клиентов менее 50 - выгодны и эффективны во всех отношениях файл - серверные системы, но (большое НО) у Microsoft остался только FoxPro в этом классе задач... и все (Access - не в счет - так как это несерьезно)... Вот и насаждается везде идеология КС - там где надо и не надо... P.S. Это мое сугубо личное мнение и не претендует на истину... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2005, 11:30 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Sergey Ch(например, удаляя заголовок счета - Вы удаляете и все записи из этого счета). Оформляете это в виде процедуры с параметрами - единственное отличие от файл-сервера в том, что данная процедура сохранена в самой базе данных... ... это мне известно конечно же... Sergey Ch(В технологии КС уже не дашь просто так свободу просмотра данных как мы привыкли давать клиентам в наших приложениях FoxPro... В идеале - там надо работать так: послал запрос на одну запись, получил ее, обработал, послал обновление на серер... и все... ... да но можно же и в ВФП послать команду выполнения ХП с параметрами, или же написать обновление на клиенте... значит ли это, что при использовании ХП, я, как бы перекидываю мостик к технологии КС??? Ведь по идее - я перехожу напрочь на ХП (в идеале, ибо не будет этого.. так как с ВФП мне не слезть...) СУБД меняется, но на клиенте-то у меня кода минимум, все в ХП, которые портируются на другую СУБД и вперед... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2005, 13:20 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
FM32YO aka KID да но можно же и в ВФП послать команду выполнения ХП с параметрами, или же написать обновление на клиенте... значит ли это, что при использовании ХП, я, как бы перекидываю мостик к технологии КС??? Ведь по идее - я перехожу напрочь на ХП (в идеале, ибо не будет этого.. так как с ВФП мне не слезть...) СУБД меняется, но на клиенте-то у меня кода минимум, все в ХП, которые портируются на другую СУБД и вперед... Думаю, что не открою для Вас секрет - что сейчас в VFP можно все писать как и для КС технологий - контейнер базы данных поддерживает ХП... При использование ХП с тем-же FoxPro Вы действительно "перекидываете мостик" в КС технологии - завтра базу данных FoxPro Вы смените на MS SQL Server - и Ваши приложения будут работать почти без изменений (почти - потому что надо будет написать "обертки" этх функций вызова ХП) Например: 1. В программе FoxPro вы пишете: do DdeleteAccount(account_number) 2. В программе пишите процедуру: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Почитайте про создание многозвенных приложений - думаю, что там ничего сложного нет. Но вот когда Вы изучите КС и сделаете пару проектов, то окончательно поймете всю красоту и мощь FoxPro... Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2005, 13:45 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Hi PaulWist & All! В Delphi "старого розлива" (до NET) можно примерно ассоциировать TClientDataSet с фоксовым курсором - т.е. это вытянутые с сервера данные, находящиеся локально на клиенте, и там их можно "обрабатывать" навигационными командами (циклом пройтись например). AFAIK неудобств там хватает... В NET же ситуация несколько иная - там идеология "клиентского хранилища" была значительно улучшена и расширена - можно создать много разных "представлений данных", не дёргая для этого каждый раз сервер (похоже на то как можно в фоксе из одной выборки сделать другую, или наложить фильтр, или создать индекс) - можно вообще не иметь никакого сервера, создав DataSet "на пустом месте" (как мы можем сделать CREATE CURSOR ...) Ну правда операции с DataSet-ом всё-же пока существенно ограничены - может быть в очередных версиях NET и добавят полноценный встроенный SQL движок (дабы НЕ зацикливаться на идеологии предполагающей загрузку расчётами и обработкой данных ТОЛЬКО сервер)... Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2005, 21:59 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Ответы по следованию постов: FM32YO aka KIDВопрос у меня... Тигра упомянул, что в технологии КС все делается через ХП (ну может не все но я так понял) Не, в технологии КС отличие в том, что вся работа с данными производится на сервере. А через ХП или напрямую - это кому как. Просто мне - да и в принципе вообще - удобно работать через ХП. авторТо есть: у меня кнопка "сохранить данные" я пишу ФС (фокспровщик я) там я делаю INSERT INTO ... VALUES (то что в контрролах формы) (утрированно написал но понятно надеюсь) то есть команда выполняется на клиенте, что и подразумевает ФС если сделать КС то: под той же кнопкой ишется "Эй Сервер - выполни ХП номер 25 с параметрами (то что есть в контролах данной формы)", а уже в ХП номер 25 будет этот инсерт написан Тигра я правильно понял? или же это во мне наследие мышления ВФоуспровщика говорит? Все правильно. Ну конечно ХП не номер 25 :) а по имени: ClientInsert ... например. авторНадеюсь, что я правильно все понял, в сторону такого подхода работы давно присматриваюсь... так как понимаю метод хорош Да, действительно, хорош! Представьте, что нужно исправить кое-что в sql-коде. В случае, когда вы держите sql на клиенте, вам придется править клиента и обновлять. А в случае с ХП, вы правите ХП на сервере и в этот момент все клиенты видят ее новую версию. Никаких обновлений клиентов и т.д. авторНО.. однажды на каком-то форуме прочел сообщение: "желательно не перегружать сервак Хранимками..."а, исходя из моих пониманий при таком подходе ХП-шек будет немало... так как же так? 1 - надо юзать ХП и это удобно 2 - не перегружайте... Поясните??? Это бред тех, кто и сам не знает, что такое SQL сервер. SQL сервер как раз для того и служит, чтобы обрабатывать данные, и использование ХП даже намного повышает его производительность, чем вы будете отсылать sql-команды с клиента. И никак не влияет количество ХП - вот у вас при написании клиента влияет ли количество подпрограмм в коде на скорость? Конечно нет.:)) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 11:26 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Еще пару вопросов к tygra & pkarklin Гспода, выходые породили ещё вопросы. tygraЛибо можно запихать данные во временную таблицу на сервере - тоже через ХП один за одним, а потом вызвать соответствующую ХП, которая используя временную таблицу сделает все изменения, тогда транзакцию открывать только в ХП, с клиента не надо Каким образом происходит сохранение целостности данных попадающих во временную таблицу (только ли через клиентскую транзакцию или есть еще какой-нибудь механизи). pkarklinКлиентская транзакция означает только то, что инструкции BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN оправляются с клиента. Что в принципе не есть гуд. Но без этого никуда при реализации кэшированных изменений, да еще в более чем одном датасете. Например, в документе (шапка, табличная часть, связанные документы...). Или поставленному дигнозу можно верить (так к слову пришлось , прошу не обижаться) Еще, каким образом производиться асинхронный доступ к данным, если это, конечно есть, и соотвественно их модификация? Sergey_Сh Sergey_СhВ идеале - там надо работать так: послал запрос на одну запись, получил ее, обработал, послал обновление на серер... и все... Вы меня извините, какой-то кастрированный идеал получается, если не трудно на примере Мастер-таблица <-> детали-таблица поясните, какова технологи работы описанная Вами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 11:30 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Далее: Sergey ChЕсли Вы не возражаете - то я немного отвечу про ХП (близко к ним триггеры). Их основное назначение придать любой операции изменения данных "осмысленный характер" - то есть там прописывается вся логика (например, удаляя заголовок счета - Вы удаляете и все записи из этого счета). Ну примерно так и есть. В ХП вообще много всяких разных действий можно сделать кроме непосредственного изменения данных в таблице - посчитать чего-то до этого, чтобы на клиенте не считать, в select-овых процедурах перед выборкой данных бывает нужно очень много всего посчитать, вытащить, поменять и т.д. авторОформляете это в виде процедуры с параметрами - единственное отличие от файл-сервера в том, что данная процедура сохранена в самой базе данных... Ну еще она в момент первого запуска компилится и строится план выполнения - в следующий запуск она идет с уже готовым планом, что иногда на очень много уменьшает время обработки. авторДалее - все клиенты базы данных удаляют счета только через эту процедуру путем передачи параметров (если они знают о существовании этой ХП ) Да, точно так. Причем права на таблицы у всех клиентов просто закрыты - только через ХП, даже select. авторПо поводу неперегружать - каждое действие требует ресурсов - и сервер баз данных очень легко "ставят на колени" десяток активных пользователей - Это не правда - это хорошо придуманные отговорки и доводы ФС-ников (это не к вам конкретно, а вообще по жизни :)), которые пытаются работать в КС старыми способами + специально приведенные примеры + незнание специфики работы конкретного SQL сервера. Собственно, и ФС-систему на Фоксе можно положить в три счета :)). А на самом деле на колени ставят не активные пользователи, а хреновые программеры, которые не умеют разрабатывать программы под sql-сервер. А вообще все очень хорошо работает - если с умом и прямыми руками делали систему. Могу привести пример личный пример: у нас в конторе размер БД 25 Гб, примерно 100 пользователей, работа активная - проблем нет. авторотсюда резко лезет вверх цена на серверное железо и на саму программу обслуживания - SQL Server Не отсюда, а когда нагрузка на сервер оказывается слишком большой. И чем прямее руки, тем дольше жэдать такого момента. Но согласитесь, когда железо не справляется, не зависимо от системы его меняют на более лучшее. авторВ технологии КС уже не дашь просто так свободу просмотра данных как мы привыкли давать клиентам в наших приложениях FoxPro... В идеале - там надо работать так: послал запрос на одну запись, получил ее, обработал, послал обновление на серер... и все... Как это так? Сдается мне, вы не работали с КС :). Полная неправда! Хотите получить для просмотра 1000 записей - берите, кто против? Другое дело, что КС предполагает, что клиент не обладает большими ресурсами и ему столько записей обычно просто не нужно. У нас вообще выборки ограничены 500-ми записями. Это все дело привычки в разработке. авторВ принципе прагматичные американцы подсчитали, что при числе клиентов менее 50 - выгодны и эффективны во всех отношениях файл - серверные системы, но (большое НО) у Microsoft остался только FoxPro в этом классе задач... и все (Access - не в счет - так как это несерьезно)... Вот и насаждается везде идеология КС - там где надо и не надо... И это не правда. КС допускает работу от 1 клиента и выше. И это ничем не хуже, а обычно даже лучше, чем сначала вы будете делать ФС, а потом переделывать систему под КС. Зачем делать двойную работу??? А что насчет американцев, так они не прагматичные, они тупые и жадные. Естественно, если объявить, что нужно все делать на КС, то придется: - Покупать новый софт - Покупать железо (но это все фигня, самое главное следующее) - Переучиваться на новый софт и технологии!!! Во где собака порылась. Это еще чего? Всю жизнь на ФС - 20 лет подряд - а тут вдруг бац, и переучиваться. Хотя бы с FoxPro 2.6 for DOS на VFP 8.0 - но дык.... Это же.. А еще SQL-сервера!!! Это же.... Неееееет, лучше сказать, что КС - г... и еще лет 30 сидеть на старом софте: два зайца сразу убивается. 1 - гарантирована работа на следующее время. 2 - спокойная жизнь до пенсии. авторP.S. Это мое сугубо личное мнение и не претендует на истину... И мое соответственно, но более ближе к истине -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 11:44 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
FM32YO aka KIDда но можно же и в ВФП послать команду выполнения ХП с параметрами, или же написать обновление на клиенте... значит ли это, что при использовании ХП, я, как бы перекидываю мостик к технологии КС??? Ведь по идее - я перехожу напрочь на ХП (в идеале, ибо не будет этого.. так как с ВФП мне не слезть...) СУБД меняется, но на клиенте-то у меня кода минимум, все в ХП, которые портируются на другую СУБД и вперед... В идеале - да. Но на практике, у вас все должно полностью быть уже КС и чтобы ни грамма не было от ФС, что очень тяжело в Фоксе - ФС способы работы с данными то под рукой, да и привычка :)). Но все-же переход будет проще и быстрее, чем с чистого ФС. Так что совет вам большой: начинайте использовать методы КС, ХП, sql-сервера и т.д. Тогда вам лично будет пофиг - Дельфи или Фокс (разница лишь в языке), потому как методы везде будут одинаковы. Лично я принципиально не использую ФС еще с 1997 года (тогда был последний проект на FoxPro 2.6 и на Дельфе + paradox). Набор sql-серверов таков, что хватает на задачу любой сложности. Если же работа строго не по сети и данные строго локальные, то я использую для хранения и работы один из компонентов (лично мне он очень нравится) и свою технологию. Впрочем лично мне этого хватает. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 11:51 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
PaulWistКаким образом происходит сохранение целостности данных попадающих во временную таблицу (только ли через клиентскую транзакцию или есть еще какой-нибудь механизи). Если использовать временную таблицу, то клиентских транзакций не надо. Просто все записи туда запихиваете - можно через ХП - а потом одной общей ХП создаете счет и добавляете записи из временной таблицы. Т.к. временная таблица существует только для вас и для текущего соединения, то ничего котролировать не надо, за исключением лишь того, что запись добавлена :) Клиентские транзакции нужно использовать тогда, когда временные таблицы не используются. PaulWist Sergey_СhВ идеале - там надо работать так: послал запрос на одну запись, получил ее, обработал, послал обновление на серер... и все... Вы меня извините, какой-то кастрированный идеал получается, если не трудно на примере Мастер-таблица <-> детали-таблица поясните, какова технологи работы описанная Вами. Это уж точно, совсем не идеал. Может быть это эхо чего-то услышанного или подсмотренного у того, кто уж точно далек от идеала, как инопланетяне от нас. :)) Я выше описал, что нет никаких проблем с просмотром многих записей. Это вообще основной элемент работы в люьой системы - как вы скажем список клиентов будете просматривать, по одному чтоли? :)) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 12:00 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
PaulWistЕще, каким образом производиться асинхронный доступ к данным, если это, конечно есть, и соотвественно их модификация? Можно уточнить, что для Вас есть "асинхронный доступ к данным"? ЗЫ. А на все другие вопросы tygra ответил более чем полно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 12:25 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
tygraто ничего котролировать не надо, за исключением лишь того, что запись добавлена :) тогда, какой механизм для этого используется, в смысле контроля, что все записи попали и мы по дороге ничего не потеряли. и расширю первоначальный вопрос каким образом производиться асинхронный доступ к данным, если это, конечно есть, и соотвественно их модификация, а так же получение множественного набора данных с сервера (просто не знаю как пояснить, нескольких датасетов) из одной транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 12:25 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
pkarklin pkarklinМожно уточнить, что для Вас есть "асинхронный доступ к данным"? Асинхронный - доступ к промежуточным результатам выборки, те например выборка составляет 1000 или 1 млн записей (например, формирование книг покупок или продаж или выдачи сотрудников в грид - из 1000 человек по подразделению показали только 25 или 100, а остальное подтянули, причем если надо, м.б. в этих 100 записях уже есть необходимый человек), что бы не ждать всю кишку данных; можно обрабатывать каким-то образом уже полученные записи и в фоновом режиме подкачивать недостающие. Или ещё пример - идет длительный расчет, выводим прогресс с кнопкой "Отмена", так вот когда мы отменили действие, серверу надо сказать, что бы пакет завершился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 12:46 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
PaulWistАсинхронный - доступ к промежуточным результатам выборки, те например выборка составляет 1000 или 1 млн записей (например, формирование книг покупок или продаж или выдачи сотрудников в грид - из 1000 человек по подразделению показали только 25 или 100, а остальное подтянули, причем если надо, м.б. в этих 100 записях уже есть необходимый человек), что бы не ждать всю кишку данных; можно обрабатывать каким-то образом уже полученные записи и в фоновом режиме подкачивать недостающие. Опять скажу, что такие веши реализуются серверной частью. Некоторые сервера, например, MySQL, поодерживают такую фичу на уровне расширения SQL, как постраничная выборка. В MS SQL такой фичи нет, поэтому делают примерно так: Постраничная выборка PaulWistИли ещё пример - идет длительный расчет, выводим прогресс с кнопкой "Отмена", так вот когда мы отменили действие, серверу надо сказать, что бы пакет завершился. А такую фичу можно реализовать с помощью ассинхронной модели выполнения ADO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 13:28 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
PaulWistполучение множественного набора данных с сервера (просто не знаю как пояснить, нескольких датасетов) из одной транзакции. Хм... А придеться пояснить, ибо я не понимаю, что Вы вкладываете в смысл "множественного набора данных с сервера из одной транзакции". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 13:30 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
pkarklinОпять скажу, что такие веши реализуются серверной частью. Да я вроде и не спорю, сервер так сервер. pkarklinХм... А придеться пояснить, ибо я не понимаю, что Вы вкладываете в смысл "множественного набора данных с сервера из одной транзакции". Пояснить в терминах Дельфи , наверное не смогу, в терминах Фокса - это означает, что в из одной транзакции/пакета можно получить несколько курсоров/выборок (для примера, заполнение табеля - подтянули совмещенную выборку подразделение + табличку содержания работы, и надо ещё иметь справочник использованного времени, что бы каждому работнику поставить "Р, В, НБ, Б," - понятно работал , болел итд; можно конечно для каждого работника при заполнении каждого дня делать перезапрос на табличку использованного времени, сами понимаете 100 человек * 30 дней = 3000 перезапросов, а можно один раз подтянуть табл. раб. времени, Вы мне можете возразить , а если что-то измениться в справочнике, на это можно ответить, что это статический справочник и даже если, что-то измениться, то достаточно нажать кнопку обновить справочник), вообщем вот так, каким образом Вы реализуета такой функционал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 14:01 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
спасибо всем за разьяснения... но.. как у "прагматичных" американцев есть точка зрения.. так и у меня... :-) Не перехожу на СКЛ-сервера ибо 1 - лень переучиваться 2 - работы в моей провинции для этого может конторы 2-3, и ттам вакансий нету.... 3 - работаю в конторе, которая под ораклом, так вот не очень-то он мне нравится своей громоздкостью (это проблемы разработчиков конечно.. но....) 4 - опять-таки писать свои дополнения к корпоративеному софту нет возможности ибо ИМХО создавать отбельную БД, приимеющейся корпоративной есть риск завалить обе, создавать таблицы в корпоративной ну никак, ибо раз в месяц идут централизованные обновленияЮ которые мои таблицы могут запросто угробить (не уверен но может быть) 5 - на стороне клиенту глубоко по х... под СКЛ-сервером или в ВФП проект (СКЛ-сервер ему правда придется прикупить....) .... ну и хватит.. конечно ТИГРА прав - будущее не за ФС.. но.. есть масса моментов.... (заметили, что я лень поставил не 1-е месть?? :-)) Сорри за оффтоп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 14:18 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
PAulWistПояснить в терминах Дельфи , наверное не смогу, в терминах Фокса - это означает, что в из одной транзакции/пакета можно получить несколько курсоров/выборок (для примера, заполнение табеля - подтянули совмещенную выборку подразделение + табличку содержания работы, и надо ещё иметь справочник использованного времени, что бы каждому работнику поставить "Р, В, НБ, Б," - понятно работал , болел итд; можно конечно для каждого работника при заполнении каждого дня делать перезапрос на табличку использованного времени, сами понимаете 100 человек * 30 дней = 3000 перезапросов, а можно один раз подтянуть табл. раб. времени, Вы мне можете возразить , а если что-то измениться в справочнике, на это можно ответить, что это статический справочник и даже если, что-то измениться, то достаточно нажать кнопку обновить справочник), вообщем вот так, каким образом Вы реализуета такой функционал. Хм... Я все равно не понял про "несколько наборов в одной транзакции". И заполнение табеля - это что, расчетная задача? Если так, тот тут совсем нечего делать данным на клиенте. Или, если буквально понимать "несколько наборов в одной транзакции", то может вы это имелли ввиду: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 14:25 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. Во, не в бровь, а в глаз, да именно это, как я сразу не догадался просто написать код. Оно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 14:29 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
pkarklin И заполнение табеля - это что, расчетная задача? Если так, тот тут совсем нечего делать данным на клиенте. Хорошо, тогда каким образом, конкретному человеку проставить, что в этот день он отработал 8 часов, в след. день 12 часов, а в третий день заболел. Как бы Вы это решили не предоставляя данных о работнике и справочник видов использоаннного времени? Принципиальный ответ у меня есть - всё это хозяйство должно собраться из приказов по предприятию, но мы то с Вами понимает, что это не всегда так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 14:35 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
PaulWist Во, не в бровь, а в глаз, да именно это, как я сразу не догадался просто написать код. Оно. Хм... Ну, получить мы такие наборы на клиента сможем. Дальще то что?! Всмысле, Ваш пример с заполнением табеля это расчетная задача или там конечный пользовватель руцами редактирует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 14:35 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
PaulWist pkarklin И заполнение табеля - это что, расчетная задача? Если так, тот тут совсем нечего делать данным на клиенте. Хорошо, тогда каким образом, конкретному человеку проставить, что в этот день он отработал 8 часов, в след. день 12 часов, а в третий день заболел. Как бы Вы это решили не предоставляя данных о работнике и справочник видов использоаннного времени? Принципиальный ответ у меня есть - всё это хозяйство должно собраться из приказов по предприятию, но мы то с Вами понимает, что это не всегда так. тут вопрос больше не то, как такое реализовывать в том или ином средстве разработки. Я так понял, что получается некая полуавтоматическая задача. Т.е. первоначально табель расчитывае на сервере по приказам, а потом уже расчитанный табель даем возможность поравить табельшице. Для этого нужен один набор на сам табель и один набор на признаки. зачем их оба заворачивать в транзакцию при выборке - не пойму?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 14:39 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
pkarklinНу, получить мы такие наборы на клиента сможем. Дальще то что?! Всмысле, Ваш пример с заполнением табеля это расчетная задача или там конечный пользовватель руцами редактирует? Меня интересовал механизм получения таких наборов на клиенте. По поводу табеля - руками клацает, видать криво описал раньше , бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 14:41 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
PaulWist pkarklinНу, получить мы такие наборы на клиента сможем. Дальще то что?! Всмысле, Ваш пример с заполнением табеля это расчетная задача или там конечный пользовватель руцами редактирует? Меня интересовал механизм получения таких наборов на клиенте. По поводу табеля - руками клацает, видать криво описал раньше , бывает. В принципе, Дельфийскому клиенту по-барабану. В одной транзакции получены несколько наборов или нет. МОжно получать и несколько наборов в одной активной транзакции, можно и без оной. Тока вот держать транзакции открытыми, пока пользователь "руками клацает" не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 14:48 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
pkarklinТока вот держать транзакции открытыми, пока пользователь "руками клацает" не надо. С этим полностью согласен и обоими руками "ЗА", кстати, а каким образом можно замкнуть COMMIT на клиенте, если не используешь клиентских транзакций, теоретически я это представляю (правда в Фоксе), а Дельфи как это можно устроить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 14:56 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
В технологии КС в понятие "клиентской трназакции" вкладывается тока одно, что комады управления BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN отправляются с клиента. А сама транзакция существует на сервере и только там. Так что "замкнуть COMMIT на клиенте" если я опять Вас правильно понял (что -то плохо я сегодня понимаю), это будет означать отправить на сервер инструкцию COMMIT TRAN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 15:02 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
pkarklinВ технологии КС в понятие "клиентской трназакции" вкладывается тока одно, что комады управления BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN отправляются с клиента. Давайте , поясню на примере Фокса 1. Для "клиентских транзакций" - существуют ф-ии отправляемые с клиента а) для соединения устанавливается режим транзакции SQLSETPROP(Transactions, DB_TRANSMANUAL)/ручное управление б) посылка команд в синтаксисе TSQL (exec MySp) в) фиксация или откат SQLCOMMIT, SQLROLLBACK так вот если между а) и в) повесить MessegeBox(). то результат ясен 2. Посылка отдельных команд на сервер a) BEGIN TRAN б) exec MySp в) соответственно COMMIT/ROLLBACK здесь тоже достаточно между а) и в) повесить ожидание с тем же результатом. pkarklinТак что "замкнуть COMMIT на клиенте" если я опять Вас правильно понял (что -то плохо я сегодня понимаю), это будет означать отправить на сервер инструкцию COMMIT TRAN. да, совершенно верно, вот я и спросил, как в Дельфи можно послать COMMIT с клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 15:44 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Есть два варианта: Или использование методов компонента TADOConnection -BeginTrans, CommitTrans, RollbackTrans. Или отсылка инструкци через TADOCommand: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 15:54 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы, пожалуй за два дня общения с Вами я о технологии в Дельфи узнал больше, чем при прочтении 10 стр. косноязычных обвинений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 16:09 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Рад, что чем-то смогли помочь :) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 18:09 |
|
||
|
|

start [/forum/topic.php?all=1&fid=41&tid=1594953]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
103ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 489ms |

| 0 / 0 |
