|
|
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Alexey ShА что есть данные, что при использовании var=currentdb.openrecordset("select Name from Names")("Name") мусор остаётся? cм. начало топика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:10:52 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Сервиспаки на офис и Jet стоят? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:19:25 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Alexey ShСервиспаки на офис и Jet стоят? Если это по поводу 3сек VS 6сек то стоит пак на офис и mdac 2.8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:23:52 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
2 AlexJS: нет, я по поводу утечки памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:26:45 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Лох Позорный Что за бред вы тут понаписали??? Leniveccurrentdb это вообще очень гнусная вещь, советую ею не пользоваться, так как каждый currentdb приводит к открытию нового экземпляра базы данных Да ну? Во мля как бывает то можно писать настольные базочки и ржать себе тихонечко в уголочке над реальными вещами которые не замечаешь сам, а вот когда поработаешь на том уровне на котором мне приходится, тогда и начнеш замечать разные факты, которые не волнуют в других случаях на нашей программе, которая кстати сказать работает досихпор на 97 аксесе, работают такие крупные предприятия как электростанции РАО ЕС ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:34:00 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
автор на нашей программе, которая кстати сказать работает досихпор на 97 аксесе, работают такие крупные предприятия как электростанции РАО ЕС да ужж, атомные станции и ЦУП тож на ваших прогах работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:35:23 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Какова связь между элекстростанцией и CurrentDB ? Может имеется ввиду, что лучше писать Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:40:05 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
очень жалко РАО ЕЭС потому что там работают программисты, не понимающие разницы между открытием базы данных и созданием COM-объекта типа DAO.Database ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:40:24 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Лох Позорныйочень жалко РАО ЕЭС потому что там работают программисты, не понимающие разницы между открытием базы данных и созданием COM-объекта типа DAO.Database гы.. гы.. гы.. очень смешно а вы повсей видимости принимали участие в разработке програмных продуктов микрософт и знаете всю реализацию метода CurrentDB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:46:29 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Dbengine(0)(0) не всегда может содержать актуальную для вас версию базы данных, мы в своем проекте данную задачу решили с помощью самовосстанавливающего класса Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:50:39 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
а вы повсей видимости принимали участие в разработке програмных продуктов микрософт и знаете всю реализацию метода CurrentDB ОООооо По всей видимости вы принимали? про класс промолчу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:53:24 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
2 Lenivec : В в каком воркспэйсе транзакции запускаются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:59:25 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
По всей видимости вы принимали? я не принимал, но я и не леплю тут ересь про ком объекты про класс промолчу ага, лучше жевать чем говорить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:00:57 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
вы лепите ересь про открытие баз данных и "гнусную вещь CurrentDB" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:02:32 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
вы ещё подеритесь, горячие финские парни ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:04:13 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
я тут хохмы ради 100000 раз прогнал CurrentDB().Openrecordset и ни килобайта не утекло. CurrentDb() лучше присвоить переменной, ибо CurrentDB() это просто вызов метода Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:05:52 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Alexey Shя тут хохмы ради 100000 раз прогнал CurrentDB().Openrecordset и ни килобайта не утекло. CurrentDb() лучше присвоить переменной, ибо CurrentDB() это просто вызов метода Код: plaintext в данном простом случае на высоте оказался сборщик мусора и стойчески подчистил за тобой всю эту гадость а теперь по поводу присвоить переменной, что собственно собой и представляет класс, так трансляторы они обладают одной очень плохой особенностью, терять переменные из-за тех или иных сбоев в работе программы, собственно именно для того чтобы обезопасить себе от потере переменной и был реализован класс, который представляет собой ничто иное как глобальную переменную ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:18:56 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
хмм. Кстати немного по теме 1. смотрел я как то код Майкрософта в 97, так там любой If писался так If (MyBoolVar) Then 2. Известная фича 97 - отсутствие некоего вычисления выражения в IF в 97 может приводить к незакрытию Access If Me.chk Then - Access виснет If Me.chk = True Then - Access не виснет 3. () - тоже выражение. => если проверяте буленовы поля If CurDb.OpenRecordset("xxxx")("MyBool") Then - трудно сказать что тут может быть (по аналогии с глюком на If Me.chk Then) Мдя, с классом явно не возились. Он же инициируется при каждом к нему обращении. (можете написать внем Код: plaintext 1. 2. 3. 4. 5. я делаю такой класс с самоподхватом (инициализируется при первом обращении, или после необрабатываемой ошибки). Вот тогда он и есть самовосстанавливающаяся глобаль (не дергаемая лишний раз). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:27:24 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
2 Лох Позорный если интересно то посмотрите внимательно что будет происходить с коллекцией DBEngine(0).Databases при создании новых рекордсетов с помощью конструкций типа: Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. 6. а во втором случае все рекордсеты будут созданы в одном единственном экземпляре базы данных делайте выводы господа и попробуйте доказать мне что я не прав ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:30:46 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
1) Транслятор не может "потерять" переменную, речь может идти только об интерпретаторе Р-кода. 2) Мне неизвестны случаи пропажи значения переменных в VBA проекте, в концке концов объекты в VBA - это просто ссылки на IUnknown или IDispatch итерфейс. Либо переменной присвоили Nothing в коде, либо при выполнении случилась неперехваченная ошибка и пользователь вырал вариант "End" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:32:14 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
2 мдя это откуда же вас стоко умных программеров набралось обоснуйте пожалуйста товарьщь умник почему класс должен инициализироваться при каждом обращении к нему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:32:59 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
из хелпа к 2003 аксессу CurrentDb Method See AlsoApplies ToExampleSpecifics The CurrentDb method returns an object variable of type Database <mk:@MSITStore:dao360.chm::/html/daobjDatabase.htm> that represents the database currently open in the Microsoft Access window. expression.CurrentDb expression Required. An expression that returns one of the objects in the Applies To list. Remarks Note In Microsoft Access the CurrentDb method establishes a hidden reference to the Microsoft DAO 3.6 Object Library in a Microsoft Access database (.mdb). In order to manipulate the structure of your database and its data from Visual Basic, you must use Data Access Objects (DAO). The CurrentDb method provides a way to access the current database from Visual Basic code without having to know the name of the database. Once you have a variable that points to the current database, you can also access and manipulate other objects and collections in the DAO hierarchy <mk:@MSITStore:dao360.chm::/html/daconMSJetDatabaseEngine25.htm>. You can use the CurrentDb method to create multiple object variables that refer to the current database. In the following example, the variables dbsA and dbsB both refer to the current database: Dim dbsA As Database, dbsB As Database Set dbsA = CurrentDb Set dbsB = CurrentDb Note In previous versions of Microsoft Access, you may have used the syntax DBEngine.Workspaces(0).Databases(0) or DBEngine(0)(0) to return a pointer to the current database. In Microsoft Access 2000, you should use the CurrentDb method instead. The CurrentDb method creates another instance of the current database, while the DBEngine(0)(0) syntax refers to the open copy of the current database. The CurrentDb method enables you to create more than one variable of type Database that refers to the current database. Microsoft Access still supports the DBEngine(0)(0) syntax, but you should consider making this modification to your code in order to avoid possible conflicts in a multiuser database (multiuser (shared) database: A database that permits more than one user to access and modify the same set of data at the same time.). If you need to work with another database at the same time that the current database is open in the Microsoft Access window, use the OpenDatabase <mk:@MSITStore:dao360.chm::/html/damthOpenDatabase.htm> method of a Workspace <mk:@MSITStore:dao360.chm::/html/daobjWorkspace.htm> object. The OpenDatabase method doesn't actually open the second database in the Microsoft Access window; it simply returns a Database variable representing the second database. The following example returns a pointer to the current database and to a database called Contacts.mdb: Dim dbsCurrent As Database, dbsContacts As Database Set dbsCurrent = CurrentDb Set dbsContacts = DBEngine.Workspaces(0).OpenDatabase("Contacts.mdb") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:34:52 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Alexey Sh1) Транслятор не может "потерять" переменную, речь может идти только об интерпретаторе Р-кода. 2) Мне неизвестны случаи пропажи значения переменных в VBA проекте, в концке концов объекты в VBA - это просто ссылки на IUnknown или IDispatch итерфейс. Либо переменной присвоили Nothing в коде, либо при выполнении случилась неперехваченная ошибка и пользователь вырал вариант "End" полность согласен в моем случае это второй вариант, так как проект большой и разрабатываю его не один я, а заставить писать чистый код у меня никаких рычагов нету ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:37:11 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
По поводу инициализации класса. Код: plaintext 1. 2. Класс будет инициализироваться при первом вызове метода Если проект сбросится - Run->Reset или End - произойдёт новая инициализация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:43:00 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Lenivec2 мдя это откуда же вас стоко умных программеров набралось обоснуйте пожалуйста товарьщь умник почему класс должен инициализироваться при каждом обращении к нему Вы читать умеете, вумник, ля? Напишите то, что предлагалось в ветку #If и спросите пяток раз ?МойКласс.МояБаза.Name 97 запустит Initialize на каждое обращение, муд..рец вы наш. Я просто наблюдал это по факту. Или вы сначала присваиваете обычной глобали Public vМойКласс AS МойКласс ... и где то при загрузке ее инициализируете Set vМойКласс = МойКласс а обращаетесь в коде уже не к классу а к переменной его типа ?vМойКласс.МояБаза.Name ??? только зачем вам тогда класс - это и обычным модулем делается (С теми же проверками ... IS Nothing ) ps (как и думал - Alexey Sh предлагает обращаться не к классу а к некой глобали с типом класса - что несколько разные вещи). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:49:32 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32817327&tid=1669899]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 367ms |

| 0 / 0 |
