Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Объясните пожалуйста..)) / 23 сообщений из 23, страница 1 из 1
17.02.2009, 16:41
    #35822894
Объясните пожалуйста..))
Добрый день.. Хотелось бы узнать или где почитать... Что такое курсор адаптер.. Раньше программировал и создавал интерфейсы в среде VFP, но версии 7... Потом отшел от этого, вот сейча снеобходимость настала... Читаю и не могу понять, как да что))
...
Рейтинг: 0 / 0
17.02.2009, 17:00
    #35822954
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
Андрей ВикторовичДобрый день.. Хотелось бы узнать или где почитать... Что такое курсор адаптер.. Раньше программировал и создавал интерфейсы в среде VFP, но версии 7... Потом отшел от этого, вот сейча снеобходимость настала... Читаю и не могу понять, как да что))

Ну, попробуйте оттолкнуться от http://www.code-magazine.com/Focus/Article.aspx?quickid=0301062.
...
Рейтинг: 0 / 0
17.02.2009, 20:33
    #35823386
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
Андрей ВикторовичДобрый день.. Хотелось бы узнать или где почитать... Что такое курсор адаптер.. Раньше программировал и создавал интерфейсы в среде VFP, но версии 7... Потом отшел от этого, вот сейча снеобходимость настала... Читаю и не могу понять, как да что))
Local View или Remote View делали? Вот это примерно то же самое, но существенно расширены возможности "вмешательства" в процесс получения выборки и сброса изменений в исходные таблицы.

Идея проста: конструируется запрос Select-SQL, затем он выполняется (получаем некий курсор), затем пользователь вносит изменения в этот курсор, затем осуществляется сброс изменений из курсора в исходные таблицы. Вся эта внутренняя механика скрыта внутри класса CursorAdapter. После его настройки создается впечатление, что работаешь с обычным курсором FoxPro.

Ну, и класс имеет избыточное количество свойств и методов по той причине, что он объединяет в себе 4 принципиально разные технологии доступа к данным: Native (прямой доступ к DBF), ODBC, ADO, XML. Есть свойства и методы применимые только в одной технологии доступа, но бессмысленные в другой. Поэтому есть избыточность.
...
Рейтинг: 0 / 0
17.02.2009, 23:41
    #35823575
Объясните пожалуйста..))
ВладимирМ,
можно подробно с примером, если конечно же Вас не трудно... Очень довольно таки хорошая вещь, работал раньше именно с вьюшками.... Вот допустим у меня есть таблица, в которую должны вносить данные, соответсвенно через грид... Таблиц порядка 5... И еще вопрос, обязательно ли чтоб таблицы были включены в БЛ или могут быть отвязанными???

reware,
спасибо, помогло.. ))
...
Рейтинг: 0 / 0
17.02.2009, 23:43
    #35823577
Объясните пожалуйста..))
ой, не порядка!!, а 5 )))
...
Рейтинг: 0 / 0
18.02.2009, 03:16
    #35823655
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
Довольно подробно это все описано у Юрия Шутенко

CursorAdapter

Привязка к базе данных для CursorAdapter не нужна. Да, собственно и для Local View она не обязательна.

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

Общее правило - по возможности, один CursorAdapter на одну таблицу-источник. Объединение нескольких таблиц-источников в один CursorAdapter для чтения - не проблема, но вот для обновления, довольно трудно.
...
Рейтинг: 0 / 0
18.02.2009, 09:28
    #35823841
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
ох.....

Андрей Викторович, для какого источника нужны примеры?

КАД необходим для создания абстрактных механизмов для работы с данными.
КАД это базовый класс, который уже содержит в себе заложенные возможности
+ имеет механизм отслеживания различных событий.
Используя базовый класс разработчик имеет возможность на его основе создать
свою библиотеку ...
Итак, КАД позволяет экономить время, решать задачи просто, быстро надежно,
получить гарантированный результат.

авторОбъединение нескольких таблиц-источников в один CursorAdapter для чтения - не проблема, но вот для обновления, довольно трудно.
Если необходимо взаимодействовать с несколькими таблицами и вносить изм-я в несколько таблиц, то и создаем коллекцию взаимосвязанных курсорадаптеров.

Пример некой реализации, настройки КАДов, способа видоизменения
можно посмотреть здесь
http://www.sql.ru/forum/actualfile.aspx?id=6704152
некоторое объяснение процесса создания и идеи
здесь http://www.sql.ru/forum/actualthread.aspx?tid=618865&pg=2
...
Рейтинг: 0 / 0
18.02.2009, 11:01
    #35824043
Объясните пожалуйста..))
ВладимирМ,
Большое Вам спасибо за ссылку, попробывал на собственной базе...
прошелмимо ,
И Вам спасибо, посмотрел, понял реализацию....
К Вам обоим вопрос.. Проект мой предполагает серверную БД (файл-сервер) с максимум 3 пользователями... Задача пользователей тупо вносить информацию в одну таблицу... Никогда сетевую модель не разрабатывал, может подскажите как мне реализовать данную задачу. Как вообще создать так, чтобы они когда работают одновременно не мешали друг-другу... и при этом чтоб информация добавлялась в таблицу...
...
Рейтинг: 0 / 0
18.02.2009, 11:11
    #35824072
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
set excl off

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

я попробую доработать библиотеки и Вы попробуете ими воспользоваться,
либо попробуйте самостоятельно создавать нечто подобное.
...
Рейтинг: 0 / 0
18.02.2009, 11:28
    #35824145
Объясните пожалуйста..))
прошелмимоset excl off

+ сейчас разобраться с примером, который я показал (понять что такое классы в фокспро и как их создавать)Естественно
прошелмимо
я попробую доработать библиотеки и Вы попробуете ими воспользоваться,
либо попробуйте самостоятельно создавать нечто подобное.
Буду Вам весьма признателен....
...
Рейтинг: 0 / 0
18.02.2009, 12:27
    #35824338
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
Буду Вам весьма признателен....

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

гы, оч.большая загрузка, ничего не помню, не вижу, не знаю,
бегаю с маркером и крашу документы, чтобы хотя-бы как-то
запоминать хоть что-то...
...
Рейтинг: 0 / 0
18.02.2009, 12:28
    #35824346
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
Андрей ВикторовичПроект мой предполагает серверную БД (файл-сервер) с максимум 3 пользователями... Задача пользователей тупо вносить информацию в одну таблицу... Никогда сетевую модель не разрабатывал, может подскажите как мне реализовать данную задачу. Как вообще создать так, чтобы они когда работают одновременно не мешали друг-другу... и при этом чтоб информация добавлялась в таблицу...
На уровне каких-то конкретных класов в такой постановке вопроса задча не имеет решения. Классы - это инструмент, а какую именно задачу вы хотите решить от инструмента не зависит.

В данном случае, принципиально важным вопросом становится что именно вы вкладываете в понятие "не мешали друг другу". Поясню, о чем речь.

Предположим, два пользователя одновременно создали две одинаковые записи. Допустимо ли их добавлять? Насколько записи должны отличаться, чтобы считаться "разными"? Если один пользователь ввел данные, может ли другой пользователь эти данные изменить/удалить?

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

Если подобные вопросы вас не интересуют, то достаточно настройки SET EXCLUSIVE OFF. А все остальное CursorAdapter сделает автоматически. Но это будет просто "сваливание в кучу".
...
Рейтинг: 0 / 0
18.02.2009, 13:32
    #35824560
ННовичок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
ВладимирМ
Идея проста: конструируется запрос Select-SQL, затем он выполняется (получаем некий курсор), затем пользователь вносит изменения в этот курсор, затем осуществляется сброс изменений из курсора в исходные таблицы. Вся эта внутренняя механика скрыта внутри класса CursorAdapter. После его настройки создается впечатление, что работаешь с обычным курсором FoxPro.


Всё это хорошо, если метод работы таблицы...но в клиент серверной технологии, по моему мнению, более приемлимо, выбор записи, кнопка редактирование и в кнопке выполняется SQL запрос, где результат выдаётся в другое окно(закладку, место в том же окне и т.д.), если вы корректируете данные в таблице, а потом начинаете сбрасывать(refresh в КАД), то это уже пошла пакетная обработка...а вам это надо..лучше пусть редактируют и добавляют по одной записи, а для этого КАД не нужен, достаточно sqlexec...
...
Рейтинг: 0 / 0
18.02.2009, 13:54
    #35824649
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
ННовичокесли вы корректируете данные в таблице, а потом начинаете сбрасывать(refresh в КАД), то это уже пошла пакетная обработка...
Что именно вы понимате в данном случае под термином "пакетная обработка"? Почему вы считаете, что то, что в конце-концов уйдет на сервер будет отличаться от прямого SQLExec()? Трассировку SQL-сервера смотрели?
...
Рейтинг: 0 / 0
18.02.2009, 14:17
    #35824762
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
автора для этого КАД не нужен

понятно, что все можно сделать посредством команд ф-ей sqlexec.
КАД используют когда надоело руками трясти сервер.
Еще раз вдумайтесь в слова: использование КАД облегчает реализацию,
позволяет создать абстрактные механизмы (т.е. механизмы, которые позволяют
решить задачу другим способом, нежели чем ....), в итоге снижаются трудозатраты,
разработчик больше уделяет времени ...

далее слова про рефреш немного странные, Вы имеете опыт работы с классом курсорадаптер?
...
Рейтинг: 0 / 0
18.02.2009, 14:51
    #35824893
ННовичок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
Отличаться во всех вариантах не будет, отличие в том что sqlexec выполнит одну команду(можно конечно и пакет команд)...во втором случае..изменения в таблице на сервере, как мне кажется происходит по отдельной команде(тут я и говорил про рефреш, может tableeve) на клиенте, которая начинает все записи таблицы сравнивать с записями на сервере и вносить изменения..
PS: опыт не имею...так как новичок
...
Рейтинг: 0 / 0
18.02.2009, 15:08
    #35824949
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
авторPS: опыт не имею...так как новичок

зачем Вы тогда высказываетесь не имея опыта?
...
Рейтинг: 0 / 0
18.02.2009, 20:59
    #35825801
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
ННовичокОтличаться во всех вариантах не будет, отличие в том что sqlexec выполнит одну команду(можно конечно и пакет команд)...во втором случае..изменения в таблице на сервере, как мне кажется происходит по отдельной команде(тут я и говорил про рефреш, может tableeve) на клиенте, которая начинает все записи таблицы сравнивать с записями на сервере и вносить изменения..
PS: опыт не имею...так как новичок
Поверьте на слово: что через SQLExec(), что через CursorAdapter, на сервер будет отправлено примерно одно и то же. Говоря вашими словами, на стороне сервера будет выполнен примерно одинаковый набор команд.

Просто CursorAdapter возьмет на себя рутинную работу по подготовке того набора команд, которые надо будет отправить на сервер. При работе через SQLExec() вам придется писать все то же самое, что делает CursorAdapter, но собственными силами. Будет больше программного кода. Хотя, конечно, от задачи зависит...
...
Рейтинг: 0 / 0
18.02.2009, 22:08
    #35825882
Объясните пожалуйста..))
ВладимирМ,прошелмимо,
Спасибо за посты Ваши... Вроде разобрался, сделал пару своих классов.... Все работает как часики, только вот не попробовал еще на несколько пользователей... Я сейчас как делал эти курсорадптеры, через буйлд указывал сетевой путь на БД.. Вот после компиляции exe, на нескольких машинах будет работать???

У меня стоит версия 9 сп2, когда запускаю на других компах, пишет не поддерживающих библиотек... Раньше помню вроде копировал один файл в папку системную и все работало, а сейчас как???

Кстати, а корректно если в курсорадаптере вручную ставил условие на выборку из таблиц??
...
Рейтинг: 0 / 0
18.02.2009, 22:13
    #35825888
Объясните пожалуйста..))
ВладимирМ
Предположим, два пользователя одновременно создали две одинаковые записи. Допустимо ли их добавлять? Насколько записи должны отличаться, чтобы считаться "разными"? Если один пользователь ввел данные, может ли другой пользователь эти данные изменить/удалить?
Пользователи могут только вводить данные качества продукции, пройденные по определенным техническим процессам... Есть 4 этапа регистрации брака, в которых указывается монтажница, сам этап, дефект выявленный, и готовая продукция... На выходе отчет в ексчел... Все просто до невозможности :-)
...
Рейтинг: 0 / 0
19.02.2009, 00:34
    #35826037
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
Андрей ВикторовичВладимирМ,прошелмимо,
Спасибо за посты Ваши... Вроде разобрался, сделал пару своих классов.... Все работает как часики, только вот не попробовал еще на несколько пользователей...
Просто запустите ваше приложение дважды на одном и том же компьютере. Это и будет симуляция многопользовательского доступа. Для отладки можно запускать дважды и собственно среду FoxPro.

Андрей ВикторовичЯ сейчас как делал эти курсорадптеры, через буйлд указывал сетевой путь на БД.. Вот после компиляции exe, на нескольких машинах будет работать???
Если сетевой путь до этой БД с разных компьютеров будет один и тот же, то, конечно, будет работать. Хотя, обычно, путь доступа к базе данных выносят во внешние (по отношению к программе) настройки.

Андрей ВикторовичУ меня стоит версия 9 сп2, когда запускаю на других компах, пишет не поддерживающих библиотек... Раньше помню вроде копировал один файл в папку системную и все работало, а сейчас как???
Как минимум, нужны еще Run-Time библиотеки. В зависимости от того, что именно используется в приложении для VFP9 могут понадобиться разные файлы. Полный их список можно посмотреть здесь

VFP 9 Runtime Files

Однако "по минимум" нужны только библиотеки: msvcr71.dll, vfp9r.dll и vfp9renu.dll. Причем, библиотека msvcr71.dll, скорее всего, уже установлена

Андрей ВикторовичКстати, а корректно если в курсорадаптере вручную ставил условие на выборку из таблиц??
Если работает, то корректно Хотя, непонятно, что именно вы подразумеваете в данном случае под словами "вручную"?
...
Рейтинг: 0 / 0
19.02.2009, 09:11
    #35826259
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
автор когда запускаю на других компах, пишет не поддерживающих библиотек

в комплект дистрибутива фокспро
входит инсталшилд.
С помощью инсталшилд сделайте установщик,
как работать с инсталшилдом поищите поиском в данном
форуме и на фоксклабе.
Для автоматической установки библиотек Вам нужно будет просто
пользоваться готовым установщиком.
...
Рейтинг: 0 / 0
19.02.2009, 09:13
    #35826263
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните пожалуйста..))
авторКстати, а корректно если в курсорадаптере вручную ставил условие на выборку из таблиц??

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


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