0 голосов
спросил от в категории VB6
но вы никогда не закрываете соединение.

это должно произойти во втором горячем коде. Ваша область соединения глобальна, поэтому каждый раз, когда ваш код попадает, вы используете один и тот же экземпляр. При первом запуске вы устанавливаете строку подключения и открываете соединение. Во второй раз, когда он запускает соединение, все еще открыт (очень плохо).

Ваше соединение должно быть в самой низкой возможной области. Вот почему вы обычно видите это в блоке «using». Это делает область соединения еще более низкой, чем сама функция.

Всегда закрывать соединения
Всегда удалять соединения

Это не просто рекомендации, это закон! :?

Надеюсь, что помогает ^ _ ^
Энди

РЕДАКТИРОВАТЬ: обновлено с кодом

Option Explicit Public Report As New CrystalReport1 Public Function printReport()            Dim strConnectionString As String      Dim rs As ADODB.Recordset      Dim strScript As String        strConnectionString = "Provider=SQLOLEDB............"      Using mvCn As New ADODB.Connection         'mvCn does not exist outside of this block!         mvCn.ConnectionString = strConnectionString         mvCn.CommandTimeout = 0         mvCn.CursorLocation = adUseClient         mvCn.Open         strScript = strScript & "SELECT * FROM employee" & vbCrLf         Set rs = mvCn.Execute(strScript)         mvCn.Close()         'Always close before leaving scope.  This should happen anyway but it's always good to be sure      End Using      'That's it.  mvCn no longer exists.  When the code runs again mvCn will be a new instance      Report.Database.SetDataSource rs      Report.AutoSetUnboundFieldSource crBMTNameAndValue           CRViewer1.ReportSource = Report      CRViewer1.ViewReport           Set Report = Nothing End Function

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
Сообщение об ошибке довольно ясно. mvCn уже открыт, потому что он не был закрыт. Вы не можете открыть его снова!
Вы должны проверить, открыто ли соединение:
'check connection state If mvCn.State = ConnectionState.Open Then mvCn.Close() 'open connection mvCn.Open()

Категории

Добро пожаловать на сайт DraftingCode Q&A, где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...