首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB SQL操作有关问题

2012-02-10 
VB SQL操作问题Dim objcon As New ADODB.ConnectionSet objcon New ADODB.Connectionobjcon.Open strcon

VB SQL操作问题
Dim objcon As New ADODB.Connection
 Set objcon = New ADODB.Connection
 objcon.Open strconn
 inser = "insert into hr_tm_MonthResult(cpsn_num,vdepcode,cyear,cMonth,cpsn_name,nworkdays,nrealdays,nsalaryrestdays,nnosalaryrestdays,nabsenthour,nbu00leavetypedays,userdef001) values('" & spnum & "','" & sdepcode & "','" & dyear & "','" & smonth & "','" & sname & "'," & dmonthday & "," & dkaoqin & "," & dyouxin & "," & dqinjia & "," & dkuanggong & "," & dyouxin & "," & dlouka & ")"
 query = "select cpsn_name,cpsn_num,cdept_num from hr_hi_person where cpsn_name = '" & sname & "'"
 Dim rs As ADODB.Recordset
 Set rs = New ADODB.Recordset

 rs.Open query, strconn, adOpenDynamic, adLockBatchOptimistic

 If rs.RecordCount = 0 Then
 MsgBox "" & scomname & "系统没有" & sname & "此用户,请检查人员名称是否正确!"
 Else
 rs.MoveFirst
 spnum = CStr(rs.Fields(1).Value)
 sdepcode = CStr(rs.Fields(2).Value)

 rs.close
 rs.CursorLocation = adUseClient
 rs.Open sel, strconn, adOpenDynamic, adLockBatchOptimistic

 If rs.RecordCount = 0 Then
 objcon.Execute inser
 Else
 objcon.Execute up
 End If
 End If
 rs.close
 objcon.close

 当执行objcon.Execute inser这个动作的时候,插入数据库的第一条记录spnum ,sdepcode这两列都是空的,而第二条记录这两列取的数据是第一列应该有的数据,依此类推,
 我在执行INSER之前用MSGBOX查看地过,spnum,sdepcode这两个变量的数量是对的啊,插入就变为空了,

[解决办法]
你把程序执行顺序弄错了,先赋值,再连接字串:

VB code
Dim objcon As New ADODB.Connection Set objcon = New ADODB.Connection objcon.Open strconn query = "select cpsn_name,cpsn_num,cdept_num from hr_hi_person where cpsn_name = '" & sname & "'" Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open query, strconn, adOpenDynamic, adLockBatchOptimistic If rs.RecordCount = 0 Then MsgBox "" & scomname & "系统没有" & sname & "此用户,请检查人员名称是否正确!" Else rs.MoveFirst spnum = CStr(rs.Fields(1).Value) sdepcode = CStr(rs.Fields(2).Value) rs.close rs.CursorLocation = adUseClient rs.Open sel, strconn, adOpenDynamic, adLockBatchOptimistic If rs.RecordCount = 0 Then inser = "insert into hr_tm_MonthResult(cpsn_num,vdepcode,cyear,cMonth,cpsn_name,nworkdays,nrealdays,nsalaryrestdays,nnosalaryrestdays,nabsenthour,nbu00leavetypedays,userdef001) values('" & spnum & "','" & sdepcode & "','" & dyear & "','" & smonth & "','" & sname & "'," & dmonthday & "," & dkaoqin & "," & dyouxin & "," & dqinjia & "," & dkuanggong & "," & dyouxin & "," & dlouka & ")" objcon.Execute inser Else objcon.Execute up End If End If rs.close objcon.close 

热点排行