注册 登录
编程论坛 VB6论坛

access 添加记录后保留当前页面部分数据

pldqu_2019 发布于 2019-05-25 22:54, 2116 次点击
我在新增产品信息的时候,一般只改变产品编号,其它的信息都不改变,但是点击保存后,所有内容都没有啦,每台都要输一遍,怎样设置才能保存后,保留我需要的信息,如示例图所示,除了产品编号以外,其它都保留,
只有本站会员才能查看附件,请 登录
求大师们指点
7 回复
#2
pldqu_20192019-05-26 10:27
自己先定一个
#3
wufuzhang2019-05-26 12:36
回复 2楼 pldqu_2019
程序代码:

      Set cn = New ADODB.Connection
      Set rs = New ADODB.Recordset
      cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\产品.mdb"
      cn.Open
      rs.Open "信息", cn, adOpenKeyset, adLockOptimistic
      
      Set MSHFlexGrid1(0).DataSource = rs
      rs.Fields(1) = Text1(0).Text
      rs.Update
      MSHFlexGrid1(0).ColWidth(-1) = 800
      cn.Close
      Set cn = Nothing
      Set rs = Nothing

这一句rs.Fields(1) = Text1(0).Text就可以修改指定字段的内容啊!
其他字段没有修改,内容就不会改变呀。
#4
pldqu_20192019-06-02 13:51
回复 3楼 wufuzhang
高手啊,但是还不是很懂,我具体该怎么修改代码才能达到我想要的效果啊,求指点
#5
wufuzhang2019-06-03 09:12
回复 4楼 pldqu_2019
你可以把你的代码发出来吗?不然我都不知道你问题出在哪里。
#6
pldqu_20192019-06-07 18:03
回复 5楼 wufuzhang
Option Compare Database
Option Explicit
Private Sub Form_Load()
    On Error GoTo ErrorHandler
    Dim strSQL        As String
    Dim cnn           As Object 'ADODB.Connection
    Dim rst           As Object 'ADODB.Recordset

    ApplyTheme Me
    LoadLocalLanguage Me

    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 [tbl5001调试号码录制] WHERE [产品编号]=" & SQLText(Me.OpenArgs)
    Set rst = OpenADORecordset(strSQL, , cnn)
    Me![产品编号] = rst![产品编号]
    Me![产品名称] = rst![产品名称]
    Me![产品状态] = rst![产品状态]
    Me![判定] = rst![判定]
    Me![调试人员] = rst![调试人员]
    Me![存号时间] = rst![存号时间]
    Me![备注] = rst![备注]
    rst.Close

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

ErrorHandler:
    RDPErrorHandler Me.Name & ": Sub Form_Load()"
    Resume ExitHere
End Sub

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 strSQL2        As String
    Dim rst2           As Object 'ADODB.Recordset
    Dim productName, productType As String


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

    Set cnn = CurrentProject.Connection

    '读取[tbl4003产品名称信息]记录
    strSQL2 = "SELECT * FROM [tbl4003产品名称信息]"
    Set rst2 = OpenADORecordset(strSQL2, , cnn)
   
    Do Until rst2.EOF
        
        productName = rst2![产品名称]
        productType = rst2![产品型号]
        
        '
        If Me![产品名称] = productName Then
        
            If Len(Left(Me![产品编号], Len(productType))) = Len(productType) Then
            
              If Left(Me![产品编号], Len(productType)) = productType Then
               
                MsgBox "len and content is ok."
                Exit Do
               
              Else
              
                  MsgBox "content is error."
                  GoTo ExitHere:
              End If
              
            Else
            
                MsgBox "len is error."
                GoTo ExitHere:
            End If
        
        End If
        
        rst2.MoveNext
        
    Loop
   

    strSQL = "SELECT * FROM [tbl5001调试号码录制] WHERE [产品编号]=" & SQLText(Me![产品编号])
    Set rst = OpenADORecordset(strSQL, adLockOptimistic, cnn)
    If rst.EOF Then
        rst.AddNew
    End If
    rst![产品编号] = Me![产品编号]
    rst![产品名称] = Me![产品名称]
    rst![产品状态] = Me![产品状态]
    rst![判定] = Me![判定]
    rst![调试人员] = Me![调试人员]
    rst![存号时间] = Me![存号时间]
    rst![备注] = Me![备注]
    rst.Update
    rst.Close

    Form_frm5001调试号码录制.RefreshDataList
    MsgBoxEx LoadString("Saved Successfully."), vbInformation

    If Me.DataEntry Then
        ClearControlValues Me
    Else
        DoCmd.Close acForm, Me.Name, acSaveNo
    End If

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

ErrorHandler:
    RDPErrorHandler Me.Name & ": Sub btnSave_Click()"
    Resume ExitHere
End Sub

Private Sub btnCancel_Click()
    On Error Resume Next
    DoCmd.Close acForm, Me.Name, acSaveNo
   
   
End Sub



代码就是这个,麻烦帮我看看,要怎么修改,谢谢
#7
pldqu_20192019-06-14 22:56
回复 3楼 wufuzhang
我试了你的代码,提示缺少变量,是不是你的代码不全啊,麻烦指导一下,谢谢
#8
wufuzhang2019-06-15 11:30
回复 7楼 pldqu_2019
窗体声明部分加上下面两句:
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

再试试
1