2015-08-08 2 views
1

может ли кто-нибудь помочь мне, как сделать соединение в подзаголовке доступным для использования в subcontrollistviewsource? Я знаю, что мне нужна переменная, но в целом я борюсь не с УСПЕШНЫМ. У меня всегда была ошибка «Недопустимая спецификация разрешения» в строке sub cn.Open ConsultationListviewSource. извините за мой плохой английскийlogin sql server 2005 on vb6

Option Explicit 

Private cn As ADODB.Connection 
Private record As ADODB.Recordset 
Private list As ListItem 

Public Sub ConsultationListviewSource(ByRef objlistview As Object, ByVal   table As String) 

cn.Open 
record.Open "SELECT * FROM [" & table & "]", cn, adOpenDynamic, adLockOptimistic 

If record.Fields.Count = 5 Then 
    For k = 0 To 4 
     With objlistview.ColumnHeaders 
      .Add , , record.Fields(k).Name, objlistview.Width/2 
     End With 
    Next k 

    record.MoveFirst 
    While record.EOF = False 
     Set list = objlistview.ListItems.Add(, , record.Fields(0)) 
     list.SubItems(1) = record.Fields(1) 
     list.SubItems(2) = record.Fields(2) 
     list.SubItems(3) = record.Fields(3) 
     list.SubItems(4) = record.Fields(4) 
     record.MoveNext 
    Wend 
End If 
record.Close 
End Sub 

Sub login(textusername As Variant, textpassword As Variant) 
On Error GoTo erreur 
Set cn = New ADODB.Connection 
Set record = New ADODB.Recordset 
cn.ConnectionString = "Provider=SQLOLEDB;Data  Source=localhost\SQLExpress;Initial Catalog=bdd_trigger_salarie;User ID=textusername;Password=textpassword" 
cn.Open 
MsgBox "bienvenue", vbInformation, "Login" 
Exit Sub 
erreur: 
If Err.Number = -2147217843 Then 
    MsgBox "nom d'utilisateur et/ou mot de passe incorrect", vbInformation, "Login" 
End If 
End Sub 

Private Sub Class_Terminate() 
cn.Close 
Set cn = Nothing 
Set record = Nothing 
End Sub 

ответ

0

Я забыл много о VB6 поэтому не может быть 100% уверен, но я вижу одну проблему в вас коде: вы открыли соединение в Sub Login, не закрыл его, и попытался снова откройте его в Sub ConsultationListviewSource. Быстрое исправление будет удалять линию cn.Open в поле ConsultationListviewSource.

Но это не лучшая практика. Вы должны попытаться свести к минимуму время открытия соединения и закрыть соединение сразу после использования.