powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Общие принципы построения приложения в FoxPro
25 сообщений из 424, страница 13 из 17
Общие принципы построения приложения в FoxPro
    #38153439
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Для нормального освоения ООП вам понадобится года полтора.
Если же выложите свои классы, то дело пойдет быстрее - этак страниц на пятьдесят.
К заданным вопросам по-порядку можно будет добавлять новые номера, с разрешения инициатора.
И на форуме станет веселее - и развлечение, и обучение.Это вы сами с собой разговариваете?
Ибо никто тут (а особенно для вас) выкладывать бибилиотечный код не станет.

ЗЫ. Что-то возникает у меня подозрение, что это из серии "покажите мне свой код, подробно объясните, что и как работает - я с удовольствем поимею его в своих поделках, да ещё и бабла нарублю за "эффективные собственные разработки"
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153479
P-032
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM, я это заметил со стариницы 4-й.
Уже двоим так кажется. Немного до статистики не дотягивает :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153537
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
thunder2Пробовал что-то подобное, но потом отказался от такого подхода, т.к. лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению.
Но подход MVC вовсе не влечет отказ от ХП, напротив, я сторонник как можно больше бизнес-логики перенести именно в ХП. Во-первых, такая база становиться пригодна для работы с другими приложениями (тем же ASP.NET, что архиважно в настоящее время), во-вторых, сами классы модели получаются проще. По сути, их реализация сведётся к вызову той иной ХП с передаче/получением данных.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153551
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2thunder2Пробовал что-то подобное, но потом отказался от такого подхода, т.к. лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению.
Но подход MVC вовсе не влечет отказ от ХП, напротив, я сторонник как можно больше бизнес-логики перенести именно в ХП. Во-первых, такая база становиться пригодна для работы с другими приложениями (тем же ASP.NET, что архиважно в настоящее время), во-вторых, сами классы модели получаются проще. По сути, их реализация сведётся к вызову той иной ХП с передаче/получением данных.
Согласен. Сам к тому же стремлюсь. В теории все так, а на практике иногда приходится выбирать, например универсально или быстро. Если скорость важнее, то универсальностью приходится жертвовать.
Потом приходится выбирать как писать универсально или удобно (быстро). Лично мне удобство важнее если не влечет каких-то серьезных нарушений универсальности.
Универсальность тоже понятие относительное, все-равно придется какие-то доработки делать если потребуется альтернативного клиента писать. Вопрос только насколько серьезные будут доработки и какова вероятность что вообще альтернативный клиент когда-нибудь потребуется. Просто грустно тратить силы и время на создание возможностей, которые никогда не потребуются.

Что касается web-приложений, то я считаю тут есть серьезное противоречие с десктопными. В обычной проге считаю надо выносить на клиента все что можно вынести (все расчеты не связанные с целостностью БД), т.к. суммарная мощь клиентских компов на порядки превышает серверную. С web наоборот, основная нагрузка на web-сервер (все для клиентов считается на нем) и с него надо нагрузку убирать по-максимуму, т.е. на сервер БД.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153591
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMsg12Для нормального освоения ООП вам понадобится года полтора.
Если же выложите свои классы, то дело пойдет быстрее - этак страниц на пятьдесят.
К заданным вопросам по-порядку можно будет добавлять новые номера, с разрешения инициатора.
И на форуме станет веселее - и развлечение, и обучение.Это вы сами с собой разговариваете?
Ибо никто тут (а особенно для вас) выкладывать бибилиотечный код не станет.

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

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

Зачем, спрашивается, при этом пудрить мозги, особенно впечатляющими фразами типа "лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению."
Может кто расшифрует, что это значит.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153624
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T В теории все так, а на практике иногда приходится выбирать, например универсально или быстро. Если скорость важнее, то универсальностью приходится жертвовать.
Потом приходится выбирать как писать универсально или удобно (быстро). Лично мне удобство важнее если не влечет каких-то серьезных нарушений универсальности.
Универсальность тоже понятие относительное, все-равно придется какие-то доработки делать если потребуется альтернативного клиента писать. Вопрос только насколько серьезные будут доработки и какова вероятность что вообще альтернативный клиент когда-нибудь потребуется. Просто грустно тратить силы и время на создание возможностей, которые никогда не потребуются.


Раз это так грустно, то подавайте сюда и вашу "теорию" и ваше "например".
Только конкретно, не на пальцах и на ваших же кодах.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153657
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPaulWistНу давай по порядку, вопросы (пока смотрим файл-сервер):
Заточка изначальная была под КА для работы с MSSQL.

...

Ну собственно не важно каков источник СА или RV.

Dima TPaulWist1. Где начинается и заканчивается транзакция, в каком месте класса-формы?
С том случае нет транзакций. Оптимистическая буферизация.
Buffering = 3


Если речь идёт о клиент-сервере (MSSQL), то транзакция есть ВСЕГДА. Даже сохранение одной записи сервер оборачивает в транзакцию и лучше, что бы разработчик управлял ей явно, а Buffering = 3 говорит только об одном, что при "слёте" с записи происходит косвенный, не конролируемый приложением TableUpdate.

Dima TPaulWist2. Как и где происходит присвоение thisform.cTable, а если таблиц больше чем одна, как в thisform.cTable попадают имена алиасов?
3. Где "готовятся" сами данные, например для связки Мастер-Детали, те в каком месте в деталях присваивается PK Мастера?
То что я выше показывал это код формы правки справочника, т.е. одной записи одной таблицы.
Для документа с табличной частью другая форма (clsFormDocEdit), унаследованная от этой. По сути та же правка записи только вместе с ссылающимися на нее из дочерней таблицы.
Там добавлен курсор-адаптер для дочерней thisform.cChildTable (Buffering = 5) и метод Save() перепрописан. Там в транзакцию обернуто внутри Save(). Для MSSQL SQLEXEC('begin tran')
В родительской nМастерID появляется после сохранения. Для MS SQL "select @@IDENTITY"
В процессе ввода при добавлении записей в дочернюю в nМастерID ничего не пишется. В процессе сохранения заменяется на Мастер.nМастерID
...


Хорошо, а если связка сложнее Мастер - Детали1 - и от Детали1 - Детали 2,3,4 чЁ будешь делать, писать код класса для всех возможных случаев?

Второе, select @@IDENTITY делать НЕЛЬЗЯ, @@IDENTITY возвращает последнее добавленное значение, если у тебя на Мастере навешен триггер с записью в табличку с IDENTITY (например табличка лога), то @@IDENTITY вернёт последнее значение именно из таблицы лога,... что бы вернуть IDENTITY от Мастера необходимо исользовать ф-ию SCOPE_IDENTITY()

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

Хорошо, а для сложных "сохранений", через ХП сервра, какая у тебя схема кода класса?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153752
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12...
Зачем, спрашивается, при этом пудрить мозги, особенно впечатляющими фразами типа "лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению."
Может кто расшифрует, что это значит.

Почему сразу "пудрить мозги", тут всё просто - сделан упор на 2-х звенку (в смысле реализация бизнес логики базы данных, а не в способе доступа к БД), что вообщем-то является правильным с точки зрения теории реляционной модели....таким образом достигается независимость БД от "клиента",... те БД выставляет интерфейс для работы с данными, а клиент может быть любым.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153839
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistХорошо, а если связка сложнее Мастер - Детали1 - и от Детали1 - Детали 2,3,4 чЁ будешь делать, писать код класса для всех возможных случаев?
Я вообще не буду писать код класса для таких случаев. Тут нет стандартного интерфейсного решения, поэтому индивидуальная форма на основе clsFormEdit, а дальше как полет фантазии пройдет. Например с твоими деталями можно псевдо-дерево в гриде изобразить. Делал так однажды в проге для обсчета мебели.

PaulWistВторое, select @@IDENTITY делать НЕЛЬЗЯ, @@IDENTITY возвращает последнее добавленное значение, если у тебя на Мастере навешен триггер с записью в табличку с IDENTITY (например табличка лога), то @@IDENTITY вернёт последнее значение именно из таблицы лога,... что бы вернуть IDENTITY от Мастера необходимо исользовать ф-ию SCOPE_IDENTITY()
Согласен. Натыкался на эти грабли. Последнее время SCOPE_IDENTITY() использую. Не оттуда скопировал :)

PaulWistDima Tпропущено...
ХП ни фоксовые ни MSSQL я не использую для простых сохранений. Просто пишу в таблицу, если что-то надо попутно менять, то это прописываю в триггерах БД.
Хорошо, а для сложных "сохранений", через ХП сервра, какая у тебя схема кода класса?
Нет класса на такие случаи, т.к. случаев таких нет, не использую такой подход. Все происходит в триггерах, но если изменения "тяжелые" то сохранение разбивается на две части: само сохранение и проведение. Проведение - вызов ХП, но тут только ID проводимой записи.
PaulWistчЁ
это слово больше не употребляй.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153909
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPaulWistХорошо, а если связка сложнее Мастер - Детали1 - и от Детали1 - Детали 2,3,4 чЁ будешь делать, писать код класса для всех возможных случаев?
Я вообще не буду писать код класса для таких случаев. Тут нет стандартного интерфейсного решения, поэтому индивидуальная форма на основе clsFormEdit, а дальше как полет фантазии пройдет. Например с твоими деталями можно псевдо-дерево в гриде изобразить. Делал так однажды в проге для обсчета мебели.
...

Ну вот, правильное решение :)

Dima TPaulWistВторое, select @@IDENTITY делать НЕЛЬЗЯ, @@IDENTITY возвращает последнее добавленное значение, если у тебя на Мастере навешен триггер с записью в табличку с IDENTITY (например табличка лога), то @@IDENTITY вернёт последнее значение именно из таблицы лога,... что бы вернуть IDENTITY от Мастера необходимо исользовать ф-ию SCOPE_IDENTITY()
Согласен. Натыкался на эти грабли. Последнее время SCOPE_IDENTITY() использую. Не оттуда скопировал :)


ОК, проехали :)

Dima TPaulWistпропущено...

Хорошо, а для сложных "сохранений", через ХП сервра, какая у тебя схема кода класса?
Нет класса на такие случаи, т.к. случаев таких нет, не использую такой подход. Все происходит в триггерах, но если изменения "тяжелые" то сохранение разбивается на две части: само сохранение и проведение. Проведение - вызов ХП, но тут только ID проводимой записи.


Э-э-э, не понял, ... те само сохранение происходит по "обычной" схеме (TableUpdate), а вот вызов ХП в какой момент происходит и из какого модуля проги?

Dima TPaulWistчЁ
это слово больше не употребляй.

Дурная привычка, прилипла от Хела (Hel!Riser)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153918
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistDima Tпропущено...

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

Ну вот, правильное решение :)


И чем же оно правильное?
Только конкретно, а не на пальцах.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154148
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistDima Tпропущено...

Нет класса на такие случаи, т.к. случаев таких нет, не использую такой подход. Все происходит в триггерах, но если изменения "тяжелые" то сохранение разбивается на две части: само сохранение и проведение. Проведение - вызов ХП, но тут только ID проводимой записи.


Э-э-э, не понял, ... те само сохранение происходит по "обычной" схеме (TableUpdate), а вот вызов ХП в какой момент происходит и из какого модуля проги?
Сам подход позаимствовал из 1С, термин "проведение" оттуда же. Документ правится, периодически сохраняется но это своего рода "черновик" ни к чему не обязывающий. И только после проведения вносятся все корректировки в базу. После проведения дальнейшие изменения документа запрещены. Хотя 1С этот механизм довела до абсурда, там все можно.
Простой пример инет-банк. Платежку можно открывать, править, сохранять сколько угодно, но как только ты ее подписал, то все, это финансовый документ, деньги ушли, обратного пути нет. В данном случае подпись это "проведение".
Если честно прописывать это все муторно, поэтому стараюсь без острой необходимости не использовать.

А где это вызвать не принципиально, вызываю там где пользователю удобнее. После нескольких дней написания навороченной ХП потратить 5-10 минут на вставку ее вызова в нужное место - не проблема.

Для меня это задача из разряда "экзотики", поэтому никаких классов и прочих заготовок для нее нет. Классы использую для рутинных задач, когда из 9 случаев из 10 однотипные. Если 10 похожих случаев не накопилось, то нет смысла задумываться над однотипностью, пустая трата времени, напишешь хрень которую надо будет переписывать при очередном использовании.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154164
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWistпропущено...


Ну вот, правильное решение :)


И чем же оно правильное?
Только конкретно, а не на пальцах.
Тут тебе ссылку давали на статью с ответом на этот вопрос
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154178
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДимаТ

Какое отношение имеет ваша абстрактная ссылка к этому вашему конкретному утверждению?

Dima TPaulWistХорошо, а если связка сложнее Мастер - Детали1 - и от Детали1 - Детали 2,3,4 чЁ будешь делать, писать код класса для всех возможных случаев?
Я вообще не буду писать код класса для таких случаев. Тут нет стандартного интерфейсного решения, поэтому индивидуальная форма на основе clsFormEdit, а дальше как полет фантазии пройдет. Например с твоими деталями можно псевдо-дерево в гриде изобразить. Делал так однажды в проге для обсчета мебели.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154252
sg12ДимаТ

Какое отношение имеет ваша абстрактная ссылка к этому вашему конкретному утверждению?


Объясняю. Это высказывание:
Dima TЯ вообще не буду писать код класса для таких случаев.

возникло потому, что задача достаточно редкая и для нее:
Dima TТут нет стандартного интерфейсного решения... Например, можно псевдо-дерево в гриде изобразить.

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

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

Попробуте поразмыслить ("помедитировать") на досуге. И вы начнете понимать ваших собеседников.

И, кстати, раз уж Вы критикуете решение ДимыТ, то предложите Ваше решение описанной ситуации, исходя из Вашей объектной модели.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154544
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий

Подкинули вы мне задачку, пришлось помедитировать.

Вы предлагаете мне дать решение там, где не видно задачи.
Я уже отмечал, что автор пудрит мозги своими "теориями", перемешав понятия.
Апломб меня в заблуждение не вводит.

Реального пока ничего нет, кроме библиотечного "REPLACE", на котором автор зашибает бабло.
Я уже делал замечания, что его кодохранилища не модернизируются, что тут же подтвердилось.
Незнакомство автора с "DO FORM ..." привело к тому, что автор нагородил кодов с три короба.
Но в приложениях справочники нормально вызываются через меню, что для автора очередная новость.

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

Чтобы расписывать какие-либо "особые классы", надо сначала расписать "обычные".
Повторяю для автора еще раз - начать хотя бы с простого, с кнопок.
Начнет переделывать как положено и от его гордости останется только кошкин чих.

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

На ваше вопрос об объектной модели я уже отвечал - не вижу смысла снова браться за это дело ради вот такого трепа, без практической пользы.
Начальные коды для затравки мною выложены, они прозрачны.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154587
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPaulWistпропущено...


Э-э-э, не понял, ... те само сохранение происходит по "обычной" схеме (TableUpdate), а вот вызов ХП в какой момент происходит и из какого модуля проги?
Сам подход позаимствовал из 1С, термин "проведение" оттуда же. Документ правится, периодически сохраняется но это своего рода "черновик" ни к чему не обязывающий. И только после проведения вносятся все корректировки в базу. После проведения дальнейшие изменения документа запрещены. Хотя 1С этот механизм довела до абсурда, там все можно.
Простой пример инет-банк. Платежку можно открывать, править, сохранять сколько угодно, но как только ты ее подписал, то все, это финансовый документ, деньги ушли, обратного пути нет. В данном случае подпись это "проведение".
Если честно прописывать это все муторно, поэтому стараюсь без острой необходимости не использовать.
...


Ну, я не совсем об этом спрашивал, ... это бизнес логика приложения, тут "хозяин-барин".


Dima TА где это вызвать не принципиально, вызываю там где пользователю удобнее. После нескольких дней написания навороченной ХП потратить 5-10 минут на вставку ее вызова в нужное место - не проблема.
...

Я именно про это спрашивал, где, из какого места кода и через что вызывается ХП?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154598
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Пожалуйста не переходите на личности. Используйте аргументированный подход при доказательстве Ваших идей. Спасибо.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154605
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, излишне резковато вышло, извиняюсь.

PaulWist, а вы что, знаете еще другие места вызова ХП?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154622
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistгде, из какого места кода и через что вызывается ХП?
Через sqlexec() . Использую как в примерах их хэлпа.
Соединение с SQL-севером одно на все приложение, устанавливается при запуске, хэндл в глобальной переменной, поэтому вставить вызов можно куда угодно.
Если очень принципиально, то используется класс-обертка над sqlexec(), он нужен в основном для удобства обработки ошибок, ведения лога долговременных запросов и т.п.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154679
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPaulWistгде, из какого места кода и через что вызывается ХП?
Через sqlexec() . Использую как в примерах их хэлпа.
Соединение с SQL-севером одно на все приложение, устанавливается при запуске, хэндл в глобальной переменной, поэтому вставить вызов можно куда угодно.
Если очень принципиально, то используется класс-обертка над sqlexec(), он нужен в основном для удобства обработки ошибок, ведения лога долговременных запросов и т.п.

Извиняюсь, что перебиваю - это у вас все еще продолжение обучения PaulWist или можно комментировать?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154695
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Извиняюсь, что перебиваю - это у вас все еще продолжение обучения PaulWist или можно комментировать?
Комментируй.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154838
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist, а вы что, знаете еще другие места вызова ХП?

Да, знаю и не только я один :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154840
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPaulWistгде, из какого места кода и через что вызывается ХП?
Через sqlexec() . Использую как в примерах их хэлпа.
Соединение с SQL-севером одно на все приложение, устанавливается при запуске, хэндл в глобальной переменной, поэтому вставить вызов можно куда угодно.
Если очень принципиально, то используется класс-обертка над sqlexec(), он нужен в основном для удобства обработки ошибок, ведения лога долговременных запросов и т.п.

Ага, ... ну ладно, ... собственно, пока моё любопытство удовлетворено :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154863
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistDima Tпропущено...

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

Ага, ... ну ладно, ... собственно, пока моё любопытство удовлетворено :)

Может я помешал - перебил вам поток такой ценной информации?
...
Рейтинг: 0 / 0
25 сообщений из 424, страница 13 из 17
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Общие принципы построения приложения в FoxPro
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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