我已经添加了一个子窗体了,而且代码也写了,但是每次打开后新加的一个子窗体数据就会多复制一条。
代码如下:
Private Sub Form_Load()
On Error GoTo ErrorHandler
Dim strSQL As String
Dim strSQL2 As String
Dim cnn As Object 'ADODB.Connection
Dim rst As Object 'ADODB.Recordset
Dim rst2 As Object
Dim rstTmp As Object 'DAO.Recordset
Dim rstTmp2 As Object 'DAO.Recordset
ApplyTheme Me
LoadLocalLanguage Me
CurrentDb.Execute "DELETE FROM [TMP_机票航班信息]"
CurrentDb.Execute "DELETE FROM [TMP_机票预订费用]"
Me.sfrDetail.Requery
Me.sfrDetail2.Requery
If IsNull(Me.OpenArgs) Then
Me.DataEntry = True
End If
If Me.DataEntry Then
GoTo ExitHere
End If
Me.btnSave.Enabled = Me.AllowEdits
Set cnn = CurrentProject.Connection
strSQL = "SELECT * FROM [机票预定] WHERE [预订编号]=" & SQLText(Me.OpenArgs)
Set rst = OpenADORecordset(strSQL, , cnn)
Me![预订编号] = rst![预订编号]
Me![申请日期] = rst![申请日期]
Me![供应商] = rst![供应商]
Me![订单号] = rst![订单号]
Me![行程类型] = rst![行程类型]
Me![人数] = rst![人数]
Me![备注] = rst![备注]
Me![操作人] = rst![操作人]
rst.Close
strSQL = "SELECT * FROM [机票航班信息] WHERE [预订编号]=" & SQLText(Me![预订编号])
strSQL2 = "SELECT * FROM [机票预订费用] WHERE [预订编号]=" & SQLText(Me![预订编号])
Set rst = OpenADORecordset(strSQL, , cnn)
Set rst2 = OpenADORecordset(strSQL2, , cnn)
Set rstTmp = CurrentDb.OpenRecordset("TMP_机票航班信息")
Set rstTmp2 = CurrentDb.OpenRecordset("TMP_机票预订费用")
Do Until rst.EOF
rstTmp.AddNew
rstTmp![预订编号] = rst![预订编号]
rstTmp![旅客姓名] = rst![旅客姓名]
rstTmp![英文姓名] = rst![英文姓名]
rstTmp![证件号] = rst![证件号]
rstTmp![证件类型] = rst![证件类型]
rstTmp![出生年月] = rst![出生年月]
rstTmp![证件有效期] = rst![证件有效期]
rstTmp![行程] = rst![行程]
rstTmp![航班号] = rst![航班号]
rstTmp![起飞日期] = rst![起飞日期]
rstTmp![到达日期] = rst![到达日期]
rstTmp![起飞机场] = rst![起飞机场]
rstTmp![到达机场] = rst![到达机场]
rstTmp![备注] = rst![备注]
rstTmp.Update
rst.MoveNext
Loop
Do Until rst2.EOF
rstTmp2.AddNew
rstTmp2![预订编号] = rst2![预订编号]
rstTmp2![机票费用] = rst2![机票费用]
rstTmp2![税费] = rst2![税费]
rstTmp2![其它费用] = rst2![其它费用]
rstTmp2![出账公司] = rst2![出账公司]
rstTmp2![收票日期] = rst2![收票日期]
rstTmp2![发票号码] = rst2![发票号码]
rstTmp2.Update
rst2.MoveNext
Loop
rst.Close
rst2.Close
rstTmp.Close
rstTmp2.Close
Me.sfrDetail.Requery
Me.sfrDetail2.Requery
ExitHere:
Set rst = Nothing
Set rst2 = Nothing
Set cnn = Nothing
Set rstTmp = Nothing
Set rstTmp2 = Nothing
Exit Sub
ErrorHandler:
RDPErrorHandler Me.Name & ": Sub Form_Load()"
Resume ExitHere
End Sub