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这两个变量的数量是对的啊,插入就变为空了,

解决方案 »

  1.   

    你把程序执行顺序弄错了,先赋值,再连接字串:
    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