powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Стрелка на обуждение: Recordset формы в режиме ADP
24 сообщений из 24, страница 1 из 1
Стрелка на обуждение: Recordset формы в режиме ADP
    #32166568
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема уже несколько раз развивалась в разных топиках
Предлагаю отделить эту тему. Речь идет только о режиме SQL+ADP
Кто за и кто против? А главное почему?

Почему я против:
- чем меньше кода на VBA, отвечающего за бизнес логику работу системы, тем лучше. Конечно не всегда получается, но нужно максимально обработку логики сносить на сервер.
Почему: когда у тебя локальная сетка из 10 машин, то клиента обновить раз плюнуть, а когда несколько сот, да еще некоторые работают по выделенным каналам из других офисов - заколебаешься.
А на сервере скриптик запустил с обновлением процедуры и все.

- при работе с объектом Recordset формы получаем цепочку для работы с данными SQL-ADO-Recordset-Record зачем???
когда можно Forms!Form1!Field1 или запуск хранимой процедуры (если же нужны какие-то действия "за спиной" пользователя)

есть еще, но не все сразу :)
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32166669
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Присоединяюсь. Пока понял лиш один ответ на почему - обчитались Гетца. Помню вторую версию Аксес, но до появления ADP что-то серезное сделать - сложно даже представить. Боюсь серьезных ответов на вопрос "почему" не последует. А хранимые процедуры с идеологии "старых аксесовцов" выпадают, им подавай рекордсеты, рекордсеты и еще раз рекордсеты. Вместо того, что бы сделать поиск на сервере, грузят все на клиента, затем делают Seek'ы, Find'ы и прочие извращения. Вместо того, чтобы сделать Update таблицы, делают что-то на клиенте, что всеравно должно в конце-концов привести к тому же Update. Для всех противников рекомендую взять для начала книжечку по SQL и понять идеологию, ибо она начально не от M$ и понять ее на основе Аксеса первоначально тяжеловато.
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32166766
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
incold, вопрос "за" - "против" - дурацкий вопрос. Из-за таких вопросов начилась война между лилипутами, котрые разбивали яйцо с острого конца и теми кто разбивал с тупого
Каждому - свое. Где без рекодсетов не обойтись, а где они и на хрен не нужны. Если знаешь точно, что здесь не нужен рекодсет - подскажи человеку.

2V. Motchulsky
>Пока понял лиш один ответ на почему - обчитались Гетца

Я хоть и обещал побить Гетца при встрече, но другим его обижать не дам. Он мой! Кто тронет, того на стрелку на трамвайной остановке
А вообще, если Гетц что-то написал, это не значит что это истина и именно так надо делать. Просто в книге 1000 страниц информации, а как мы ее употребим, это личное дело каждого.

>А хранимые процедуры с идеологии "старых аксесовцов" выпадают
Лично я с тобой полность согласен по поводу не использования или неправильного использования возможностей клиент-серверных технологий акесниками. Просто надо помнить, все мы начинали с файл-серверных технолгий: mdb+mdb. От туда и тянуться анархонизмы. Хотя мне почему-то технология "клиент-сервер" дискомфорта не доставляет.
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32166874
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть "за" и "против" - это и дурацкий вопрос...даже скорее всего так и есть.
Просто смотрю на форум, и вижу, что очень многие имея опыт разработок на аксес начинают переделывать под сиквел. При этом продолжая использовать старые приемы программирования.
Как в фильме "Гараж": "Подумайте, человеки! Опомнитесь!"
Такое впечатление, что для многих сиквел - просто более надежная MDB с таблицами, которая значительно реже вылетает и может обрабатывать б о льшие объемы данных.
Я поднял эту тему, скорее для того, чтобы аксесники сначала подумали нужно ли переходить на работу с сиквелом, и если нужно, то как минимум почитать что-нибудь по разработке баз данных для клиент-серверных приложений.
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32166915
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простите, я опять спрошу про "Гетца часть2 " в нём хорошо и правильно расписано как програмить акес для adp ? или там набор фичей, а в общем и с начала нет ничего?
хочу купить просто 2-ую часть
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167134
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хорошая прога та где грамотно сочетается всё ( если прогаделатель умеет всё)
главное чтоб удобно для клиента, быстрая, малая по весу и читабельна для того же прогоделателя. если бы можно в аксе организовавать dll (а не только готовые включать) или куски на ассемблере включать я бы и это использовал.
лишь бы решить все проблемы.
многие вещи проще и быстрее делаются на клиенте, многие на сервере. при этом надо учитывать и сетевой трафик. нефик гонять полуфабрикаты данных (типа "динамическая фильтрация" в одном из топиков). а есть и вещи которые можно сделать только совместо сервер+клиент.
чем больше умеешь тем проще получается.
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167660
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще одно заблуждение - для сервера нужен мощный компютер, или надо что-то делать на клиенте, чтобы разгрузить сервер.
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167666
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2V. Motchulsky
согласен
уточнение: на клиенте надо делать чтобы комлекс работал лучше а не чтоб разгрузить сервер
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167670
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока понял лиш один ответ на почему - обчитались Гетца.
Понял больше - обчитались Гетца, часть 1, а про ADP - часть 2.
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167673
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
многие вещи проще и быстрее делаются на клиенте

Это какие например?
Только применительно к данным, пожалуйста, а не к формам.
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167713
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имеется в иду не обработка данных а составление проги.
если бы был какой-нибудь редактор для ХП (а не встроенный в акс NOTEPAD)
тогда можно былобы ХП более оперативно сочинять.
а с точки данных - от сервера главное отдать запрошенный набор записей.
если сервер отдает > 500 (max 1000) записей по моему просто не правильно поставлено правило отбора. просто просматривать большой обёъм глупое занятие. а визуально выбирать можно в приделах ~ 500 строк. и в таком объёме на клиенте можно использовать все варианты.
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167730
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И все же если бы не было глюков в recordset_е формы то было бы не плохо, господа. Хотя бы для перемещения по записям формы, или поиск строки в форме используя тот же recordsetclone, я конечно не говорю про перекачку данных на клиент и поиск нужной инфы.
Вы конечно правы что многие (в том числе и я) переходят на SQLServer бросив JET, возможно что тащу за собой воз гимора, но надеюсь от него избавиться. Честно говоря я вообще все меньше понимаю зачем использовать клиента ADP??? Я правда до отчетов не дошел еще но чую гимор будет и там.
Что касается своего раннего топика то я так и не решил проблему :(
Кстати еще раз все спасибо за участие и особенно за разъяснение принципа действия строки синхронизации.
Во первых я чего то не пойму принципа по которому осуществляется переход по команде DoCmd.GotoRecord.
Дело в том что у меня форма подчиненная это раз.
я делал так:
[Forms]![Главная]![Подчиненная]![подподчиненная].SetFocus
Docmd.GotoRecord ,,acNewRec
Если подчиненная одна то вроде прокатывало а вот с подподчиненной формой не прокатило, дальше эксперементировать не успел меня выглнали на выходные :((
Дальше еще один момент
Мне надо добавить запись в форму (AcNewRec)
В новой записи, для сохранения целостности надо добавить значение ключа другой таблицы. Вот интересный момент, я нехочу в форме отображать ключевое поле, а ведь добавлять запись придется так
Me!Поле=1
Соответсвенно сделать бы поле невидимым, дак форма у меня табличная!!
Заморозить границы полей и сдеалть ширину ключевых полей равными нулю? дак юзверя так не хотят, они привыкли границы двигать :)
Ну и как быть?
Работал бы нормально рекордсет формы, и с перемещения по полям все понятно было бы, и с добавление в набор записей (даже тех что в форме не отображены) проблем бы не было.
Или может только у меня проблемы такие?
А вообще время поджимает а еще и конь не валялся :((
Ошибку свою я искал на MSDN по номеру, но не нашел.
Может потому она что у меня офис XP на Win2KServer поставлен, или офис кривой... мда...
Блин работал бы рекордсет все решилось бы уже !! :)
В 2000 работал но там сумма по табличной форме не считалась!! Блин ну ексесс ну ексесс!! Кстати о Гетце та строчка подключения которую он в своей книге советует у меня не редактируемый набор возвращает как в 2000 (я уже поднимал топик) так и в XP проверял пять раз!
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167737
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Jem\r
глюк с Recordset скорее всего из-за неправильного его использования.\r
вот тут \r
/topic/33198\r
небольшое наблюдение по RecordsetClone. я тоже думал что глюк. а на самом деле необходимо более грамотно использовать. к сожалению не все описано даже у Гетца. пробуй даже на первый взгляд одинаковые варианты даю разные результаты.\r
кстати у Гетца есть фраза как написать команду синхронизации и какую таблю поставить в качестве однозначной. надо разобраться и далее все просто (из личного опыта хождения по граблям)\r
\r
пока тябя не назвали "ГУРУ" не пеняй не на что и не на кого, только на себя тогда будет получаться...
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167771
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Jem
Честно говоря я вообще все меньше понимаю зачем использовать клиента ADP???
Понимание надо начинать не с ADP а c SQL. Клиент может быть не только на Access'e. Форум этому пример.
[Forms]![Главная]![Подчиненная]![подподчиненная].SetFocus
Вот это, скорее всего и не работает. Не зависит ADP или MDB.
Вот интересный момент, я нехочу в форме отображать ключевое поле, а ведь добавлять запись придется так Me!Поле=1
Access автоматически создает рекордсет по форме. Тут нету проблем. Поле не создаем, изменения будут в источнике строк.
Или может только у меня проблемы такие?
Судя по форуме, то нет. Но если сильно не умничать и работать с формой стандартными средствами (задать свойство RecordSource), то и проблем нет.
Кстати о Гетце та строчка подключения
Это пожалуйста поподробнее, что за фигня такая и зачем, есть же ActiveConnection.
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167800
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 V. Motchulsky\r
Вот интересный момент, я нехочу в форме отображать ключевое поле, а ведь добавлять запись придется так Me!Поле=1 \r
Access автоматически создает рекордсет по форме
\r
То есть вы всеже предлагаете использовать рекордсет? :)\r
\r
Кстати о Гетце та строчка подключения \r
Это пожалуйста поподробнее, что за фигня такая и зачем, есть же ActiveConnect
\r
Смотрите здесь\r
\r
Но если сильно не умничать и работать с формой стандартными средствами (задать свойство RecordSource), то и проблем нет \r
Это свойство задано там стоит имя ХП, не понимаю причем тут оно.\r
\r
Честно говоря я вообще все меньше понимаю зачем использовать клиента ADP??? \r
Понимание надо начинать не с ADP а c SQL
\r
:)) Согласен, но я говорю об ADP как о конкретном клиенте, и у меня есть конкретный пример, давайте обсуждение SQL и SQLServera отложим. Я приводил пример SQL для создания простейших таблиц и проседур, предлагаю и рассматривать этот простой пример, и обсудить все же ADP и Recordset.\r
2 incold \r
Чем код отличается от такого? \r
DoCmd.GoToRecord acDataForm, Me.name, acNewRec \r
Me.IdCust = 1 \r
Me.Summa = 350 \r
DoCmd.RunCommand acCmdSelectRecord \r
для чего использовать рекордсет?
\r
\r
Скажите плиз как перейти на запись в подподформе? \r
И по моему в приведенном мною случаи добавлять запись приведенным Вами способом не лучший выход.. Остается рекордсет. :)\r
\r
2 Вадя\r
\r
у Гетца есть фраза как написать команду синхронизации и какую таблю поставить в качестве однозначной. \r
У Гетца нету примера использования в качестве строки синхронизации ХП\r
Как это сделать мне сказали Pavel и inclod за что им и спасибо :)\r
\r
надо разобраться и далее все просто (из личного опыта хождения по граблям) \r
Разбираться тут особо не в чем я привел пример таблиц и пример кода который вызывает ошибку, писать всякие там new перед объявлением recordset _а или не писать, похоже на танцы шамана с бубном. Времени танцевать особо нету.\r
\r
На данном этапе, если у вас прокатил мой пример использования рекордсета в офисе XP, то мне ничего не остается как поискать новый офис (еще раз скажу о том что мой код работал на 2000) .\r
\r
А по поводу использования рекордсета будем ждать что ALL скажет далее, тема может получиться инетересной :)
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167836
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть вы всеже предлагаете использовать рекордсет? :)
Рекордсет на форме есть всегда, когда задано свойство RecordSource. Я не против рекордсета в принципе, но никак не пойму зачем его создавать вручную, затем привязывать к форме, потом по ниму шастать. В 99% случаев это нафиг надо. Форма, если она не ленточна, должна содержать 1 запись, а ленточная столько, сколько пользователь способен просмотреть без всякого поиска.
Смотрите здесь
Как только вижу где нибудь создаем рекордсет на основе таблицы и затем привязываем к форме, так дальше читать не хочется. (см. пару строк выше). И чем не нравится стандартное подключение Access'а, нет обязательно надо что-то там подправить, что бы затем бурно обсуждать.
Скажите плиз как перейти на запись в подподформе?
Все тоже DoCmd.GoToRecord. В вашем случае вопрос надо перефразировать -как правильно передать фокус подподформе. (Хотя насчет подподформы у меня некие сомнение, нафиг она вообще)
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167861
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 V. Motchulsky \r
чтобы затем бурно обсуждать. \r
Не обсуждайте вас никто не неволит.\r
Это интересно это ответ типа "нафиг оно все надо" или жизненная позиция?\r
Впрочем неважно.\r
\r
2 ALL.\r
Господа сделайте плиз тоже самое что сделал я, код я привел \r
здесь\r
Скажите у вас это работает?\r
incold пишет что у него работает без ошибки... \r
У меня такая ситуация:\r
SQLServer 2000 SP3a \r
W2KServer SP2\r
A2000 работает без ошибки, все проходит на ура\r
A2002 вызывает ошибку:\r
Текст: Key value for this row was changed or deleted at the data store. The local row is now deleted.\r
Номер: -2147217885\r
Еще раз скажу о том что запись при этом в таблицу добавляется.\r
\r
И вопрос такого плана, как добавить запись, без использования рекордсета (а именно значение первичного ключа связанной таблицы IDCust) в форму учитывая что форма табличная а поле со значение ключа отображаться не должно?
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32167871
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как добавить запись, без использования рекордсета
Повторюсь. Поле IDCust не создаем, на события перед обновлением пишем Me!IdCust=Parent.ID
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32168035
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Jem\r
писать всякие там new перед объявлением recordset _а или не писать, похоже на танцы шамана с бубном. Времени танцевать особо нету\r
я бы так не говорил. из опыта работы с Recorlcetclone вполне возможны всякие ньансы\r
посмотри /topic/33198\r
два варианта (про Long особый разговор) отличаются буквально мелочью а работаю тпо разному, хотя по логике должны работать одинаково.\r
это не шаманство, а просто недостаточно информации что и как работает. приходится некоторые вещи методом проб и ошибок узнавать.(метод научного тыка)\r
о Гетце.\r
у него есть много, что можно использовать. но оказывается есть и ошибки\r
(или непонимания. к примеру Bookmark и Long). \r
поделись улыбкою своей , и она не раз еще вернется ....
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32168106
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто-то может посчитать это шаманством..
для Recodset метод AddNew имеет еще одну форму записи
AddNew поле, значение
у меня оно работает.
rs.AddNew поле, значение
rs.Update

а так нет.
rs.AddNew
rs!поле= значение
rs.Update

кто проверит?
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32168117
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
???????????

а у меня и так заработало

rs.AddNew
rs!поле= значение
rs.Update
?
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32168302
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jem
На работе:
Сервер NT4 SP6 SQL 7.0 + Клиент A2000 - без ошибки/Клиент A2002 - с ошибкой.

Дома:
W98+SQLServer 2000 SP3a + A2002 SP2 - без ошибки


Что касается добавления записей в подформы:
1. По опыту скажу - двойное вложение форм очень плохо работает (с глюками) и очень неинформативно. Я отказался от подподформ.
2. Для программного добавления записи в подформу можно использовать несколько вариантов.
- даже если форма в табличном виде, все равно есть разделы данных/заголовок/примечание/заголовок страницы/примечание страницы.
можно сделать невидимым раздел примечания формы, вынести туда все ключевые поля, связанные с главной и на значения по умолчанию поставить ссылки на главную форму. Кстати, я всегда выношу ключевые поля на любую форму, видимое оно будет или нет - не важно. Например, может понадобится добавить кнопку с отчетом по текущей записи, тогда присутствие ключевых полей обязательно.
- как написал V. Motchulsky можно на событие перед вставкой прописывать значения ключевых полей.
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32168377
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 incold
проблемма решилась!!! Причем очень просто, правда решение родилось в результате экспериментов.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE PROCEDURE prTest
AS
SELECT dbo.MySale.Summa, dbo.MySale.IdCust, dbo.Cust.Name, DBO.MYSALE.IDSALE
FROM dbo.Cust INNER JOIN
dbo.MySale ON dbo.Cust.IdCust = dbo.MySale.IdCust

CREATE PROCEDURE prTest_resync @IdSale Int
AS
SELECT dbo.MySale.Summa, dbo.MySale.IdCust, dbo.Cust.Name, DBO.MYSALE.IDSALE
FROM dbo.Cust INNER JOIN
dbo.MySale ON dbo.Cust.IdCust = dbo.MySale.IdCust
WHERE (dbo.MySale.IdSale = @IdSale)


То есть после добавления ключевого поля таблицы со стороны многие (в коде показанно большими буквами), у меня заработал следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Кнопка6_Click()
Dim rst As ADODB.Recordset
Set rst = Me.Recordset
With rst
    .AddNew
    !IdCust =  1 
    !Summa =  350 
    .Update
End With
End Sub


Вот вроде и все. Access2002 сработал без ошибки. Access2000 не пробовал, но думаю сработает.
Сделать какой либо вывод, после проделанных мной опытов, и подвести черту под стрелкой, я не в состоянии уже. Одно могу сказать
похоже Вадя прав шаманский метод может прокатить.
После всего этого, я пересмотрел свой взгляд на рекордсет формы :)
Всем спасибо кто отклинулся на мой топик. Вообще на SQL.RU крутой форум и прикольные люди.
...
Рейтинг: 0 / 0
Стрелка на обуждение: Recordset формы в режиме ADP
    #32168791
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Jem
забыл поставить
set rst=Nothing
не есть истина, что акс при выходе из Sub сделает это сам. и если не сделать это много раз может оказаться , что у тебя не хватит памяти.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Стрелка на обуждение: Recordset формы в режиме ADP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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