daviddraiman 0 / 0 / 0 Регистрация: 23.01.2016 Сообщений: 33 |
||||
1 |
||||
Ошибка авторизации «Операция не допускается, если объект открыт»01.03.2016, 15:11. Показов 4523. Ответов 11 Метки нет (Все метки)
В бд хранятся пользователи и пароли.Для авторизации в приложении использую код :
Если попытка входа осуществляется не с первой попытки, то появляется ошибка
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
01.03.2016, 15:11 |
11 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,054 Записей в блоге: 3 |
|
01.03.2016, 15:20 |
2 |
полный код покажите
0 |
daviddraiman 0 / 0 / 0 Регистрация: 23.01.2016 Сообщений: 33 |
||||
01.03.2016, 15:26 [ТС] |
3 |
|||
Я понял что форма закрывалась потому что главная форма у меня была form2. При закрытии главной и другая форма закрывалась.
0 |
пофигист широкого профиля 4662 / 3096 / 855 Регистрация: 15.07.2013 Сообщений: 17,857 |
|
01.03.2016, 15:38 |
4 |
Решение35-38 строчки убери отсюда в более подходящее место.
1 |
0 / 0 / 0 Регистрация: 23.01.2016 Сообщений: 33 |
|
01.03.2016, 15:44 [ТС] |
5 |
Спасибо) всё заработало
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,054 Записей в блоге: 3 |
|
01.03.2016, 15:45 |
6 |
ошибка «Операция не допускается, если объект открыт» осталась?
0 |
0 / 0 / 0 Регистрация: 23.01.2016 Сообщений: 33 |
|
01.03.2016, 15:49 [ТС] |
7 |
Нет. после того как указанные строчки поместил в FormCreate
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,054 Записей в блоге: 3 |
|
01.03.2016, 15:55 |
8 |
вы Query не закрываете и при этом пытаетесь поменять свойства Connection после того как обработали Query нужно делать Query.Close;
0 |
пофигист широкого профиля 4662 / 3096 / 855 Регистрация: 15.07.2013 Сообщений: 17,857 |
|
01.03.2016, 16:15 |
9 |
после того как обработали Query нужно делать Query.Close; Как раз это делать не обязательно (с)
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,054 Записей в блоге: 3 |
|
01.03.2016, 16:25 |
10 |
Как раз это делать не обязательно (с) в этом случае же обязательно
А вот многократно устанавливать свойство Connection совсем ни к чему. почему?
0 |
пофигист широкого профиля 4662 / 3096 / 855 Регистрация: 15.07.2013 Сообщений: 17,857 |
|
01.03.2016, 16:59 |
11 |
в этом случае же обязательно Только из-за того что была попытка повторно установить свойство ConnectionString.
почему? Потому что незачем. Ничего же не изменилось.
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,054 Записей в блоге: 3 |
|
01.03.2016, 17:04 |
12 |
Потому что незачем. Ничего же не изменилось. а я подумал про какой-то секретный смысл
0 |
После добавление временной таблицы и левого соединения к Основному запросу (много строк) начала выскакивать ошибка, указанная в заголовке.
Как-то не понятно почему, до этого использовал временные таблицы не было такого …
// само левое соединение
| — Отобрать Outcome
| LEFT JOIN #MasterTransactionIdForOutcome AS TraOt ON TraOt.MasterTransactionId = Operations.MasterTransactionId
| — СОСТАВИТЬ СПИСОК MasterTransactionId С Outcome
| IF OBJECT_ID(‘tempdb..MasterTransactionIdForOutcome’) IS NOT NULL DROP TABLE #MasterTransactionIdForOutcome
| SELECT DISTINCT TraT.MasterTransactionId
| INTO #MasterTransactionIdForOutcome
| FROM ski2db2017.dbo.MasterTransaction AS Operations
| LEFT JOIN ski2db2017.dbo.TransactionDetail AS Tra ON Tra.MasterTransactionId = Operations.MasterTransactionId
| AND Tra.SuperAccountIdFrom = 2 AND Tra.SuperAccountIdTo IS NULL
| LEFT JOIN ski2db2017.dbo.TransactionDetail AS TraT ON TraT.MasterTransactionId = Tra.MasterTransactionId
| AND TraT.SuperAccountIdFrom <> 2 AND TraT.SuperAccountIdFrom IS NOT NULL
| AND TraT.SuperAccountIdTo = 2
| WHERE TraT.MasterTransactionId IS NOT NULL —Operations.TransTime BETWEEN ‘20170202’ AND ‘20170203’
RecordSet = Новый COMОбъект(«ADODB.RecordSet»);
RecordSet.Open(ТекстЗапроса, Connection);
//перейдём в начало списка
Если Не RecordSet.EOF Тогда
RecordSet.MoveFirst();
КонецЕсли;
Попытка
// для каждой полученной записи
Пока Не RecordSet.EOF Цикл // ТУТ ОШИБКА ВЫЛЕТАТ ОБ Операция не допускается, если объект закрыт.
ОбработкаПрерыванияПользователя();
НоваяСтрока = ТаблицаРезультат.Добавить();
// заполняем строку
Для каждого Колонка из ЭлементыФормы.ТаблицаРезультат.Колонки Цикл
ОбработкаПрерыванияПользователя();
ИмяКолонки = Колонка.Имя;
Если ИмяКолонки = «НомерСтроки» ИЛИ ИмяКолонки = «ДатаБезВремени» Тогда
Продолжить;
КонецЕсли;
Значение = RecordSet.Fields.Item(ИмяКолонки).Value;
Если значение <> Null Тогда
НоваяСтрока[ИмяКолонки] = СокрЛП(Значение);
Если Найти(ИмяКолонки, «Id») Тогда
НоваяСтрока[ИмяКолонки] = СтрЗаменить(НоваяСтрока[ИмяКолонки], » «, «»);
КонецЕсли;
КонецЕсли;
КонецЦикла;
// переходим к сл. строке
RecordSet.MoveNext();
КонецЦикла;
Исключение
//Предупреждение(«База Скибарс занята. Повторите попытку подключения позже.»);
Сообщить(ОписаниеОшибки());
КонецПопытки;
ЭтаФорма.Заголовок = «Количество строк: » + ТаблицаРезультат.Количество()
+ «, времени затрачено: » + (ТекущаяДата() — ДатаНачалаДляВремени) + » секунд»;
Номер телефона пуст
Чаще всего эта ситуация встречается, при работе с файлом Excel. В вопросах и ответах есть объяснения причин этого:
- Почему некоторые номера телефонов в программе пустые, хотя в документе Excel они заполнены?
- Почему программа звонит по отсутствующим номерам в пустых ячейках Excel?
Ещё одной причиной может быть неправильно выбранное поле базы данных (столбец) с номером телефона на странице выбора полей с данными.
Невозможно записать сделанные изменения, поскольку введенное значение противоречит параметрам, заданным для этой таблицы или списка
Скорее всего, в качестве источника данных используется документ Excel. Подобные ошибки возникают в том случае, когда используются объединённые ячейки в таблице.
Возникла ошибка в записи результатов звонка
Запрос для записи в базу данных результатов работы не может быть выполнен. Возможно, вы выбрали другой источник данных на странице записи результатов или, если используется собственный SQL-запрос, сделали в нём ошибку. В первом случае достаточно указать правильные поля для записи, во втором обязательно проверьте, работает ли запрос при нажатии на кнопку «Проверить».
Операция не допускается, если объект закрыт
Источник данных, из которого необходимо получить или в который надо записать данные в настоящий момент недоступен. Проверьте возможность подключения к источнику данных. Возможно, он используется каким-то приложением, в том числе запущенной или некорректно закрытой копией Call Office. Во втором случае нужно завершить в диспетчере процессов все процессы mshta.exe.
Ошибка загрузки страницы. Разрешение отклонено
Проверьте, есть ли у вас доступ к базе данных. Если есть, то ваши операционные системы конфликтуют друг с другом, такое встречается, например, при попытке Windows XP получить доступ к базе данных в более старшей версии Windows. Установите ODBC-драйвер доступа к этой базе данных или перенесите базу данных на локальный компьютер, где установлен Call Office.
BOF или EOF имеет значение True, либо текущая запись удалена. Для выполняемой операции требуется текущая запись
Вероятно, что ошибка возникла после того, как была удалена запись из базы данных, с которой программа собиралась работать. Если ошибка возникает и пользователь не изменял поля в базе данных, то сформируйте журнал и отправьте его разработчикам для дальнейшего изучения и выявления ошибки.
Ошибка получения данных для обзвона
После запуска сценария программа пытается получить данные с номерами телефонов, суммами задолженностей и так далее. Если данные не могут быть получены, возникает эта ошибка. Попробуйте заново указать источник данных и выбрать необходимые для работы сценария поля. Возможно, была изменена структура таблицы или базы данных, с которой вы работаете. Например, удалён лист из файла Excel, переименованы названия колонок и так далее.
Отсутствует значение для одного или нескольких требуемых параметров
Ошибка может возникать в связи с тем, что формат столбца в базе является числовым, а данные для записи имеют текстовый формат. Попробуйте изменить форматы столбцов для записи на текстовый или числовой. Столбец с датой должен иметь формат даты.
Объект не найден ядром базы данных
Ошибка может возникать из-за неправильного указания имени таблицы в выбранной базе данных. Проверьте корректность указанной таблицы.
Потеряна связь с Microsoft Excel для просмотра присоединенных листов
Такая ошибка чаще всего возникает, если вы открыли документ Excel, затем запустили Call Office использующий этот же документ и после этого закрыли документ Excel. В этом случае ODBC-драйвер для работы с документами Excel теряет связь с открытым документом и возникает эта ошибка.
Мы рекомендуем не открывать документ Excel перед работой Call Office.
В процессе записи результата возникла ошибка: недопустимое имя
Такая ошибка возникает при вызове SQL-запроса, когда имя таблицы указана не верно или указана с ошибкой. Проверьте корректность имени таблицы.
Недостаточно системных ресурсов, при выполнении SQL запроса
CallOffice является 32-х битным приложением, и имеет ограниченный размер динамически выделяемой памяти в 2 GB. Данная ошибка возникает при достигнутом ограничении. Чаще всего это происходит при обзвоне в несколько циклов, с большой базой номеров. В таком случае мы рекомендуем установить в настройках количество циклов 1, а запуск в несколько циклов осуществлять с помощью bat файла
This function inserts a row into a SQL database and needs to return the identity number created:
Function WriteDatabase(backupTypeID, numImages, folderSize, success, errorMessage, strLogFileName)
On Error Resume Next
err.clear
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open "Provider=SQLOLEDB;Data Source=x.x.x.x;Initial Catalog=DB;User ID=sa;Password=xxxxxx"
sqlquery = "INSERT INTO tblImageCopies (BackupCopyDate, BackupCopyTypeID, NumImages, ImagesFolderSize, Success, ErrorMessage) VALUES (GETDATE(), " & backupTypeID & ", " & numImages & ", " & folderSize & ", " & success & ", " & errorMessage & "); SELECT scope_identity() AS ImageCopyID;"
objRecordSet.Open sqlquery,objConnection
objRecordSet.MoveFirst
WriteDatabase = objRecordSet("ImageCopyID")
objRecordSet.Close
objConnection.Close
If err.number <> 0 Then
WriteLog "Error writing to the EHN database - " & err.number & " " & err.description, strLogFileName
End If
End Function
It successfully inserts the row, but I get the error message ‘3704 Operation is not allowed when the object is closed.’ when it tries to return the identity number in the record set. When I execute this sql query directly on the server, it works. Anyone able to help?
Добрый день. Подскажите пожалуйста, следующая проблема:
Код |
---|
Sub dd() '...........................................Задаём переменные stdateone = Sheets("set").Range("b1") '.....Начало года stdatetwo = Sheets("set").Range("b2") '.....Месяца месяца findate = Sheets("set").Range("b3") '.....Конец Месяца Sql_Query = Sheets("set").Range("b5") '.......................................Запись Dim oConn_Sql As New ADODB.Connection Dim rs_1 As New ADODB.Recordset '.......................................Подключение oConn_Sql.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=SMART_DM;Data Source=smart-db" oConn_Sql.CommandTimeout = 0 oConn_Sql.Open '.......................................Замена Sql_Query = Replace(Sql_Query, "$stdateone", stdateone) Sql_Query = Replace(Sql_Query, "$stdatetwo", stdatetwo) Sql_Query = Replace(Sql_Query, "$findate", findate) '...................................Задаём команду Set Cmd1 = New ADODB.Command Cmd1.ActiveConnection = oConn_Sql Cmd1.CommandText = Sql_Query Cmd1.CommandTimeout = 30 '...............................Открываем Debug.Print Sql_Query rs_1.Open Cmd1 '...........................................Вставка lastRow = Sheets("db").Cells(Rows.Count, 1).End(xlUp).Row Sheets("db").Cells(lastRow + 1, 1).CopyFromRecordset rs_1 ' !!!!!!!!!!!!!!!!!!!!!!! ОШИБКА ВОТ ЗДЕСЬ MsgBox "Выполнено!" End Sub |
После подключения выскакивает ошибка (строка 36), якобы «операция не допускается если объект закрыт «
При этом в MySQL таблица нормально открывается.
P.s. Похожие темы читал, решения не нашёл.