|
|
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
Проблема уже несколько раз развивалась в разных топиках Предлагаю отделить эту тему. Речь идет только о режиме SQL+ADP Кто за и кто против? А главное почему? Почему я против: - чем меньше кода на VBA, отвечающего за бизнес логику работу системы, тем лучше. Конечно не всегда получается, но нужно максимально обработку логики сносить на сервер. Почему: когда у тебя локальная сетка из 10 машин, то клиента обновить раз плюнуть, а когда несколько сот, да еще некоторые работают по выделенным каналам из других офисов - заколебаешься. А на сервере скриптик запустил с обновлением процедуры и все. - при работе с объектом Recordset формы получаем цепочку для работы с данными SQL-ADO-Recordset-Record зачем??? когда можно Forms!Form1!Field1 или запуск хранимой процедуры (если же нужны какие-то действия "за спиной" пользователя) есть еще, но не все сразу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 18:33 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
Присоединяюсь. Пока понял лиш один ответ на почему - обчитались Гетца. Помню вторую версию Аксес, но до появления ADP что-то серезное сделать - сложно даже представить. Боюсь серьезных ответов на вопрос "почему" не последует. А хранимые процедуры с идеологии "старых аксесовцов" выпадают, им подавай рекордсеты, рекордсеты и еще раз рекордсеты. Вместо того, что бы сделать поиск на сервере, грузят все на клиента, затем делают Seek'ы, Find'ы и прочие извращения. Вместо того, чтобы сделать Update таблицы, делают что-то на клиенте, что всеравно должно в конце-концов привести к тому же Update. Для всех противников рекомендую взять для начала книжечку по SQL и понять идеологию, ибо она начально не от M$ и понять ее на основе Аксеса первоначально тяжеловато. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 00:17 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
incold, вопрос "за" - "против" - дурацкий вопрос. Из-за таких вопросов начилась война между лилипутами, котрые разбивали яйцо с острого конца и теми кто разбивал с тупого Каждому - свое. Где без рекодсетов не обойтись, а где они и на хрен не нужны. Если знаешь точно, что здесь не нужен рекодсет - подскажи человеку. 2V. Motchulsky >Пока понял лиш один ответ на почему - обчитались Гетца Я хоть и обещал побить Гетца при встрече, но другим его обижать не дам. Он мой! Кто тронет, того на стрелку на трамвайной остановке А вообще, если Гетц что-то написал, это не значит что это истина и именно так надо делать. Просто в книге 1000 страниц информации, а как мы ее употребим, это личное дело каждого. >А хранимые процедуры с идеологии "старых аксесовцов" выпадают Лично я с тобой полность согласен по поводу не использования или неправильного использования возможностей клиент-серверных технологий акесниками. Просто надо помнить, все мы начинали с файл-серверных технолгий: mdb+mdb. От туда и тянуться анархонизмы. Хотя мне почему-то технология "клиент-сервер" дискомфорта не доставляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 09:37 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
Может быть "за" и "против" - это и дурацкий вопрос...даже скорее всего так и есть. Просто смотрю на форум, и вижу, что очень многие имея опыт разработок на аксес начинают переделывать под сиквел. При этом продолжая использовать старые приемы программирования. Как в фильме "Гараж": "Подумайте, человеки! Опомнитесь!" Такое впечатление, что для многих сиквел - просто более надежная MDB с таблицами, которая значительно реже вылетает и может обрабатывать б о льшие объемы данных. Я поднял эту тему, скорее для того, чтобы аксесники сначала подумали нужно ли переходить на работу с сиквелом, и если нужно, то как минимум почитать что-нибудь по разработке баз данных для клиент-серверных приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 10:48 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
простите, я опять спрошу про "Гетца часть2 " в нём хорошо и правильно расписано как програмить акес для adp ? или там набор фичей, а в общем и с начала нет ничего? хочу купить просто 2-ую часть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 11:09 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
хорошая прога та где грамотно сочетается всё ( если прогаделатель умеет всё) главное чтоб удобно для клиента, быстрая, малая по весу и читабельна для того же прогоделателя. если бы можно в аксе организовавать dll (а не только готовые включать) или куски на ассемблере включать я бы и это использовал. лишь бы решить все проблемы. многие вещи проще и быстрее делаются на клиенте, многие на сервере. при этом надо учитывать и сетевой трафик. нефик гонять полуфабрикаты данных (типа "динамическая фильтрация" в одном из топиков). а есть и вещи которые можно сделать только совместо сервер+клиент. чем больше умеешь тем проще получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 13:12 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
Еще одно заблуждение - для сервера нужен мощный компютер, или надо что-то делать на клиенте, чтобы разгрузить сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:37 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
2V. Motchulsky согласен уточнение: на клиенте надо делать чтобы комлекс работал лучше а не чтоб разгрузить сервер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:44 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
Пока понял лиш один ответ на почему - обчитались Гетца. Понял больше - обчитались Гетца, часть 1, а про ADP - часть 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:50 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
многие вещи проще и быстрее делаются на клиенте Это какие например? Только применительно к данным, пожалуйста, а не к формам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:52 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
имеется в иду не обработка данных а составление проги. если бы был какой-нибудь редактор для ХП (а не встроенный в акс NOTEPAD) тогда можно былобы ХП более оперативно сочинять. а с точки данных - от сервера главное отдать запрошенный набор записей. если сервер отдает > 500 (max 1000) записей по моему просто не правильно поставлено правило отбора. просто просматривать большой обёъм глупое занятие. а визуально выбирать можно в приделах ~ 500 строк. и в таком объёме на клиенте можно использовать все варианты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 20:09 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
И все же если бы не было глюков в recordset_е формы то было бы не плохо, господа. Хотя бы для перемещения по записям формы, или поиск строки в форме используя тот же recordsetclone, я конечно не говорю про перекачку данных на клиент и поиск нужной инфы. Вы конечно правы что многие (в том числе и я) переходят на SQLServer бросив JET, возможно что тащу за собой воз гимора, но надеюсь от него избавиться. Честно говоря я вообще все меньше понимаю зачем использовать клиента ADP??? Я правда до отчетов не дошел еще но чую гимор будет и там. Что касается своего раннего топика то я так и не решил проблему :( Кстати еще раз все спасибо за участие и особенно за разъяснение принципа действия строки синхронизации. Во первых я чего то не пойму принципа по которому осуществляется переход по команде DoCmd.GotoRecord. Дело в том что у меня форма подчиненная это раз. я делал так: [Forms]![Главная]![Подчиненная]![подподчиненная].SetFocus Docmd.GotoRecord ,,acNewRec Если подчиненная одна то вроде прокатывало а вот с подподчиненной формой не прокатило, дальше эксперементировать не успел меня выглнали на выходные :(( Дальше еще один момент Мне надо добавить запись в форму (AcNewRec) В новой записи, для сохранения целостности надо добавить значение ключа другой таблицы. Вот интересный момент, я нехочу в форме отображать ключевое поле, а ведь добавлять запись придется так Me!Поле=1 Соответсвенно сделать бы поле невидимым, дак форма у меня табличная!! Заморозить границы полей и сдеалть ширину ключевых полей равными нулю? дак юзверя так не хотят, они привыкли границы двигать :) Ну и как быть? Работал бы нормально рекордсет формы, и с перемещения по полям все понятно было бы, и с добавление в набор записей (даже тех что в форме не отображены) проблем бы не было. Или может только у меня проблемы такие? А вообще время поджимает а еще и конь не валялся :(( Ошибку свою я искал на MSDN по номеру, но не нашел. Может потому она что у меня офис XP на Win2KServer поставлен, или офис кривой... мда... Блин работал бы рекордсет все решилось бы уже !! :) В 2000 работал но там сумма по табличной форме не считалась!! Блин ну ексесс ну ексесс!! Кстати о Гетце та строчка подключения которую он в своей книге советует у меня не редактируемый набор возвращает как в 2000 (я уже поднимал топик) так и в XP проверял пять раз! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 21:02 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
2Jem\r глюк с Recordset скорее всего из-за неправильного его использования.\r вот тут \r /topic/33198\r небольшое наблюдение по RecordsetClone. я тоже думал что глюк. а на самом деле необходимо более грамотно использовать. к сожалению не все описано даже у Гетца. пробуй даже на первый взгляд одинаковые варианты даю разные результаты.\r кстати у Гетца есть фраза как написать команду синхронизации и какую таблю поставить в качестве однозначной. надо разобраться и далее все просто (из личного опыта хождения по граблям)\r \r пока тябя не назвали "ГУРУ" не пеняй не на что и не на кого, только на себя тогда будет получаться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 21:20 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
> Jem Честно говоря я вообще все меньше понимаю зачем использовать клиента ADP??? Понимание надо начинать не с ADP а c SQL. Клиент может быть не только на Access'e. Форум этому пример. [Forms]![Главная]![Подчиненная]![подподчиненная].SetFocus Вот это, скорее всего и не работает. Не зависит ADP или MDB. Вот интересный момент, я нехочу в форме отображать ключевое поле, а ведь добавлять запись придется так Me!Поле=1 Access автоматически создает рекордсет по форме. Тут нету проблем. Поле не создаем, изменения будут в источнике строк. Или может только у меня проблемы такие? Судя по форуме, то нет. Но если сильно не умничать и работать с формой стандартными средствами (задать свойство RecordSource), то и проблем нет. Кстати о Гетце та строчка подключения Это пожалуйста поподробнее, что за фигня такая и зачем, есть же ActiveConnection. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 23:23 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
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 скажет далее, тема может получиться инетересной :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2003, 08:43 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
То есть вы всеже предлагаете использовать рекордсет? :) Рекордсет на форме есть всегда, когда задано свойство RecordSource. Я не против рекордсета в принципе, но никак не пойму зачем его создавать вручную, затем привязывать к форме, потом по ниму шастать. В 99% случаев это нафиг надо. Форма, если она не ленточна, должна содержать 1 запись, а ленточная столько, сколько пользователь способен просмотреть без всякого поиска. Смотрите здесь Как только вижу где нибудь создаем рекордсет на основе таблицы и затем привязываем к форме, так дальше читать не хочется. (см. пару строк выше). И чем не нравится стандартное подключение Access'а, нет обязательно надо что-то там подправить, что бы затем бурно обсуждать. Скажите плиз как перейти на запись в подподформе? Все тоже DoCmd.GoToRecord. В вашем случае вопрос надо перефразировать -как правильно передать фокус подподформе. (Хотя насчет подподформы у меня некие сомнение, нафиг она вообще) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2003, 12:03 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
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) в форму учитывая что форма табличная а поле со значение ключа отображаться не должно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2003, 13:39 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
как добавить запись, без использования рекордсета Повторюсь. Поле IDCust не создаем, на события перед обновлением пишем Me!IdCust=Parent.ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2003, 14:19 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
2Jem\r писать всякие там new перед объявлением recordset _а или не писать, похоже на танцы шамана с бубном. Времени танцевать особо нету\r я бы так не говорил. из опыта работы с Recorlcetclone вполне возможны всякие ньансы\r посмотри /topic/33198\r два варианта (про Long особый разговор) отличаются буквально мелочью а работаю тпо разному, хотя по логике должны работать одинаково.\r это не шаманство, а просто недостаточно информации что и как работает. приходится некоторые вещи методом проб и ошибок узнавать.(метод научного тыка)\r о Гетце.\r у него есть много, что можно использовать. но оказывается есть и ошибки\r (или непонимания. к примеру Bookmark и Long). \r поделись улыбкою своей , и она не раз еще вернется .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2003, 10:37 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
кто-то может посчитать это шаманством.. для Recodset метод AddNew имеет еще одну форму записи AddNew поле, значение у меня оно работает. rs.AddNew поле, значение rs.Update а так нет. rs.AddNew rs!поле= значение rs.Update кто проверит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2003, 17:19 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
??????????? а у меня и так заработало rs.AddNew rs!поле= значение rs.Update ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2003, 19:53 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
2 Jem На работе: Сервер NT4 SP6 SQL 7.0 + Клиент A2000 - без ошибки/Клиент A2002 - с ошибкой. Дома: W98+SQLServer 2000 SP3a + A2002 SP2 - без ошибки Что касается добавления записей в подформы: 1. По опыту скажу - двойное вложение форм очень плохо работает (с глюками) и очень неинформативно. Я отказался от подподформ. 2. Для программного добавления записи в подформу можно использовать несколько вариантов. - даже если форма в табличном виде, все равно есть разделы данных/заголовок/примечание/заголовок страницы/примечание страницы. можно сделать невидимым раздел примечания формы, вынести туда все ключевые поля, связанные с главной и на значения по умолчанию поставить ссылки на главную форму. Кстати, я всегда выношу ключевые поля на любую форму, видимое оно будет или нет - не важно. Например, может понадобится добавить кнопку с отчетом по текущей записи, тогда присутствие ключевых полей обязательно. - как написал V. Motchulsky можно на событие перед вставкой прописывать значения ключевых полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 11:10 |
|
||
|
Стрелка на обуждение: Recordset формы в режиме ADP
|
|||
|---|---|---|---|
|
#18+
2 incold проблемма решилась!!! Причем очень просто, правда решение родилось в результате экспериментов. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. То есть после добавления ключевого поля таблицы со стороны многие (в коде показанно большими буквами), у меня заработал следующий код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Вот вроде и все. Access2002 сработал без ошибки. Access2000 не пробовал, но думаю сработает. Сделать какой либо вывод, после проделанных мной опытов, и подвести черту под стрелкой, я не в состоянии уже. Одно могу сказать похоже Вадя прав шаманский метод может прокатить. После всего этого, я пересмотрел свой взгляд на рекордсет формы :) Всем спасибо кто отклинулся на мой топик. Вообще на SQL.RU крутой форум и прикольные люди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 12:05 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32168035&tid=1681405]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 326ms |

| 0 / 0 |
