|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Может кто попробует с разными вариантами свойства "Разрешить изменения макета"? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 14:37 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Guest33Может кто попробует с разными вариантами свойства "Разрешить изменения макета"? в 97м такого св-ва нет ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 14:52 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
ё...гм-гм, я вот тоже всегда считал что это одно и тоже... но, какгрится - "практика критерий истины" , так вот - с "практикой" - что-то не то... Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
ПМСМ ни чего удивительного, вы подменили исходную тему между Me.Form.RecordSource и Me.RecordSource нет никакой разницы просто Form это дефолтное проперти класса Form_XXXX. для аналога сравните Debug.Print ObjPtr(Me.Recordset), ObjPtr(Me.Form.Recordset) т.е Ме - это ссылка на объект класса Form_XXXX а сам Form это отдельный объект например создайте в модуле формы паблик проперти и попробуйте к нему обратится me.myproperty и me.form.myproperty ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 14:55 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
khaё...гм-гм, я вот тоже всегда считал что это одно и тоже... но, какгрится - "практика критерий истины" , так вот - с "практикой" - что-то не то... Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
ПМСМ ни чего удивительного, вы подменили исходную тему между Me.Form.RecordSource и Me.RecordSource нет никакой разницы просто Form это дефолтное проперти класса Form_XXXX. для аналога сравните Debug.Print ObjPtr(Me.Recordset), ObjPtr(Me.Form.Recordset) т.е Ме - это ссылка на объект класса Form_XXXX а сам Form это отдельный объект например создайте в модуле формы паблик проперти и попробуйте к нему обратится me.myproperty и me.form.myproperty тоже склонялся к такому выводу, таки Me - ссылка на текущий экземпляр класса, разницы нет и в последующем, но надо отдавать должное тому, что экземпляров может быть и более 1го. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 15:00 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
kha просто Form это дефолтное проперти класса Form_XXXX. для аналога сравните Debug.Print ObjPtr(Me.Recordset), ObjPtr(Me.Form.Recordset) т.е Ме - это ссылка на объект класса Form_XXXX а сам Form это отдельный объект например создайте в модуле формы паблик проперти и попробуйте к нему обратится me.myproperty и me.form.mypropertyО, ну вот и объяснения. Спасибочки. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 15:08 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Озверин, да- экземпляров может быть более одного, в чем противоречие? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 15:08 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
khaПМСМ ни чего удивительного, вы подменили исходную тему между Me.Form.RecordSource и Me.RecordSource нет никакой разницы просто Form это дефолтное проперти класса Form_XXXX. для аналога сравните Debug.Print ObjPtr(Me.Recordset), ObjPtr(Me.Form.Recordset) вот поэтому, я ничего ни про RecordSource, ни про Recordset - ни говорил вопрос был в том - почему ObjPtr(Me), ObjPtr(Me.Form) - возвращают разное значение ответ - вот поэтому Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3.
а сам Form это отдельный объект т.е. Me - это ссылка на текущую форму в виде элемента коллекции Forms а сам Me.Form - ссылка непосредственно на объект форма ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 15:39 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
ё, я не знаю внутреннего устройства аксес, поэтому может скажу ерунду класс Form_XXXX какбы наследуется от класса ХХХХ , где ХХХХ-имя какой - то формы, по этому используюя Me.property мы можем обращаться к свойствам формы в текущем экземпляре ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 16:02 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
ё, таки Me - это ссылка на экземпляр класса( коих, может быть и более одного) а Me.Form - это ссылка на обьект "форма".(контролы, модуль и тд) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 16:06 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Сравнение ObjPtr(Me) с ObjPtr(Me.Form) - сравнение тёплого с мягким, так как Me и Me.Form имеют разные типы: ИмяVBAПроекта.Form_XXX и Access.Form. Объект может реализовывать разные интерфейсы, и возвращать ссылки на разные интерфейсы (но при вызове членов этих разных интерфейсов код этих членов будет обращаться к внутренним данным одного объекта). Для иллюстрации покажу на обычных классах. Класс BaseClass: Код: plaintext 1.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 16:18 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Озверинё, таки Me - это ссылка на экземпляр класса( коих, может быть и более одного) а Me.Form - это ссылка на обьект "форма".(контролы, модуль и тд) и то, и другое - ссылка на экземпляр класса я ж уже сегодня "публиковал" свои "игры" с экземплярами вот ещё раз - все значения ObjPtr(F) и ObjPtr(F.Form) (в моём букваре - это называется, цитирую - "указатель на объект(адрес объекта в памяти)" - за точность формулировки - отвечать не берусь, но смысл - очевиден) уникальны Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 16:20 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
БенедиктСравнение ObjPtr(Me) с ObjPtr(Me.Form) - сравнение тёплого с мягким...Ну вот и тяжёлая артиллерия :) Спасибо за разъяснения. зы. авторОбъект может реализовывать разные интерфейсы, и возвращать ссылки на разные интерфейсы (но при вызове членов этих разных интерфейсов код этих членов будет обращаться к внутренним данным одного объекта). Читал это как тост (или как два тоста:). Если бы не пример, так бы и не понял, с кем это разговаривают :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2010, 13:23 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
БенедиктМораль: сравнивайте ссылки, приведённые к одному типу, причём не к Object. а точнее - сравнивать можно только IUnknown ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2010, 17:31 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
adv, "Тост должен быть короткий, как выстрел" (c) Ну, или как дуплет Как настоящий тост не всегда обращён к кому-то лично, так и этот "тост" был обращён к аудитории, сравнивающей указатели разных типов. Изопропил, по спецификации COM - безусловно, и я хотел включить это в пример. Но пришлось бы либо вызывать IUnknown::QueryInterface() самому (а вызов функции по адресу в VBA удовольствие сильно ниже среднего), либо включать в проект библиотеку типов, содержащую описание IUnknown (что во многом предпочтительнее, учитывая наличие, например, отличной библиотеки OLELIB.TLB ). Поэтому, IMHO, приведение к (самому) специализированному типу, хоть и ленивый, но достаточно практичный способ для сравнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2010, 22:08 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Впрочем, к чему эти сложности? Есть же оператор Is. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2010, 22:16 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Бенедикт, вот сделал аналогично Вашему, пример с формой, получил такой же результат (кто бы сомневался)) ) vba Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Код: plaintext 1. 2. 3. 4.
...но как бы - результат - есть, понимания его - нет если Вас не затруднит, ответьте ещё на несколько вопросов что бы пояснить откуда "растут ноги у непонимания" ещё один небольшой пример delphi Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
вот здесь - мне всё ясно и "прозрачно": объектная переменная - это ссылка на объект - соответственно, так как объект - один и тот же, то и значения этих ссылок (Значения) у всех объектных переменных (вне зависимости от типа) - одинаковые (вот нечто подобное, я ожидал от ObjPtr) хотя адрес - разный но я никак не могу проследить аналогии между результатом в delphi и в vba какой, вообще физический смысл у ObjPtr ? , т.е. - что обозначают все эти "цифири" я ориентировался на то определение ObjPtr, которое уже приводил ё(в моём букваре - это называется, цитирую - "указатель на объект (адрес объекта в памяти)" - за точность формулировки - отвечать не берусь, но смысл - очевиден) (вопрос: неправильное определение? как правильно ?) из чего делал, как мне казалось, вполне логически правильный вывод, что если результат возвращаемый ObjPtr, для 2-х объектных переменных (в частности - для объектного свойства) - разный, то и объекты - разные (вопрос: вывод не правильный ?..ну тут уже понятно - да, неправильный) Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2010, 15:05 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
ё, Про физический смысл у ObjPtr. ObjPtr() возвращает адрес блока памяти такой структуры: Код: plaintext 1. 2. 3.
Код: plaintext 1. 2. 3. 4. 5. 6.
Теперь, быть может не совсем плавно, перейдём к вопросу – как это, результат ObjPtr() разный, а объект (экземпляр компонента) один? Или наоборот, запросили указатели на разные интерфейсы у экземпляра компонента, и получили одинаковые значения этих указателей? Если совсем кратко, такие особенности – детали реализации компонента, и не более, на которые нельзя (формально) закладываться. Теперь подробнее. Пусть мы пишем компонент, который должен реализовать три интерфейса: IUnknown, IX и IY. IX наследует IUnknown и добавляет свой метод x(), IY наследует IX и добавляет свой метод y(). Таким образом, для IUnknown в таблице виртуальных функций должно быть 3 указателя: на QueryInterface(), AddRef(), Release(); для IX – 4: на QueryInterface(), AddRef(), Release(), x(); для IY – 5: на QueryInterface(), AddRef(), Release(), x(), y(). И тут возникает два соблазна (следовало бы взять в кавычки, так как человек редко кодирует эти вещи вручную, здесь речь скорее о компиляторе) на почве оптимизации. Соблазн первый – объединить таблицы виртуальных функций, т. е. иметь 1 массив из 5 элементов, а не 3 в общей сложности из 12-ти. Но это довольно безобидно, как говорилось, таблица виртуальных функций может использоваться совместно. Соблазн второй – объединить указатели на таблицу виртуальных функций, раз уж сами таблицы объединены. Таким образом, даже для такого простого случая взаимоотношений реализуемых компонентом интерфейсов, имеем два экстремальных варианта (а в компоненте могут быть реализованы и промежуточные, и "боковые"): 1) Для независимых таблиц виртуальных функций область памяти экземпляра может описываться структурой: Код: plaintext 1. 2. 3. 4. 5.
Код: plaintext 1. 2. 3.
Честно говоря, не уверен, что ответил на все заданные вопросы, но голова в настоящий момент уже не варит. Лучше задайте ещё раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2010, 04:19 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Кстати есть разница между таким: Me.OrderList.Form.Requery (так обновляется лучше, надёжнее что-ли) и таким: Me.OrderList.Requery Почему так:) ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2010, 05:00 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
NeboКстати есть разница между таким: Me.OrderList.Form.Requery (так обновляется лучше, надёжнее что-ли) и таким: Me.OrderList.Requery f1The Requery method updates the data underlying a specified form or a control that's on the active form by requerying the source of data for the form . В примере первый случай - requerying the source of data for the form второй - or control Работать должно и так и так, поскольку форма помещена в контрол. (Я пользуюсь первым вариантом ;) А вот, например, Me.OrderList.Recordset работать не будет, поскольку у контрола, в который помещена подчинённая форма нет рекордсета, есть он только у помещённой формы: Me.OrderList.Form.Recordset. Тоже относится и к обращению к контролам ПФ. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2010, 10:55 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
adv, Спасибо:) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2010, 13:04 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
о, только сейчас заметил, что недоцитировал ф1ф1The Requery method updates the data underlying a specified form or a control that's on the active form by requerying the source of data for the form or control . ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2010, 13:22 |
|
|
start [/forum/topic.php?fid=45&msg=36916014&tid=1629950]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 262ms |
total: | 395ms |
0 / 0 |