在窗体中声明以下变量:
Dim cnn1 As ADODB.Connection ‘连接
Dim mycommand As ADODB.Command ‘命令
Dim parm_jobid As ADODB.Parameter ‘参数1
Dim parm_joblvl As ADODB.Parameter ‘参数2
Dim rstByQuery As ADODB.Recordset ‘结果集
Dim strCnn As String ‘连接字符串
在窗体的LOAD事件中加入如下代码:
Set cnn1 = New ADODB.Connection
‘生成一个连接
strCnn = "DSN=MYDSN;uid=sa;pwd="
‘创建的系统数据源MYDSN指向PUBS数据库
cnn1.Open strCnn ‘打开连接
在窗体的UNLOAD中的加入代码如下:
cnn1.Close ‘关闭连接
Set cnn1 = Nothing ‘释放连接
在按钮中的代码如下:
Dim i As integer
Dim j as integer
Set parm_jobid = New ADODB.Parameter
Set mycommand = New ADODB.Command
' parm_jobid.Name = "name1"
this line can be ommited
parm_jobid.Type = adInteger ‘参数类型
parm_jobid.Size = 3 ‘参数长度
parm_jobid.Direction = adParamInput
‘参数方向,输入或输出
parm_jobid.value = 100 ‘参数的值
mycommand.Parameters.Append
parm_jobid ‘加入参数
mycommand.ActiveConnection = cnn1
‘指定该command 的当前活动连接
mycommand.CommandText = " myprocedure "
‘myprocedure 是你要调用的存储过程名称
mycommand.CommandType = adCmdStoredProc
‘表明command 为存储过程
Set rstByQuery = New ADODB.Recordset
Set rstByQuery = mycommand.Execute()
i = 0
Do While Not rstByQuery.EOF
i = i + 1 ‘ i 中保存记录个数
rstByQuery.MoveNext
Loop
MSFlexGrid1.Rows = i + 1
‘动态设置MSFlexGrid的行和列
MSFlexGrid1.Cols = rstByQuery.Fields.Count + 1
MSFlexGrid1.Row = 0
For i = 0 To rstByQuery.Fields.Count - 1
MSFlexGrid1.Col = i + 1
MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name
Next ‘设置第一行的标题,用域名填充
i = 0
Set rstByQuery = mycommand.Execute()
Do While Not rstByQuery.EOF
i = i + 1
MSFlexGrid1.Row = i ‘确定行
For j = 0 To rstByQuery.Fields.Count - 1
MSFlexGrid1.Col = j + 1
MSFlexGrid1.Text = rstByQuery (j)
‘添充所有的列
Next
rstByQuery.MoveNext
cn.begintrans
on error goto InsertErr
with rsmain
.addnew
.fields(0).value=text1.text
.................
.update
end with
for i=0 to txt.count-1
with rsdetail
.addnew
.fields(i).value=txt(i).text
...........
.update
end with
next
cn.CommitTrans
exit sub
InsertErr:
cn.RollbackTrans
msgbox "ERROR",vbinformation,"AAA"
end sub
第三:(大型数据库SQL Server)
private sub TSave()
dim sqlstr as string
sqlstr="Begin trans insert into table(field1,....fieldn) values(value1,value2.....valuen) comm trans"
cn.execute(sqlstr)
end sub
第一:
private sub TSave()
cn.begintrans
on error goto InsertErr
cn.execute(SQL语句)
cn.CommitTrans
exit sub
InsertErr:
cn.RollbackTrans
msgbox "ERROR",vbinformation,"AAA"
end sub
第二:
private sub TSave()
dim rsMain as new adodb.recordset‘主表
dim rsDetail as new adodb.recordset’明细表
连接自己写