access如何让在窗体中输入记录后保存到表当中?
发布网友
发布时间:2022-05-18 03:27
我来回答
共1个回答
热心网友
时间:2023-10-08 19:39
Private Sub 入库_click()
'默认你的后面的textbox的名称就是前面的名称
'这里的数据类型可能要转换,比如价格可能要转换成double(CDbl()),购买日期转行成日期时间型(CDate())
'假设你的数据表是aa,字段名和界面显示是一样的
Dim Rs As ADODB.Recordset
'在插入前建议你在aa表里查查这条记录是否已经存在,如果已经存在则给出提示(查询条件看你怎么设置的主键了)
Rs = objADO.GetRs("insert into aa (书名,定价,作者,图书类别,出版社,介质,购买日期,内容简介) values (" & 书名.Text & "," & vbCrLf & _
"定价.text & ", " & 作者.text & ", " & 图书类别.text & ", " & 出版社.text & ", " & 介质.text & ", " & 购买日期.text & ", " & 内容简介.text & ")
'这里如果表aa的字段多于界面显示的也没关系,只会给你aa后面括号里的字段赋值,这里后面values的顺序必须和前面的对应
'正确插入后建议给个提示,同时看看有没有必要把界面的所有值清空(图书类别.text = "")
'这里的objADO建议这么定义Public objADO As SqlServer,有别的查询也可以直接用,你自己怎么定义的就换成你自己的
'GetRs的定义在下面,你也可能是dim strsql as string,然后strsql = (上面的插入语句),然后用下面Rs.Open strSql, Conn, adOpenStatic, adLockReadOnly的方法,都行的,就看你自己怎么写的了
End Sub
Public Function GetRs(ByVal strSql As String) As ADODB.Recordset '通过执行SQL语句返回记录集
Dim Rs As ADODB.Recordset
On Error GoTo Err0
If Not OpenDB Then
Exit Function
End If
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient '使用本地(客户端)游标,这样Rs.RecordCount属性才能正确返回记录集行数
DoEvents
Rs.Open strSql, Conn, adOpenStatic, adLockReadOnly
Set GetRs = Rs
Exit Function
Err0:
If InStr(1, Err.Description, "通讯链接失败") > 0 Then
Set Conn = New ADODB.Connection
LocalStat = "断开" '设置本地数据库连接状态
End If
MsgBox Err.Description
End Function