powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / FAQ. А почему у меня перестало работать...
25 сообщений из 225, страница 3 из 9
FAQ. А почему у меня перестало работать...
    #32236659
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Кстати: q.close - это лишнее. У QueryDef нет ни Open, ни Close.
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32236717
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Саныч
>Кстати: q.close - это лишнее. У QueryDef нет ни Open, ни Close.

Open нет, а Close есть. Так что ничего лишнего :)

>Это ведь действует только на данную аппликацию (а не на весь Аксесс) и только у заказчика (который в сам Аксесс не лезет).

Действует только на проект. Но, во-первых, сам разработчик может напороться (случайно нажать DEL на таблице, например, - кхе-кхе: сам как-то попался :), да и премудрый оператор - то же, если до Окна дорветься.

2Sfagnum
>Ну вот и объяснишь почему, а то услышат где на углу и давай внедрять, до SQL.Ru ни х.. не знают...

Какой такой угол?
Ты же сслыку сам запостил. ТТам мой пост от "Дата: 31 июл 03, 10:44"?
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32236763
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Open нет, а Close есть. Так что ничего лишнего :)

Помню, когда наша фирма только начинала работать на Аксессе, мы получали какую-то брошюрку от Майкрософта. Там была статья под заголовком: "Не закрывайте то, чего не открывали!"

Кроме того, вот что написано в хелпе: Closing an open object removes it from the collection to which it's appended. Это ведь не то, что мы хотим?

> Но, во-первых, сам разработчик может напороться

Надо делать так: If DevelopEnvir Then..., где DevelopEnvir - это какая-нибудь функция, которая может, например, обращаться к ini.

> да и премудрый оператор - то же, если до Окна дорветься.

А ему не надо прав давать на уничтожение объектов. А то он и получит MsgBox на подтверждение, и ответит "да".
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32236974
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Виктор, хочу твою реакцию. Надо родить истину.
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32237158
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Саныч
>Кроме того, вот что написано в хелпе: Closing an open object removes it from the collection to which it's appended. Это ведь не то, что мы хотим?

Все-таки Close есть, сейчас некогда MSDN копать, но если есть Закрыть, то что-то его и открывает. Я думаю: Set q=CurrentDb. Open QueryDefs(...)
Но это все домыслы. Надо MSDN рыть. Хотя надо попробовать сделать Set, затем точку останова и посмотреть на блокировки

>Надо делать так: If DevelopEnvir Then..., где DevelopEnvir - это какая-нибудь функция, которая может, например, обращаться к ini.
>А Оператору не надо прав давать на уничтожение объектов. А то он и получит MsgBox на подтверждение, и ответит "да".

Саныч, все-таки это лишнее - трогать глобальные (для проекта) свойства. Мое (сугобо личное и не обязательно близкое к правде - о как завернул :) - трогать не надо.

>Надо родить истину.

Тут уже не о истине идет речь, а о привычках, стили программирования. Лично мне - не нравиться (так и запишите в протокол )
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32237410
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senin Viktor писал:2Sfagnum
>Ну вот и объяснишь почему, а то услышат где на углу и давай внедрять, до SQL.Ru ни х.. не знают...

Какой такой угол?
Ты же сслыку сам запостил. ТТам мой пост от "Дата: 31 июл 03, 10:44"?
Нуу.... там больше эмоций нежели обоснований, эти бы довады да по формальнее, и обоснований
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32237936
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Все-таки Close есть, сейчас некогда MSDN копать,

Оно есть, это факт. Но я не понимаю, что оно делает. Неужели удаляет запрос из коллекции QueryDefs?

> но если есть Закрыть, то что-то его и открывает. Я думаю: Set q=CurrentDb.OpenQueryDefs(...)

Ноу, сэр. (Или: Но, но, но, но, сеньор.) QueryDefs - это всего лишь название коллекции, в которой содержатся все запросы. CurrentDb.QueryDefs(...) - это просто такая же ссылка на запрос, как и q. Она ничего не открывает.

> Хотя надо попробовать сделать Set, затем точку останова и посмотреть на блокировки

Какие блокировки???

> все-таки это лишнее - трогать глобальные (для проекта) свойства.

Что значит трогать? Они для того и существуют, чтобы их задавать и конфигурировать. Неужели нельзя задать для данного mdb свою конфигурацию настроек?
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238010
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как хотите...

==
попробую покапать глубже
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238021
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Это был ответ на который из моих вопросительных знаков? :^)
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238038
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Саныч
>Это был ответ на который из моих вопросительных знаков? :^)

На "Они для того и существуют, чтобы их задавать и конфигурировать"
На "Какие блокировки???"
На "это просто такая же ссылка на запрос, как и q. Она ничего не открывает."

:)
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238039
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
:^) Спасибо.
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238044
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всегда пожалуйста


==
Я еще к этой теме, наверное, вернусь
Разгребу дела, найду время на MSDN и тогда продолжим
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238113
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ОК, тогда пока не будем торопиться с публикацией этого фака.
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238175
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Саныч

Ну почему же не публиковать?
Можно - все же верно, а Close/Nothing - это из области наших прошлых (и будующих) сражений по поводу надо ли деладть деинициализацию объектных переменных, если они и так выйдут из области видимости процедуры и уничтожаться VBA)
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238216
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Ну почему же не публиковать?

Так ведь нет окончательной формулировки.

> а Close/Nothing - это из области наших прошлых (и будующих) сражений по поводу надо ли деладть деинициализацию объектных переменных, если они и так выйдут из области видимости процедуры и уничтожаться VBA

Деинициализацию делать надо, с этим у меня полное единогласие. Но я не понимаю, что такое Close применительно к QueryDef. Писать его или не писать. Если мы рекомендуем его писать, то нам самим надо понять, что оно делает.
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238235
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я сейчас поставил эксперимент.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub tryQ()

Dim q As QueryDef, rs As Recordset

Set q = CurrentDb.QueryDefs( "Query3" )
q.Parameters( 0 ).Value =  1 
Set rs = q.OpenRecordset
Stop

End Sub


Запустил это, дошел до Stop и стал смотреть в Debug Window:

Код: plaintext
1.
2.
3.
?q.Parameters( 0 )
  1  
?rs.Fields( 0 )
  1  


Все ОК. Потом сделал q.Close и снова стал смотреть. И ничего не изменилось! То есть q.Close ничего не делает, даже не стирает значения, присвоенные параметрам запроса, и не уничтожает рекордсет, открытый на запросе.
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238249
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(к моему сожалению главного справки по DAO SDK у меня нет - там есть (дложно?) быть более полное освещение

проблемы)


из справки Акеса:
Код: plaintext
1.
2.
3.
4.
Close method:
Closes an open DAO object (DAO object:An object that is defined by the Data Access Objects (DAO) library. You 
can use DAO objects, such as the Database, TableDef, Recordset, and QueryDef objects, to represent objects 
that are used to organize and manipulate data, such as tables and queries, in code.)


Далее идут чудеса ввиду отсуствия упоминания QueryDef :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
The object placeholder is an object variable that represents an open Connection, Database, Recordset, or 
Workspace object.

Remarks

Closing an open object removes it from the collection to which it's appended. Any attempt to close the default 
workspace is ignored.


А теперь и далеее только MSDN:

Есть пример Close который вызываеться после операции Delete
(ms-help://MS.MSDNQTR.2003APR.1033/bapp2000/html/acbachap06.htm)
Код: 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.
Sub AddQuery()
Dim dbsNorthwind As DAO.Database
Dim qdfSalesReps As DAO.QueryDef
Dim rstSalesReps As DAO.Recordset
On Error GoTo ErrorHandler
   Set dbsNorthwind = CurrentDb
   Set qdfSalesReps = dbsNorthwind.CreateQueryDef( "SalesRepQuery" )
   qdfSalesReps.SQL =  "SELECT * FROM Employees WHERE Title = "  & _
                       "'Sales Representative'" 
   Set rstSalesReps = qdfSalesReps.OpenRecordset()
   'Call the function to add a constraint.
   AddQueryFilter rstSalesReps
   'Return database to original.
   dbsNorthwind.QueryDefs.Delete  "SalesRepQuery" 

   rstSalesReps.Close
   qdfSalesReps.Close '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   dbsNorthwind.Close
   Set rstSalesReps = Nothing
   Set qdfSalesReps = Nothing
   Set dbsNorthwind = Nothing
   Exit Sub
ErrorHandler:
   MsgBox  "Error #: "  & Err.Number & vbCrLf & vbCrLf & Err.Description
End Sub


Так же попалась на глаза интересная статья "ACC: Problems Quitting Microsoft Access"
правда, только для 97 акеса (ms-help://MS.MSDNQTR.2003APR.1033/enu_kbaccesskb/accesskb/164455.htm)
Код: plaintext
1.
2.
3.
You have not explicitly closed all DAO recordsets or query definitions in your Microsoft Access database. If 
you are using Visual Basic for Applications code to manipulate recordsets, QueryDefs, or recordset clones (on 
forms), in some cases you must explicitly close the object; otherwise, Microsoft Access does not close.


и пример
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
   Sub CloseObjects()
      Dim db As Database
      Dim rs As Recordset
      Dim qd As QueryDef
      Set db = CurrentDb
      Set rs = db.OpenRecordset( "Employees" , dbOpenTable)
      Set qd = db.QueryDefs( "Invoices" )
      rs.MoveLast
      MsgBox  "The Employees recordset is open."  & vbcr & _
          "The last Employee ID is "  & rs![EmployeeID] &  "." 
      Msgbox  "The Invoices query definition is open."  & vbcr & _
          "The first field in the query is "  & qd.Fields( 0 ).Name
      ' Explicitly close the Recordset and QueryDef objects.
      rs.Close
      qd.Close
   End Sub


Статья "ACC2000: To Help Prevent Database Bloat, Explicitly Close Recordsets" содержит тот же пример

(...Because the recordset memory is not released, each time that you loop through code, DAO may recompile,

using more memory and increasing the size of the database. ) и те же рекомендации

закрывать.(ms-help://MS.MSDNQTR.2003APR.1033/enu_kbacc2000kb/acc2000kb/209847.htm) и тоже самое для 2002 акеса

(ms-help://MS.MSDNQTR.2003APR.1033/enu_kbacc10kb/acc10kb/289562.htm)
И еще одна статья "ACC: Explicitly Close Recordsets to Help Prevent Database Bloat"

(ms-help://MS.MSDNQTR.2003APR.1033/enu_kbaccesskb/accesskb/186311.htm) с тем же (блин, микрософтоцы Copy-Paste

освоили идеально :) примером и с тем же советом.

Есть пример с Close после создания нового объекта
"HOWTO: Create a Parameter Query via Data Access Objects"

(ms-help://MS.MSDNQTR.2003APR.1033/enu_kbvbapps/vbapps/142938.htm)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
   'Create QueryDef "by date"
   Dim Db As Database
   Dim Qd As QueryDef
   Set Db = OpenDatabase("C:\VB\BIBLIO.MDB")                 ' Old
   Set Db = DBEngine( 0 ).OpenDatabase( "C:\VB4-32 \BIBLIO.MDB") ' New
   Set Qd = Db.CreateQueryDef("By date") 'Create the query  "By date" 
   QdText =  "PARAMETERS dp Short; " 
   QdText = QdText &  "SELECT * from Titles WHERE [Year Published] = dp" 
   Qd.SQL = QdText
   Print Qd.SQL
   Qd.Close


Не много из справки по С++
Код: plaintext
1.
2.
3.
4.
5.
Call this member function when you finish using the querydef object.

Closing the querydef releases the underlying DAO object but does not destroy the saved DAO querydef object or 
the C++ CDaoQueryDef object. This is not the same as CDaoDatabase::DeleteQueryDef, which deletes the querydef 
from the database's QueryDefs collection in DAO (if not a temporary querydef).


И еще один пример "ACC2000: "Too Few Parameters. Expected 1" Error Message"

(ms-help://MS.MSDNQTR.2003APR.1033/enu_kbacc2000kb/acc2000kb/209203.htm)
Код: 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.
34.
35.
Function ParamQD()

    Dim dbSample As Database
    Dim qdfMyQuery As QueryDef
    Dim rstCountOrders As Recordset
    Dim strSearchName As String

    Set dbSample = CurrentDb()

    Set qdfMyQuery = dbSample.QueryDefs( "qryCustomerOrdersParameter" )
    
    ' Test for a value in the textbox
    If Not IsNull(Forms![frmSearch]![txtCustomerToFind]) Then
    
        ' Set the value of the parameter.
        strSearchName = Forms![frmSearch]![txtCustomerToFind]
        qdfMyQuery![Forms!frmSearch!txtCustomerToFind] = strSearchName

        ' Create the recordset (or dynaset).
        Set rstCountOrders = qdfMyQuery.OpenRecordset()
        If rstCountOrders.RecordCount =  0  Then
            MsgBox  "No records for "  & strSearchName
        Else
            rstCountOrders.MoveLast
            MsgBox rstCountOrders.RecordCount
        End If
        rstCountOrders.Close
    Else
        MsgBox  "Please enter a CustomerId in the textbox" 
    End If
    
    qdfMyQuery.Close
    dbSample.Close
    
End Function


Так же в статье "ACC: "Too few parameters. Expected 1" Error Message"

(ms-help://MS.MSDNQTR.2003APR.1033/enu_kbaccesskb/accesskb/105522.htm) имееться пример с Close QueryDef

В статье "BUG: Parameterized Queries with JET OLE DB Provider May Run Slow" говориться о необходимости

закрывать объект перед его выполнением с новыми парметрами

(ms-help://MS.MSDNQTR.2003APR.1033/enu_kboledb/oledb/252883.htm)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
One of the advantages of using prepared queries is that the query is compiled only once by the Microsoft Jet 
database engine. Further executions are very fast since Jet has already generated an execution plan for the 
query. However, the OLE DB provider for Jet doesn't take advantage of this optimization. Instead, it submits 
the prepared query to be re-compiled each time you re-query. When you use OLE DB, this requery is achieved in 
the following three steps:

 1 .Call IRowset::Close() to close the rowset returned by ICommand::Execute().
 2 .Change the parameter data.
 3 . Call ICommand::Execute() to create a new rowset based on the new parameters provided in step  2 .


Так же при модификации SQL-инструкции вызываеться метод Close (статья "How to Use a Multi-Select List Box to

Filter a Form" (ms-help://MS.MSDNQTR.2003APR.1033/enu_kbvbapps/vbapps/135546.htm)
Код: plaintext
1.
2.
3.
4.
5.
6.
   ' Modify the Query.
   Set DB = CurrentDb()
   Set Q = DB.QueryDefs( "MultiSelect Criteria Example" )
   Q.SQL =  "Select * From Orders Where [CustomerID] In("  & Criteria & _
      ");" 
   Q.Close




Ну и напоследок самое интересное:
В MSDN так же имеется туева-хуча примеров без Close. вот теперь думайте и решайте для себя к5аждый сам.
А я все-таки буду делать Close и Nothing. (Тут заметил что эти 2 слова я уже могу набрать на клаве слепым
методом - так что трудозатраты минимальны)

==
Извиняйте за многословность.

===
и у кого есть DAO SDK - плиз, see Close method.
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238250
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а теперь, Саныч, мне нужно твое мнение :)
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238268
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тоже теперь ставлю, правда еще вслепую не умею набирать.

я считаю из всего сказанного можно сделать вывод

не работает (есть Close, Nothig) - попробуй убрать Close, Nothig
не работает (нет Close, Nothig) - попробуй поставить Close, Nothig
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238277
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ну, Виктор, я просто обязан оценить твои трудозатраты...

Ясности немножко появилось, хотя и не до конца. Можно сформулировать так:

Код: plaintext
1.
2.
Close применительно к QueryDef ничего явным образом не делает, но иногда
пропагандируется Майкрософтом просто как средство экономии памяти
(хотя иногда вообще не используется в примерах того же Майкрософта).


Все равно никуда не уйти от сказанного Вадей: ставь Close наобум, а если не работает, то убирай.

Кстати: я в своем эксперименте попробовал делать Close несколько раз подряд. Нифига. Значения параметров сохраняются, рекордсет стоит, как штык.
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238288
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, Вадя хорошо сформулировал один из основной принципов занятия AcSex'ом


==
Надо в факе дать ссылку по Close на этот топик - пусть каждый решает сам
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238313
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Итак, вот новая версия.\r
\r
Для рассуждений про Close, увы, места не нашлось. От тех кусков кода, в которых это стояло, я оставил только то, что непосредственно является ответом на вопрос. Close был в тех строках, которые, по идее, у задающего вопрос и так уже написаны на момент задания вопроса.\r
\r
В вопросе про параметры запроса я добавил Eval - мне кажется, что это был пропущенный всеми баг.\r
\r
===\r
\r
Q: Перестали распознаваться служебные слова, такие как Left, Right, Database и т.д.\r
\r
A1: Проверь, не слетели ли ссылки. Из окна открытого модуля Tools -> References, и там должны быть помечены:\r
\r
Кто-нибудь, помогите добавить список ссылок, которые необходимы.\r
\r
A2: Если в региональных настройках Windows в качестве разделителя списков задана не запятая, а, скажем, точка с запятой, то при обращении к функциям надо ставить между аргументами именно этот разделитель (если обращение находится в запросе, в свойствах контрола и т.п., а не в модуле).\r
\r
A3: В качестве имени объекта могло случайно оказаться взято служебное слово. Решения: переименовать объект; пользоваться полным синтаксисом (Me!MyControl, а не просто MyControl).\r
\r
Q: Ставлю MsgBox - работает. Убираю - не работает.\r
\r
A: Поставь DoEvents вместо MsgBox.\r
\r
Q: Вылазит сообщение: Expected variable or procedure, not module.\r
\r
A: Начиная с Access 95, запрещено давать модулям имена, совпадающие с названиями переменных и процедур, а также со служебными словами. Если при компиляции появилось такое сообщение - значит, среди модулей попался такой, имя которого совпадает с чем-то в той строке, на которую Аксесс кричит. Его надо переименовать.\r
\r
Q: Начинается совершенно непонятное поведение mdb.\r
\r
A: Скорее всего файл испортился. Надо попробовать его починить. Вот топик, в котором накидано очень много способов, как вылечить испорченный mdb:\r
\r
/topic/40603\r
\r
(Правда, оказалось, что тот mdb вроде и не был испорчен, однако топик все равно очень полезный.)\r
\r
Q: Как избавиться от подтверждений на удаление и т.п.?\r
\r
A1: Ты, наверно, пользуешься DoCmd.RunSQL? Срочно переходи на CurrentDb.Execute (и т.п.). Только надо учесть, что Execute не будет работать, если команда или один из нижележащих запросов содержит обращения к формам, - все эти обращения будут восприняты как параметры, которым не передано значение. На этот случай см. следующий вопрос на этой же странице.\r
\r
A2: Иногда советуют поставить DoCmd.SetWarnings False, но это крайне опасно. При неаккуратном использовании этой команды Аксесс просто вообще перестанет выдавать сообщения об ошибках. Это требует добавить DoCmd.SetWarnings True где только можно, особенно в обработчиках ошибок. В противном случае Аксесс в какой-нибудь момент вообще перестанет выдавать сообщения об ошибках до конца работы программы. Вот пример правильного пользования SetWarnings:\r
\r
/topic/36200\r
\r
A3: Иногда советуют поменять глобальные настройки аппликации:\r
\r
Код: plaintext
1.
2.
Application.SetOption  "Confirm Record Changes" , False\r
Application.SetOption  "Confirm Document Deletions" , False\r
Application.SetOption  "Confirm Action Queries" , False
\r
\r
Это тоже крайне опасно. Подтверждения исчезнут во всей аппликации насквозь, в том числе там, где это не планировалось. Это можно делать только в том случае, если соблюдены два условия: 1. Пользователь лишен права на удаление тех объектов, которые нужны для нормальной работы программы, и данных через экран. 2. Подтверждения не отключаются, если в аппликации работает сам разработчик.\r
\r
Q: Я выполняю запрос в коде, а мне в ответ - "Too few parameters. Expected Число" ("Слишком мало параметров. Ожидалось Число").\r
\r
A: Если все параметры являются ссылками на контролы форм (Forms![ИмяФормы]![ИмяКонтрола]), тогда самое простое (и красивое) решение (тут и дальше q - переменная типа QueryDef, ссылающаяся на тот запрос, с которым возникла проблема):\r
\r
Код: plaintext
1.
2.
3.
Dim p As Parameter\r
For Each p In q.Parameters\r
    p.Value = Eval(p.Name)\r
Next
\r
\r
Если вместо обращений к формам ты используешь собственные параметры (например [Введите начальную дату:], тогда нужно задать их значения так:\r
\r
Код: plaintext
1.
2.
q.Parameters( "[Введите начальную дату:]" ).Value=...\r
q.Parameters( "[Введите конечную дату:]" ).Value=...\r
q.Parameters( "[Введите фамилию:]" ).Value=...
\r
\r
Узнать, какие параметры от тебя хочет Аксесс, можно с помощью следующего кода:\r
\r
Код: plaintext
1.
2.
3.
Dim p As Parameter\r
For Each p In q.Parameters\r
    Debug.Print p.Name\r
Next 
\r
\r
Вроде бы тут не все охвачено. Помнится, Лох говорил, что то ли инсерт иногда запрашивает параметры, а апдейт в тех же случаях нет, то ли наоборот. И с перекрестными запросами вроде тоже была какая-то особенность на ту же тему.
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238593
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде вопросы DoCmd.RunSQL & CurrentDb.Execute & Application.SetOption - решили вынести в отдельный FAQ???
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238690
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Sfagnum:

Где и когда решили? Есть какие-то наработки по этому поводу? Есть ссылка на какой-то топик?
...
Рейтинг: 0 / 0
FAQ. А почему у меня перестало работать...
    #32238711
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот блин... кто решил... ссылки ему подавай... нароботки...

Было предложение...

нууу.... не решили до конца

но моё мнение надо в отдельный FAQ
...
Рейтинг: 0 / 0
25 сообщений из 225, страница 3 из 9
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / FAQ. А почему у меня перестало работать...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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