vb update更新数据库,更新很多字段如何编写啊

vb update更新数据库,更新很多字段如何编写啊,第1张

可以用ADO方法

rsCnn = "PROVIDER=Microsoft.Jet.OLEDB.4.0Data Source=" &DataPath &"mode=Read|write"

rsTmp.Open "Select * From 时刻段电量 ", rsCnn, adOpenDynamic, adLockBatchOptimistic

With rsTmp

!峰数据 = rsTmp1.Fields(strName(k) &"峰").Value

!平数据 = rsTmp1.Fields(strName(k) &"平").Value

!谷数据 = rsTmp1.Fields(strName(k) &"谷").Value

!总数据 = !峰数据 + !平数据 + !谷数据

.UpdateBatch

End With

Set rsTmp = Nothing

VB的Update 方法有多种用途:

Update 方法 (ADO),保存对 Recordset 对象的当前记录所做的所有更改。

语法

recordset.Update Fields, Values

参数

Fields   可选。变体型,代表单个名称;或变体型数组,代表需要修改的字段(单个或多个)名称或序号位置。

Values   可选。变体型,代表单个值;或变体型数组,代表新记录中字段(单个或多个)值。

说明

使用 Update 方法保存自从调用 AddNew

方法,或自从现有记录的任何字段值发生更改之后,对 Recordset 对象的当前记录所作的所有更改。Recordset

对象必须支持更新。

Update 和 CancelUpdate 方法范例

该范例连同 CancelUpdate 方法说明 Update 方法。

Public Sub UpdateX()

  Dim rstEmployees As ADODB.Recordset

  Dim strOldFirst As String

  Dim strOldLast As String

  Dim strMessage As String

  ' 使用雇员表中的姓名打开记录集。

     strCnn = "Provider=sqloledb" &_

     "Data Source=srvInitial Catalog=pubsUser Id=saPassword="

  Set rstEmployees = New ADODB.Recordset

  rstEmployees.CursorType = adOpenKeyset

  rstEmployees.LockType = adLockOptimistic

  rstEmployees.Open "SELECT fname, lname " &_

     "FROM Employee ORDER BY lname", strCnn, , , adCmdText

  ' 储存原始数据。

  strOldFirst = rstEmployees!fname

  strOldLast = rstEmployees!lname

  ' 更改编辑缓冲区中的数据。

  rstEmployees!fname = "Linda"

  rstEmployees!lname = "Kobara"

  ' 显示缓冲区的内容并获取用户输入。

  strMessage = "Edit in progress:" &vbCr &_

     "  Original data = " &strOldFirst &" " &_

     strOldLast &vbCr &"  Data in buffer = " &_

     rstEmployees!fname &" " &rstEmployees!lname &vbCr &vbCr &_

     "Use Update to replace the original data with " &_

     "the buffered data in the Recordset?"

  If MsgBox(strMessage, vbYesNo) = vbYes Then

     rstEmployees.Update

  Else

     rstEmployees.CancelUpdate

  End If

  ' 显示结果数据。

  MsgBox "Data in recordset = " &rstEmployees!fname &" " &_

     rstEmployees!lname

  ' 恢复原始数据,因为这只是演示。

  If Not (strOldFirst = rstEmployees!fname And _

        strOldLast = rstEmployees!lname) Then

     rstEmployees!fname = strOldFirst

     rstEmployees!lname = strOldLast

     rstEmployees.Update

  End If

  rstEmployees.Close

End Sub

Public Sub UpdateX2()

  Dim cnn1 As ADODB.Connection

  Dim rstEmployees As ADODB.Recordset

  Dim strEmpID As String

  Dim strOldFirst As String

  Dim strOldLast As String

  Dim strMessage As String

  ' 打开连接。

  Set cnn1 = New ADODB.Connection

     strCnn = "Provider=sqloledb" &_

     "Data Source=srvInitial Catalog=pubsUser Id=saPassword="

  cnn1.Open strCnn

  ' 使用雇员表中的数据打开记录集。

  Set rstEmployees = New ADODB.Recordset

  rstEmployees.CursorType = adOpenKeyset

  rstEmployees.LockType = adLockOptimistic

  rstEmployees.Open "employee", cnn1, , , adCmdTable

  rstEmployees.AddNew

  strEmpID = "B-S55555M"

  rstEmployees!emp_id = strEmpID

  rstEmployees!fname = "Bill"

  rstEmployees!lname = "Sornsin"

  ' 显示缓冲区内容并获取用户输入。

  strMessage = "AddNew in progress:" &vbCr &_

     "Data in buffer = " &rstEmployees!emp_id &", " &_

     rstEmployees!fname &" " &rstEmployees!lname &vbCr &vbCr &_

     "Use Update to save buffer to recordset?"

  If MsgBox(strMessage, vbYesNoCancel) = vbYes Then

     rstEmployees.Update

     ' 转到新记录并显示结果数据。

     MsgBox "Data in recordset = " &rstEmployees!emp_id &", " &_

         rstEmployees!fname &" " &rstEmployees!lname

  Else

     rstEmployees.CancelUpdate

     MsgBox "No new record added."

  End If

  ' 删除新数据,因为这只是演示。

  cnn1.Execute "DELETE FROM employee WHERE emp_id = '" &strEmpID &"'"

  rstEmployees.Close

End Sub

Update 方法(远程数据),将复制缓冲区行的内容保存到一个指定的可更新的

rdoResultset 对象中,并废弃复制缓冲区。

语法

object.Update

object 所在处代表对象表达式,其值为“应用于”列表中的一个对象。

AddNew、Update、CancelUpdate 方法示例

下面的示例用以说明使用 AddNew

方法在基本表中添加一个新行。该例假定有权对这个表进行读写访问,所提供的列数据符合与该表相关的规则及其它的约束条件,并且该表有唯一的索引。用于 *** 作的数据值从窗体的三个

TextBox 控件中获得。注意这个表的唯一的关键字不在这儿提供,而自动提供的是—一个标识列。

Option Explicit

Dim er As rdoError

Dim cn As New rdoConnection

Dim qy As New rdoQuery

Dim rs As rdoResultset

Dim col As rdoColumn

Private Sub AddNewJob_Click()

On Error GoTo ANEH

With rs

  .AddNew

  !job_desc = JobDescription

  !min_lvl = MinLevel

  !max_lvl = MaxLevel

  .Update

End With

Exit Sub

UpdateFailed:

MsgBox "Update did not suceed."

rs.CancelUpdate

Exit Sub

A

NEH:

Debug.Print Err, Error

For Each er In rdoErrors

  Debug.Print er

Next

Resume UpdateFailed

   

End Sub

Private Sub Form_Load()

cn.CursorDriver = rdUseOdbc

cn.Connect = "uid=pwd=server=sequel" _

  &"driver={SQL Server}database=pubsdsn=''"

cn.EstablishConnection

With qy

  .Name = "JobsQuery"

  .SQL = "Select * from Jobs"

  .RowsetSize = 1

  Set .ActiveConnection = cn

  Set rs = .OpenResultset(rdOpenKeyset, _

     rdConcurRowver)

  Debug.Print rs.Updatable

End With

Exit Sub

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6759862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存