Access交流中心

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

一个窗体,怎么用两种方式打开

freeswan  发表于:2011-10-22 04:30:30  
复制

编辑窗体,想用2种方式打开,

一是添加,二是编辑,

该怎么做?

谢谢!

 

用变量?在load或者open里判断么

 

Top
煮茶论道 发表于:2011-10-22 10:37:04

实现应该可以,思路有问题。为什么不能多做一个窗体呢。要么直接在一个窗体上,打开后既可以添加又可以编辑。



风行 发表于:2011-10-22 10:59:01

这代码实现你要的功能,请参考

DataEntry 属性不决定是否可以添加记录,只决定是否显示已有的记录

 

Private Sub Form_Load()
    On Error GoTo Err_Form_Load
    Dim rst As Object
    Dim fld As Object

    If Not Me.DataEntry And Not IsNull(Me.OpenArgs) Then  '
        Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl物资信息 WHERE ID=" & Nz(Me.OpenArgs, 0) & "", , 4)
        If Not rst.EOF Then
            On Error Resume Next
            For Each fld In rst.Fields
                Me(fld.Name) = fld
            Next
        End If
        rst.Close
    Else
        'Me.料号 = AutoNumStr("tbl物资信息", "料号", 3, "L", "yymm-")
        Me.分类 = Sel
        Me.录入时间 = Date
    End If


Exit_Form_Load:
    Exit Sub

Err_Form_Load:
    ErrMsgBox Me.Name, "Form_Load"
    Resume Exit_Form_Load

End Sub

Private Sub cmdSave_Click()
    On Error GoTo Err_cmdSave_Click
    Dim rst As Object
    Dim fld As Object

    Set rst = CreateObject("ADODB.Recordset")
   
    If IsNull(Me.OpenArgs) Then
        rst.Source = "SELECT * FROM tbl物资信息"
    Else
        rst.Source = "SELECT * FROM tbl物资信息 WHERE ID=" & Me.OpenArgs & ""
    End If

    rst.ActiveConnection = CurrentProject.Connection
    rst.CursorType = 1
    rst.LockType = 3
    rst.Open
    If IsNull(Me.OpenArgs) Then rst.AddNew
    'rst.AddNew
    For Each fld In rst.Fields
        If fld.Name <> "ID" Then fld.Value = Me(fld.Name).Value
        fld.Value = Me(fld.Name).Value
    Next
    rst.Update
    rst.Close

    MsgBox "数据已保存。", vbInformation, "提示"
    If Not Me.DataEntry Then
        DoCmd.Close acForm, Me.Name
    End If

Exit_cmdSave_Click:
    Exit Sub

Err_cmdSave_Click:
    If Err = 2465 Then
        Resume Next
    Else
        ErrMsgBox Me.Name, "cmdSave_Click"
        Resume Exit_cmdSave_Click
    End If
End Sub



freeswan 发表于:2011-10-22 16:47:12

思路这样的,请大家看看:

 

1、添加,打开窗体后,某些字段填写默认值

2、编辑,在查询窗体选择一条记录,打开,显示当前值



西出阳关无故人 发表于:2011-10-22 17:53:46


freeswan 发表于:2011-10-22 20:49:58

谢谢,已解决。。。



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