Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

Edit窗口Dlookup数据出来后保存出错

jingguangyuang  发表于:2018-01-02 14:20:31  
复制

如下图,Dlookup写在数据来源属性里,如下图

在窗口时可以出来数据,如下图:

但保存时却报错,如下图:

回到代码时显示的是“rst.Update”这行代码是**的,如下图:

具体代码如下:

Private Sub btnSave_Click()
   ' On Error GoTo ErrorHandler
    Dim strWhere      As String
    Dim strSQL        As String
    Dim cnn           As Object 'ADODB.Connection
    Dim rst           As Object 'ADODB.Recordset
    Dim rstTmp        As Object 'DAO.Recordset
    Dim blnTransBegin As Boolean


    If Not CheckRequired(Me) Then Exit Sub
    If Not CheckTextLength(Me) Then Exit Sub
    If Not CheckRequired(Me.sfrDetail) Then Exit Sub


    Set cnn = CurrentProject.Connection


    cnn.BeginTrans: blnTransBegin = True


    strSQL = "SELECT * FROM [tblwfssdh] WHERE [WFSSBM]=" & SQLText(Me![WFSSBM])
    Set rst = OpenADORecordset(strSQL, adLockOptimistic, cnn)
    If rst.EOF Then
        rst.AddNew
        rst![WFSSBM] = GetAutoNumber("外发消数编码")
    End If
    rst![SSZLDHDATA] = Me![SSZLDHDATA]
    rst.Update
    Me![WFSSBM] = rst![WFSSBM]
    rst.Close


    strSQL = "SELECT * FROM [tblwfss] WHERE [WFSSBM]=" & SQLText(Me![WFSSBM])
    Set rst = OpenADORecordset(strSQL, adLockOptimistic, cnn)
    Do Until rst.EOF
        rst.Delete
        rst.MoveNext
    Loop
    Set rstTmp = CurrentDb.OpenRecordset("TMP_tblwfss")
    Do Until rstTmp.EOF
        rst.AddNew
        rst![WFSSBM] = Me![WFSSBM]
        rst![SCDBM] = rstTmp![SCDBM]
        rst![CPBM] = rstTmp![CPBM] 'DLookup("[CPBM]", "tblwfscdmx", "SCDBM = '" & [SCDBM] & "'") ' rstTmp![CPBM]'
        rst![GS] = rstTmp![GS] 'DLookup("[GS]", "tblwfscdmx", "SCDBM='" & [SCDBM] & "'") ' rstTmp![GS]'
        rst![CPMC] = rstTmp![CPMC] 'DLookup("[CPMC]", "tblwfscdmx", "SCDBM='" & [SCDBM] & "'") ' rstTmp![CPMC]'
        rst![SSSHDBM] = rstTmp![SSSHDBM]
        rst![SSSHSL] = rstTmp![SSSHSL]
        rst![SSSHGBP] = rstTmp![SSSHGBP]
        rst![SSSHDATE] = rstTmp![SSSHDATE]
        rst![SSBZ] = rstTmp![SSBZ]
        rst![SSSF1] = rstTmp![SSSF1]
        rst![SSSF2] = rstTmp![SSSF2]
        rst![SSSF3] = rstTmp![SSSF3]
        rst![SSSF4] = rstTmp![SSSF4]
        rst![SSSF5] = rstTmp![SSSF5]
        rst![SSBY1] = rstTmp![SSBY1]
        rst![SSBY2] = rstTmp![SSBY2]
        rst![SSBY3] = rstTmp![SSBY3]
        rst![SSBY4] = rstTmp![SSBY4]
        rst![SSBY5] = rstTmp![SSBY5]
        rst![SSZLDATE] = rstTmp![SSZLDATE]
        rst.Update
        rstTmp.MoveNext
    Loop
     rst.Close
     rstTmp.Close
     cnn.CommitTrans: blnTransBegin = False


     Form_frmwfssdh.RefreshDataList
     MsgBoxEx LoadString("Saved Successfully."), vbInformation


'    If Me.DataEntry Then
'        ClearControlValues Me
'        CurrentDb.Execute "DELETE FROM [TMP_tblwfss]"
'        Me.sfrDetail.Requery
'    Else
'        DoCmd.Close acForm, Me.Name, acSaveNo
'    End If


ExitHere:
    Set rst = Nothing
    Set cnn = Nothing
    Set rstTmp = Nothing
    Exit Sub


ErrorHandler:
    If blnTransBegin Then
        cnn.RollbackTrans
        blnTransBegin = False
    End If
    RDPErrorHandler Me.Name & ": Sub btnSave_Click()"
    Resume ExitHere
End Sub




请问要怎么改,才可以成功保存???





 

Top
KevinFan 发表于:2018-01-02 15:16:12

1、产品编码文本框取消必填属性再试试?

2、建议将生产单编码改为组合框,使用生产单编码更新后事件产品编码、工序、产品名称进行赋值。




jingguangyuang 发表于:2018-01-02 16:22:39
好的,马上试,谢谢!

jingguangyuang 发表于:2018-01-19 10:30:19

不可以,在网上查了一下,这是一个非绑定窗体的操作,但非绑定窗体没有使用Dlookup的例子。

相类似的提到过需要把

限于列表值:改为“否”

列数:改为“大于1”

绑定列:改为“1”


求非绑定窗体使用Dlookup函数,进行快速输入数据的例子,谢谢!



MDZZ 发表于:2018-01-19 12:47:56

写dlookup 又不会保存到表  当然必须在对应保存代码中再写一遍啊  不然就跟楼上建议   用组合框更新后事件赋值  那样就是保存到表   要是不会改保存代码 老老实实 学习楼上的方法    

附带说句  dlookup 的3个字段 根本没必要保存进表 建立查询就能取出来



总记录:4篇  页次:1/1 9 1 :