2013-02-21 62 views
1

訪問數據庫表單1是一個連續表單,它具有一個EmployeeID字段,您可以雙擊以將您帶到另一個包含關於員工信息的表單。爲了保持正確的員工我使用此代碼...訪問連續子表單重複信息

Private Sub EmployeeID_DblClick(cancel as integer) 
    Dim myID as variant 
    myID = me.EmployeeID 

    DoCmd.OpenForm "frm_EmployeeInfo",,,,,,myID 
End Sub 

這不僅帶來了正確的員工信息,但填充的數量到一個隱藏的文本框保留信息。

在員工表單上有一個帶有4個選項卡的TabControl,其中一個選項卡包含一個Continous子表單,我試圖填充員工信息,而不是填充信息(假設員工X有8行不同屬性來顯示)它重複相同的一個。這裏是我的代碼表格:

Option Compare Database 

Private Sub Form_open(cancel As Integer) 
    Dim strConnection, strSQL As String 
    Dim conn As ADODB.Connection 
    Dim tbl As ADODB.Recordset 
    Dim SourceCode As String 
    Dim myID As Variant 

    Set conn = New ADODB.Connection 
    strConnection = "ODBC;Driver={SQLserver};DSN=AccessDatabase;Server=Labor;DATABASE=Source;Trusted_Connection=Yes;" 
    conn.Open strConnection 

    myID = CInt(Me.OpenArgs) 
    SourceCode= Nz(DLookup("[SourceCode]", "Locaton", "[LOC_ID] = Forms!frmUtility![Site].value"), "") 

    If SourceCode<> "" Then 
    strSQL = "SELECT EmployeeID,BenefitID,DeductionAmount,BenefitAmount,CoverageAmount,EffectiveDate," 
    strSQL = strSQL & "EligibleDate,ExpirationDate FROM " 
    strSQL = strSQL & SourceCode & "_EmployeesBenefitsNew WHERE EmployeeID= " & myID 
    Else 
    strSQL = "SELECT EmployeeID,BenefitID,DeductionAmount,BenefitAmount,CoverageAmount,EffectiveDate," 
    strSQL = strSQL & "EligibleDate,ExpirationDate FROM " 
    strSQL = strSQL & "EmployeesBenefitsNew WHERE EmployeeID= " & myID 
    End If 

    Set tbl = New ADODB.Recordset 

    With tbl 
    Set .ActiveConnection = conn 
    .Source = strSQL 
    .LockType = adLockOptimistic 
    .CursorType = adOpenKeyset 
    .CursorLocation = adUseClient 
    .Open 
    End With 

    With tbl 
    On Error Resume Next 
     .MoveFirst 
     Do Until tbl.EOF 
     Me.txtBenefitID.Value = tbl!BenefitID 
     Me.txtDeductionAmt.Value = tbl!DeductionAmount 
     Me.txtBenefitAmt.Value = tbl!BenefitAmount 
     Me.txtCoverageAmt.Value = tbl!CoverageAmount 
     Me.txtEffDt.Value = tbl!EffectiveDate 
     Me.txtTermDt.Value = tbl!ExpirationDate 
     Set Me.Recordset = tbl 
     .MoveNext 

     Loop 
    .Close 
    End With 



    conn.Close 
    Set conn = Nothing 
    Set tbl = Nothing 

End Sub 

任何人都可以在這種情況下了解一些情況嗎?謝謝!

+0

這是一個MDB/ACCDB或ADP? – Fionnuala 2013-02-21 13:29:18

+0

這是一個mdb/accdb – designspeaks 2013-02-21 13:42:29

+0

那麼爲什麼不鏈接表並避免這些問題呢?您可以將recordource設置爲完整的記錄集並使用鏈接子/鏈接主字段進行篩選。 – Fionnuala 2013-02-21 13:45:16

回答

0

您需要使用數據設置記錄集或記錄源,您不能在不同的行上寫入連續的表單,如果您有記錄集,這些行只會顯示爲不同的行。

所以

''******************** 
    Set Me.Recordset = tbl 
    ''******************** 

在你的代碼:

Private Sub Form_open(cancel As Integer) 
    Dim strConnection, strSQL As String 
    Dim conn As ADODB.Connection 
    Dim tbl As ADODB.Recordset 
    Dim SourceCode As String 
    Dim myID As Variant 

    Set conn = New ADODB.Connection 
    strConnection = "ODBC;Driver={SQLserver};DSN=AccessDatabase;Server=Labor;DATABASE=Source;Trusted_Connection=Yes;" 
    conn.Open strConnection 

    myID = CInt(Me.OpenArgs) 
    SourceCode= Nz(DLookup("[SourceCode]", "Locaton", "[LOC_ID] = Forms!frmUtility![Site].value"), "") 

    If SourceCode<> "" Then 
    strSQL = "SELECT EmployeeID,BenefitID,DeductionAmount,BenefitAmount,CoverageAmount,EffectiveDate," 
    strSQL = strSQL & "EligibleDate,ExpirationDate FROM " 
    strSQL = strSQL & SourceCode & "_EmployeesBenefitsNew WHERE EmployeeID= " & myID 
    Else 
    strSQL = "SELECT EmployeeID,BenefitID,DeductionAmount,BenefitAmount,CoverageAmount,EffectiveDate," 
    strSQL = strSQL & "EligibleDate,ExpirationDate FROM " 
    strSQL = strSQL & "EmployeesBenefitsNew WHERE EmployeeID= " & myID 
    End If 

    Set tbl = New ADODB.Recordset 

    With tbl 
    Set .ActiveConnection = conn 
    .Source = strSQL 
    .LockType = adLockOptimistic 
    .CursorType = adOpenKeyset 
    .CursorLocation = adUseClient 
    .Open 
    End With 


    ''******************** 
    Set Me.Recordset = tbl 
    ''******************** 


    conn.Close 
    Set conn = Nothing 
    Set tbl = Nothing 

End Sub