|
Рвется База :)
|
|||
---|---|---|---|
#18+
Здравствуйте. У меня периодически возникает проблема с отображением данных в гриде, появляется белая полоса, так что половина данных скрывается под ней. А когда щелкаешь по гриду, то на той строке, куда попадаешь, данные видны становятся или если прокручивать грид туда-сюда, то данные иногда появляются. Звонят возмущенные пользователи и орут что у них:"База рвется!" глюки грида во вложении ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 14:14 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Фильтр используется? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 14:43 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Ffffffffffffffffffffffffffffff, Имеется ввиду LockScreen. Я к, сожалению, в чужом коде не очень пока разобралась. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 14:54 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМFfffffffffffffffffffffffffffff, Имеется ввиду LockScreen. Я к, сожалению, в чужом коде не очень пока разобралась. покажите нам немного кода (отбор данных и привязку к источнику) к чему грид привязан? напрямую к таблице? если лочится экран на время "танцев", то в конце должно быть нечто thisform.LockScreen = .f. ....grid...setfocus() ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 15:02 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Были глюки с прорисовкой грида, правда немного другие. Причиной оказалось плотное прилегание контролов друг-к-другу. Фокс криво отрисовывал форму при навигации по гриду. Для проверки поставь у грида Themes = .F. если проблема в этом, то пройдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 15:31 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Если много записей (больше 2000-3000) на индексированной таблице с фильтром возможны такие зависания. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 15:32 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
sqlnew, Это происходит не на одной форме, а периодически на каждой, где есть грид. В таблицах очень много записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 15:46 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Код попозже приведу. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 15:47 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
sqlnew, поставила .themes=.f., но ничего не изменилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 15:52 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМsqlnew, поставила .themes=.f., но ничего не изменилось. Это не ко мне ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 16:02 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМпоставила .themes=.f., но ничего не изменилось. Тогда надо простенький пример повторяющий глюк чтобы увидеть его живьем. Как вариант - сохранить показываемую таблицу в отдельную DBF-ку, поправить форму чтобы она работала отдельно от проекта и выложить все сюда. PS После чего такое началось? Можно еще пооткатывать последние изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 16:03 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
sqlnew, сори, ошиблась маленько. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 16:04 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Dima T, Началось все после того, как мы с 6 версии foxpro перешли на 9-ю. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 16:24 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМDima T, Началось все после того, как мы с 6 версии foxpro перешли на 9-ю. переписывать "танцы с бубнами" будем? покажите код. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 16:47 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМНачалось все после того, как мы с 6 версии foxpro перешли на 9-ю. 1. Сервиспак 2 стоит? Если нет, то поставить 2. Убрать русский рантайм (удалить все копии vfp9rrus.dll). Его наличие по-простому проверяется так: русское системное меню при старте EXE и текст сообщений об ошибках русский. Если используется английский - все по-английски. при установке фокса кладется в "C:\Program Files\Common Files\Microsoft Shared\VFP\" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 16:52 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Dima T, Да, стоит 2 сервиспак и русский рантайм. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 16:55 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМрусский рантайм. Убивай vfp9rrus.dll. Если не поможет - выкладывай пример с повторением глюка. Стандартных лекарств от этого нет, это глюк движка фокспро, лечить можно только "методом научного тыка". И надо чтобы было куда "тыкать" Кроме тебя похоже никто такого глюка еще не видел. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 17:00 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
русский рантайм не рекомендую использовать. Пользы от него никакой: 1. Русское дефолтное меню обычно заменяется на свое русское 2. Русские сообщения об ошибках все равно непонятны пользователю, а качество перевода таково что и разработчику не всегда понятно что за ошибка. А вред серьезный: перевод идет с опазданием, поэтому не все ошибки исправленные в английском, исправлены в русском. Так было в 6-ке и в 9-ке тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 17:13 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Dima Tрусский рантайм не рекомендую использовать. Пользы от него никакой: 1. Русское дефолтное меню обычно заменяется на свое русское 2. Русские сообщения об ошибках все равно непонятны пользователю, а качество перевода таково что и разработчику не всегда понятно что за ошибка. А вред серьезный: перевод идет с опазданием, поэтому не все ошибки исправленные в английском, исправлены в русском. Так было в 6-ке и в 9-ке тоже самое. ну шош тебе рус.рантайм то так не нравится? проблемы руск.рантайма обходятся. зачем от него прятаться? если проще знать возм.проблемы и учитывать их при разработке. не вижу необх-ти закладываться при распространении приложений на работу оных под англицким раентаймом и необходимости удаления русского. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 17:33 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
и что за наезд на рус.рантайм? ну у меня все под рус.рантаймом работает от Калининграда до Находки. и что? ась? может вначале на "танцы с бубном" посмотрим? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 17:36 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
прошелмимои что за наезд на рус.рантайм? ну у меня все под рус.рантаймом работает от Калининграда до Находки. и что? ась? может вначале на "танцы с бубном" посмотрим? Угу, тут только переглючило чего-то у тебя. Я в 6-ке наелся с мистикой от русского рантайма, в 9-ке уже попадал, с меня хватит. Тем более есть способ запуска английского без удаления русского. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 18:07 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМпериодически возникает проблема с отображением данных в гриде, появляется белая полосатакое бывает часто при использовании LOCKSCREEN. Где было можно, я это поубирал, а где нельзя было полностью поубирать,- по ходу программы отключал действие этой команды (LOCKSCREEN = .F.), например, при необходимости вызова форм и др. действиях, задваивающих изображение и отбеливающих частично грид, а потом снова включал (LOCKSCREEN = .t.). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 19:03 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Dima Tпрошелмимои что за наезд на рус.рантайм? ну у меня все под рус.рантаймом работает от Калининграда до Находки. и что? ась? может вначале на "танцы с бубном" посмотрим? Угу, тут только переглючило чего-то у тебя. Я в 6-ке наелся с мистикой от русского рантайма, в 9-ке уже попадал, с меня хватит. Тем более есть способ запуска английского без удаления русского. что тут? ну нарвался, узнал как "обходить". и что? с тебя хватит - удачи. чего орать то? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2010, 09:38 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Вот что смогла выдрать из программы. Есть главная форма lp_fmstart. В ней размещается контейнер Basecont(Class library : appl.vcx). В этот контейнер грузятся пользовательские классы, в которых и спользуется грид из библиотеки appl.vcx ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2010, 10:24 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМ, либо фокс обнови, либо конфликт с библиотеками классов. Делай отладку по шагам и по объектам. Удали объект из формы на который есть подозрение что он вызывает конфликт, проверь без этого объекта, а потом отлаживай тот объект где обнаружилась плюха. После как отладишь по отдельности, думай как уладить конфликт объектов в форме. Возможно придётся заменить форму и диалог ввода на другой. За тебя никто отлаживать тут не будет! Могу помочь за определённую плату - время деньги. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2010, 11:36 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМВот что смогла выдрать из программы. И чего прикажешь с этим делать? Запускаю DO FORM lp_fmstart получаю ошибку: File 'uprof.dbf' does not exist. Все что я могу сказать по поводу этого кода: никаких аномалий не увидел, все работает нормально, только файлов кое-каких не хватает. Изучать нерабочий кусок чужой проги тут никто не будет. Я же вроде человеческим языком писал: Dima TЕсли не поможет - выкладывай пример с повторением глюка. Стандартных лекарств от этого нет, это глюк движка фокспро, лечить можно только "методом научного тыка". И надо чтобы было куда "тыкать" Кроме тебя похоже никто такого глюка еще не видел. Надо так выложить, чтобы распаковал, запустил и сразу глюк увидел. Поэтому готовь пример кода так чтобы просто запускался (с файлом проекта и чтобы по кнопке "Build" EXE собирался) и чтобы глюк присутствовал (с инструкцией как его повторить). Только сама сначала у себя все проверь перед тем как сюда слать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2010, 12:10 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Фокс у нас на работе стоит 9- лицензионный, сервис пак 2.... Разбираюсь я в ЧУЖОМ коде (тот кто писал это, уже давно уволился). Отладку по шагам делаю. Удалять объекты пока не рискую, потому что не разобралась до конца что и к чему в ЧУЖОМ коде. "За тебя никто отлаживать тут не будет!" - а я и не просила за меня что-то отлаживать ) "Могу помочь за определённую плату - время деньги" - это не ко мне, так как прога не моя лично :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2010, 12:28 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Надо так выложить, чтобы распаковал, запустил и сразу глюк увидел. Поэтому готовь пример кода так чтобы просто запускался (с файлом проекта и чтобы по кнопке "Build" EXE собирался) и чтобы глюк присутствовал (с инструкцией как его повторить). Только сама сначала у себя все проверь перед тем как сюда слать. В ближайшее время постараюсь сделать...немного разгребу с более глобальными проблемами :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2010, 12:31 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМФокс у нас на работе стоит 9- лицензионный, сервис пак 2.... Разбираюсь я в ЧУЖОМ коде (тот кто писал это, уже давно уволился). Отладку по шагам делаю. Удалять объекты пока не рискую, потому что не разобралась до конца что и к чему в ЧУЖОМ коде. "За тебя никто отлаживать тут не будет!" - а я и не просила за меня что-то отлаживать ) "Могу помочь за определённую плату - время деньги" - это не ко мне, так как прога не моя лично :) класс-форма mn_fmx вот это безобразие: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
на курсорадаптер будем переделывать? проц-ру или ф-ю loadgrid покажите + из инита формы прыгать в зад нужно с фолсом х.з. как там ф-ма рушится - для меня загадка. к коду есть где придраться, поэтому предлагаю немного подточить для начала. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2010, 12:46 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
прошелмимоНадеждаМФокс у нас на работе стоит 9- лицензионный, сервис пак 2.... Разбираюсь я в ЧУЖОМ коде (тот кто писал это, уже давно уволился). Отладку по шагам делаю. Удалять объекты пока не рискую, потому что не разобралась до конца что и к чему в ЧУЖОМ коде. "За тебя никто отлаживать тут не будет!" - а я и не просила за меня что-то отлаживать ) "Могу помочь за определённую плату - время деньги" - это не ко мне, так как прога не моя лично :) класс-форма mn_fmx вот это безобразие: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
на курсорадаптер будем переделывать? проц-ру или ф-ю loadgrid покажите + из инита формы прыгать в зад нужно с фолсом х.з. как там ф-ма рушится - для меня загадка. к коду есть где придраться, поэтому предлагаю немного подточить для начала. Я понимаю что это безобразие и, то что надо на курсорадаптер переделать, но это чуть попозже. loadgrid поищу выложу. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2010, 12:56 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМ Я понимаю что это безобразие и, то что надо на курсорадаптер переделать, но это чуть попозже. loadgrid поищу выложу. 1. именовать курсоры необходимо уник-ми именами 2. запрос к серверу вынести в отдельный метод, котор. должен произойти до инита ф-мы (желат-но лоад ф-мы), т.е. до старта инита должны быть получены все курсоры с сервера, если это не произошло - ф-ма должна завалиться взад до инита. в ините привязать контролы, либо из инита позвать метод-привязывалку. 3. дергать инит ф-мы в др. контролах - верх безобразия. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2010, 13:02 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМ, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
это жесть жестяная и танцы с бубеном. подсмотреть "танцы" с меньшими трудозатратами. пример подобных танцев смотреть здесь: тытынц там есть метод обхода и начитки св-в колонкам класс-грида SetColumnsHeadersProperties, который в моем примере зовется автоматом при привязке грида к источнику, т.е. при присвоении св-ву RecordSource значения (ассайн метод) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
критика 1. возвращать из ХП с метаданными нужно всеже курсор, а не строку с разделителями 2. сам класс-грид должен быть со своими колонками и хедерами и т.д ..., а не так как у Вас - голым голо. 3. .... что делать: 1. в какой-то формочке сейчас обойти этот шаманский код и позвать какой-то врем-й присвоитель в который явно заслать грид и ему руками присвоить все без удаления и подсовывания своих контролов (нужно понять, что портит гриды), т.е. вначале найдите тот мех-м, который у Вас "хромает". 2. также данные натянуть в методе лоад ф-мы (т.е. изменить механизмы и посмотреть что будет твориться) если это так, то немного накрутить ваш библ-й класс - дать ему своих колонок и хедеров, что упростит далее разр-ку, немного упростить и перекрутить настройку гридов из описателей настроек (метаданных) посмотрите, у меня видимость грида не дергается и устан-ся видимость контролов в колонках явно при добавлении, не помню, но ????? может влияет на взлет и настройку. также обратите внимание на то, что прим-е курсорадаптеров облегчает разр-ку в плане того, что не нужно затем танцевать над отвязкой дан.от грида и перенастройке при обновлении данных - рефреше курсорадаптера (в Вашем случае - Вы вынуждены дергать заново инит формы, что явл-ся надруг-вом над собой и фокспро). еще раз иными словами: 1. играемся с моим примером. 2. убеждаемся - нет глюков. 3. задаемся вопросом: значит у меня что-то криво. 4. начинаем "рыть" и править свой код. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2010, 16:00 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Добрый вечер. Начала по вашим примерам и примеру отсюда http://kodu.neti.ee/~juri4/vfp60/ca_03_ru.htm пробовать работать с cursoradapter. В связи с чем возник вопрос: как в CA получить результат работы процедуры? все тем же родным SQLEXEС - ом? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2010, 19:30 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМДобрый вечер. Начала по вашим примерам и примеру отсюда http://kodu.neti.ee/~juri4/vfp60/ca_03_ru.htm пробовать работать с cursoradapter. В связи с чем возник вопрос: как в CA получить результат работы процедуры? все тем же родным SQLEXEС - ом? Зависит от того, что именно возвращает эта процедура и для чего она нужна. Можно ведь в свойстве CursorAdapter.SelectCmd вместо команды Select-SQL написать вызов процедуры. Ну, примерно так Код: plaintext
Если процедура MyProc возвращает некую выборку, то результат этой выборки будет отображен как курсор в CursorAdapter. Хотя, разумеется, если рассматривать некий "общий случай" (сферического коня в вакууме), то, разумеется, придется использовать SQLExec(). CursorAdapter, прежде всего, создавался как "обертка" над командой Select-SQL. Все вокруг этого и крутится. Ну, по простому: сделали выборку записей, изменили записи, сбросили изменений обратно. Если Вам требуется нечто, отличное Select-SQL, то следует подумать, а нужен ли Вам CursorAdapter? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2010, 20:33 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
[quot ВладимирМ Зависит от того, что именно возвращает эта процедура и для чего она нужна. Можно ведь в свойстве CursorAdapter.SelectCmd вместо команды Select-SQL написать вызов процедуры. Ну, примерно так Код: plaintext
Если процедура MyProc возвращает некую выборку, то результат этой выборки будет отображен как курсор в CursorAdapter. Хотя, разумеется, если рассматривать некий "общий случай" (сферического коня в вакууме), то, разумеется, придется использовать SQLExec(). CursorAdapter, прежде всего, создавался как "обертка" над командой Select-SQL. Все вокруг этого и крутится. Ну, по простому: сделали выборку записей, изменили записи, сбросили изменений обратно. Если Вам требуется нечто, отличное Select-SQL, то следует подумать, а нужен ли Вам CursorAdapter?[/quot] Процедура "MyProc" - хранимая процедура MSSQL SERVER 2005. Она именно возвращает некую выборку. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2010, 21:17 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
ВладимирМ Хотя, разумеется, если рассматривать некий "общий случай" (сферического коня в вакууме), то, разумеется, придется использовать SQLExec(). CursorAdapter, прежде всего, создавался как "обертка" над командой Select-SQL. Все вокруг этого и крутится. Ну, по простому: сделали выборку записей, изменили записи, сбросили изменений обратно. Если Вам требуется нечто, отличное Select-SQL, то следует подумать, а нужен ли Вам CursorAdapter? Владимир, чего сказать то пытались? Рассуждение о бренности бытия и о конях в вакууме? Когда-же Вы приоритеты измените в сторону абстрактных приемов, скорости разработки и сопровождения, стаб-ти работы прилож-й на фокспро? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 12:14 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
прошелмимоВладимирМ Хотя, разумеется, если рассматривать некий "общий случай" (сферического коня в вакууме), то, разумеется, придется использовать SQLExec(). CursorAdapter, прежде всего, создавался как "обертка" над командой Select-SQL. Все вокруг этого и крутится. Ну, по простому: сделали выборку записей, изменили записи, сбросили изменений обратно. Если Вам требуется нечто, отличное Select-SQL, то следует подумать, а нужен ли Вам CursorAdapter? Владимир, чего сказать то пытались? Рассуждение о бренности бытия и о конях в вакууме? Когда-же Вы приоритеты измените в сторону абстрактных приемов, скорости разработки и сопровождения, стаб-ти работы прилож-й на фокспро? Так как только появятся абстрактные задачи не привязанные ни к каким конкретным условиям, так сразу... Когда же Вы поймете, что не существует "абстрактных приемов"? Все приемы очень даже "конкретные". Есть куча сопутствующих требований, которые просто необходимо выполнить. А ради неких "абстрактных приемов" переписывать готовое приложение с нуля никто и никогда не будет. Вот я и спрашиваю в последнем топике об этих "сопутствующих требованиях". Точнее, зачем вообще на клиенте нужнен результат работы хранимой процедуры? Что с этим результатом предполагается делать? А далее уже можно советовать, подойдет для этих задач CursorAdapter или нет. Стоит ли тянуть весь "паровоз" "абстрактных приемов" ради данной конкретной задачи? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 15:12 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
да уж. а если не будет вопрошающий переписывать? а елси он изучает новые приемы? Когда же Вы поймете, что не существует абстрактные классы, приемы ООП, которые позволяют сократить трудозатраты и сопровождение продуктов. Зачем Вы начали беседу про SQLExec()? Вас спросили как получить обновляемый курсорадаптер в селекткмд которого вызов ХП, в ответ - вновь куча рассуждений. Зачем, я Вас спрашиваю, - в ответ "понос". Затем тянуть, что это облегчает разработку. авторТочнее, зачем вообще на клиенте нужнен результат работы хранимой процедуры? Что с этим результатом предполагается делать? Вам уже ответили - это выборка. автор А далее уже можно советовать, подойдет для этих задач CursorAdapter или нет. а почему он не подойдет для ХП, которая вернет выборку с данными? Вы и не задавались задачей выяснять, что за выборка, а лили вновь "понос" про обертки и т.д., немного иногда разбавляйте тем, что это абстрактный класс, который облегчает разработку. Как и конкретными примерами я уже "разбавлю". не нужно рассказывать про сфер.коней, рассказывать о необъятном исп-и ХП, что ХП может возвращать коней и нести бред. можно вопрошавшему дать конкретный пример, где в селекткмд будет вызов ХП, а далее уже он сам задаст вопрос, что я типа не выборку возвращаю, а ..., или там 10 курсоров. исп-е курсорадаптера предполагает некоторые принципы и способы написания ХП, вот про это и нужно было намекнуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 15:49 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Вот всегда так. Полная каша в изложении своих мыслей и полнейшее игнорорование того, о чем вообще идет разговор. Реакция на отдельные слова, а не на смысл этих слов. Поэтому напомню, с чего все началось. НадеждаМ : как в CA получить результат работы процедуры? ВладимирМ : CursorAdapter.SelectCmd = "Execute MyProc". Но в общем случае SQLExec() прошелмимо : Когда-же Вы приоритеты измените в сторону абстрактных приемов ??? ВладимирМ : Какие инструменты использовать, зависит от решаемой задачи прошелмимо : Зачем Вы начали беседу про SQLExec()? ??? Не замечаете странностей в подобной дискуссии? Дальше еще веселее ВладимирМ : Зависит от того, что именно возвращает эта процедура и для чего она нужна НадеждаМ : Процедура ... возвращает некую выборку ВладимирМ : Что с этой выборкой предполагается делать на клиенте? прошелмимо : Вы и не задавались задачей выяснять, что за выборка, а лили вновь "понос" про обертки и т.д., ??? Хорошо, уточним про "обертку" ВладимирМ : CursorAdapter, прежде всего, создавался как "обертка" над командой Select-SQL. Все вокруг этого и крутится. Ну, по простому: сделали выборку записей, изменили записи, сбросили изменений обратно. Если Вам требуется нечто, отличное Select-SQL, то следует подумать, а нужен ли Вам CursorAdapter? прошелмимо :исп-е курсорадаптера предполагает некоторые принципы и способы написания ХП, вот про это и нужно было намекнуть Обратите внимание, что, в отличие от Вас, я говорю вовсе не о "принципах написания", а о "принципах использования". О целях, а не о средствах их достижения. Если то, что я написал, расходится с Вашим пониманием, того, для чего предназначен CursorAdapter, то где Ваше определение? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 18:19 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
ВладимирМ Если то, что я написал, расходится с Вашим пониманием, того, для чего предназначен CursorAdapter, то где Ваше определение? Да. Вам лучше молчать - уже все написано про "обертки". кроме "обертка" Вы сообщить ничего не можете. примеров использования не создали. создайте примеры и научите разработчиков использовать. просто писать кучу слов не нужно - уже все написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 18:29 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Значит, для чего предназначен CursorAdapter Вы не знаете? Не то, что он делает, а для чего его следует использовать? Жаль... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 18:50 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Как удалить запись через CA? Как применить вот эти свойства? CursorAdapter.DeleteCmd [ = cCommand ] CursorAdapter.DeleteCmdDataSourceType [= cDataSourceType] CursorAdapter.DeleteCmdDataSource [ = cDataSource] ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 20:45 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМКак удалить запись через CA? Как применить вот эти свойства? CursorAdapter.DeleteCmd [ = cCommand ] CursorAdapter.DeleteCmdDataSourceType [= cDataSourceType] CursorAdapter.DeleteCmdDataSource [ = cDataSource] Вам не нужно применять эти команды. Вам нужно получить с пом ХП с ключами курсор, правильно настроить св-ва курсорадаптера. Далее такой курсор буде обновляемым, т.е изм-я из него будут автоматич-ки сохр-ся на сервер (генериться команды обновл-я, удаления, добавл-я записей) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 21:01 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
ВладимирМЗначит, для чего предназначен CursorAdapter Вы не знаете? Не то, что он делает, а для чего его следует использовать? Жаль... старый, упертый глупец - главный вредитель. убейся о стол, негодяй. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 21:02 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМКак удалить запись через CA? Как применить вот эти свойства? CursorAdapter.DeleteCmd [ = cCommand ] CursorAdapter.DeleteCmdDataSourceType [= cDataSourceType] CursorAdapter.DeleteCmdDataSource [ = cDataSource] завтра буд рисовать пример. Вам показать курсорадаптер с селекткмд = "exec .... @cTT=..." ? постановка задачи: ХП будет возвращать 1 курсор и кад будет настроен таким образом, что при изм-и данных на клиенте будут авт-ки произв-ся соотв-е изм-я в таблице на сервере, сервер используем ms sql 2005. ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 21:12 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
прошелмимо завтра буд рисовать пример. Вам показать курсорадаптер с селекткмд = "exec .... @cTT=..." ? постановка задачи: ХП будет возвращать 1 курсор и кад будет настроен таким образом, что при изм-и данных на клиенте будут авт-ки произв-ся соотв-е изм-я в таблице на сервере, сервер используем ms sql 2005. ? Да, с примерчиком можно, а то пытаюсь тут что-то сообразить, но криво работает че-то. Да постановка задачи именно такая. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 21:25 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМпрошелмимо завтра буд рисовать пример. Вам показать курсорадаптер с селекткмд = "exec .... @cTT=..." ? постановка задачи: ХП будет возвращать 1 курсор и кад будет настроен таким образом, что при изм-и данных на клиенте будут авт-ки произв-ся соотв-е изм-я в таблице на сервере, сервер используем ms sql 2005. ? Да, с примерчиком можно, а то пытаюсь тут что-то сообразить, но криво работает че-то. Да постановка задачи именно такая. ок, ждите - завтра на коленке нарисую ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 21:27 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
подобный пример (есть список док-в - ): там обсуждении ссылка на бд: http://sql.ru/forum/actualthread.aspx?tid=784178&hl=ms+sql+2005 клиент.часть: http://sql.ru/forum/actualfile.aspx?id=9327206 смотрите настройки курсорадаптера documents selectcmd = exec selectDocums @dBeginDate = ?this.DateBegin, @dEndDate = ?this.DateEnd и т.д код удаления Вы увидите в кнопке удалить на списочной класс-форме (это не повторять - там все руками, в реальной разр-ке так не поступают - работают универсальные классы). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 21:44 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
прошелмимо, Да мне хотя-бы пока на домашнем примере попробовать ) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2010, 21:58 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМпрошелмимо, Да мне хотя-бы пока на домашнем примере попробовать ) отдаю "слона". пример содержит скрипты script.sql для создания объектов в БД 1. на сервере создать БД mytest, выполнить скрипты 2. распаковать в папку, перенастроить пути в файликах разработка.lnk config.cfg path.prg (если не хочется это делать - создайте папки и распакуйте по такому пути c:\forum\пример_с_хп\) 3. нажать разработка.lnk он ссылается на объект "C:\Program Files\Microsoft Visual FoxPro 9\vfp9.exe" -cc:\forum\пример_с_хп\config.cfg (если пути к среде разработки отличаются - исправить) при отличающихся имени сервера, пароле и имени БД править код в классе app - метод login Код: plaintext 1. 2. 3. 4. 5. 6. 7.
пример демонстрирует спис.форму редактирования, получение курсора посредством ХП. показан пример разработки абстрактного инструмента настройки курсорадаптера, показан универсальный инструмент для сохр-я изм-й, отобр-я ошибок и т.д. ... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2010, 11:05 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
к списочной ф-ме прикручен класс-грид с сортировкой и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2010, 11:28 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
НадеждаМКак удалить запись через CA? Как применить вот эти свойства? CursorAdapter.DeleteCmd [ = cCommand ] CursorAdapter.DeleteCmdDataSourceType [= cDataSourceType] CursorAdapter.DeleteCmdDataSource [ = cDataSource] Я попытаюсь объяснить принцип работы с удаленными данными. Думаю, тогда будет проще понять о чем вообще речь. Итак, основа основ - это запрос к серверу. Команда Select-SQL (CursorAdapter.SelectCmd), пусть и выполняемая внутри хранимой процедуры. Эта команда возвращает некую выборку. Очевидно, что выборка - это не есть исходная таблица. Это другая таблица. Физически другая. Даже расположенная в другом месте. Следовательно, модификация этой другой таблицы никак не затронет исходную таблицу, на основе которой эта выборка и делается. Необходимо предпринять ряд действий, чтобы изменения из выборки попали в исходные таблицы. Существуют стандартные команды для модификаций таблиц. Insert-SQL, Update-SQL, Delete-SQL. Следовательно, для выполнения модификации необходимо сформировать соответствующие команды и передать их на сервер. Что необходимо знать, чтобы сформировать эти команды? 1. Имя таблицы, которую будем модифицировать (CursorAdapter.Tables) 2. Поле или набор полей, по которым можно однозначно идентифицировать запись. Так называемое, ключевое поле или первичный ключ (CursorAdapter.KeyFieldList) 3. Какие поля будем модифицировать (CursorAdapter.UpdatableFieldList). Список полей через запятую. 4. Из каких полей выборки (на клиенте) брать информацию для обновления полей на сервере. Так сказать "карта соответствия" (CursorAdapter.UpdateNameList). Какое поле на клиенте какому полю на сервере соответствует. Список пар полей через запятую. Собственно, это и есть минимально необходимый набор настроек CursorAdapter, чтобы обеспечить автоматическое обновление данных на сервере. В большинстве случаев этого вполне достаточно. Есть еще ряд "тонких" настроек, но значения по-умолчанию этих "тонких" настроек, опять же, в большинстве случаев, как раз те, что нужно. Объект CursorAdapter при возникновении события сохранения внесенных изменений на основании этих 4 настроек автоматически формирует необходимые команды на модификацию (Insert-SQL, Update-SQL, Delete-SQL) и также автоматически отправляет их на сервер. Что является этим самым "событием сохранения внесенных изменений"? В FoxPro есть такое понятие как "буферизация". Если представить исходную выборку (исходную таблицу) как лист бумаги с некоторым текстом, то буферизация - это прозрачная калька, положенная поверх этого листа. Внося изменения, Вы "пишите" эти изменения не сразу на лист, а на эту самую прозрачную кальку. Затем, при возникновении определенного события, происходит перенос изменений с "кальки" на собственно лист. К чему это все? А к тому, что результат выборки в CursorAdapter всегда находится в режиме оптимистической буферизации. По умолчанию, в режиме оптимистической буферизации строк (3), но может быть переключен в режим оптимистической буферизации таблиц (5). Установить для него режим пессимистической буфериазции или отключить буферизацию совсем - невозможно. Это значит, что выполняя модификации в курсоре, полученном из CursorAdapter, фактически, Вы модифицируете буфер этого курсора. Как следствие, под событием "сохранения внесенных изменений" понимается процесс "сброса буфера" или, другими словами, переноса изменений из буфера в сам курсор Сброс буфера происходит В режиме строковой буферизации 1. При попытке перехода на другую запись 2. При попытке закрытия курсора 3. По команде TableUpdate() В режиме табличной буферизации только по команде TableUpdate() и никак иначе. Именно по этой причине, чаще всего, устанавливают режим табличной буферизации (5), чтобы исключить неконтролируемый сброс буфера. Неконтролируемый программистом. Как следствие, процесс сохранения внесенных изменений запускается командой TableUpdate() А зачем же тогда сделаны дополнительные свойства вроде CursorAdapter.DeleteCmd, CursorAdapter.InsertCmd, CursorAdapter.UpdateCmd? Ведь команды на модификацию будут сформированы автоматически. А это сделано на тот случай, если команды, автоматически формируемые CursorAdapter для обновления данных Вас не устраивают. В этом случае при сбросе буфера (по команде TableUpdate()) будут использованы команды, указанные в этих свойствах. Соответственно, выбор за Вами. Если 4-х стандартных настроек (Tables, KeyFieldList, UpdatableFieldList, UpdateNameList) достаточно для заложенной в приложении логики обновления данных, то этим и следует ограничиться. Если же этого недостаточно, то следует проанализировать насколько логика приложения отличается от логики CursorAdapter и либо полностью подменять эту логику, либо "слегка" корректировать. CursorAdapter предоставляет возможность сделать и то, и другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2010, 12:35 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Добрый вечер. В поисках информации по работе с курсорадаптером натолкнулась на эту тему. Скачала пример_с_хп, стала разбираться. Вроде все получается, только вот не понятно одно: как в SQL выражение добавить условие where? Пока у меня простой запрос, для отображения данных. Но в дальнейшем понадобится и поиск по условию. Завтра приведу код. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2012, 20:22 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2012, 08:24 |
|
Рвется База :)
|
|||
---|---|---|---|
#18+
DO case CASE .combo1.LISTINDEX = 1 &&поиск по lpucode попробовала вставить tcWhere = 'where '+iif(!empty(par(2)), 'lpu = '+ltrim(str(par(2))), '') но ничего не происходит даже после .oCad.CursorRefresh() ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2012, 09:18 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1583829]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
88ms |
get tp. blocked users: |
1ms |
others: | 271ms |
total: | 445ms |
0 / 0 |