我在公用模块中定义了一个sql语句操作函数
Public Function Connectstring() As String
'Dim Str_path As String
Str_path = App.Path & "\" & "database\MoneyMIS.mdb"
Connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & Str_path & "';Persist Security Info=False"
End FunctionPublic Function ExeCutesql(ByVal Sql As String, Msgstring As String) As ADODB.Recordset
       Dim Cnn As ADODB.Connection
       Dim Rst As ADODB.Recordset
       Dim Stokens() As String 
       
'       On Error GoTo executesql_error
       Stokens = Split(Sql) 
       Set Cnn = New ADODB.Connection
       Cnn.Open Connectstring
              
       If InStr("INSERT,DELETE,UPDATE", UCase$(Stokens(0))) Then
          Cnn.Execute Sql
        
       Else
          Set Rst = New ADODB.Recordset
          Rst.Open Trim$(Sql), Cnn, adOpenKeyset, adLockOptimistic 
          Set ExeCutesql = Rst
          
       End If
              
executesql_exit:
     Set Rst = Nothing 'ÊͷżÇ¼¼¯
     Set Cnn = Nothing 'ÊÍ·ÅÁ¬½ÓÓï¾ä
     Exit Function
executesql_error:
       
       Resume executesql_exit
End Function然后用如下语句进行操作,但是没有作用,请问可能是什么原因呢
sqlstr = "insert into BorrowMoney " & "(BorrowMoneyDateIn,BorrowMoneyDateOut," & _
    "BorrowMoneyNameIn,BorrowMoneyNameOut,BorrowMoneyNum,BorrowMoneyBZ)" & _
         "values(" & "'" & Me.DTPicker1.Value & "'," & _
                    "'" & Me.DTPicker2.Value & "'," & _
                    num & "," & _
                    "'" & Me.Text1.Text & "'," & _
                    Val(Me.Text2.Text) & "," & _
                    "'" & Me.Text3.Text & "');"
Set rsdb = ExeCutesql(sqlstr, str_text)其他的sql语句都没有问题可以正常使用,但是这个就不行,我试过了用可视化数据管理器来验证这条语句,没有问题,但是一放到程序中就没有作用了

解决方案 »

  1.   

    我用逐语句调试,结果发现程序调用
    Public Function Connectstring() As String
    'Dim Str_path As String
    Str_path = App.Path & "\" & "database\MoneyMIS.mdb"
    Connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & Str_path & "';Persist Security Info=False"
    End FunctionPublic Function ExeCutesql(ByVal Sql As String, Msgstring As String) As ADODB.Recordset
    Dim Cnn As ADODB.Connection
    Dim Rst As ADODB.Recordset
    Dim Stokens() As String' On Error GoTo executesql_error
    Stokens = Split(Sql)
    Set Cnn = New ADODB.Connection
    Cnn.Open ConnectstringIf InStr("INSERT,DELETE,UPDATE", UCase$(Stokens(0))) Then
    Cnn.Execute SqlElse
    Set Rst = New ADODB.Recordset
    Rst.Open Trim$(Sql), Cnn, adOpenKeyset, adLockOptimistic
    Set ExeCutesql = RstEnd Ifexecutesql_exit:
    Set Rst = Nothing 'ÊͷżÇ¼¼¯
    Set Cnn = Nothing 'ÊÍ·ÅÁ¬½ÓÓï¾ä
    Exit Function
    executesql_error:Resume executesql_exit
    End Function的时候在
    If InStr("INSERT,DELETE,UPDATE", UCase$(Stokens(0))) Then
    Cnn.Execute Sql
    之后直接跳出了这个函数,请问这个是什么原因?
      

  2.   

    不是吧,把你运行的SQL语句发上来睇一下!
      

  3.   

    我已经找到问题所在了,因为我自己改动过系统的时间显示格式,可能是这个造成数据不能正常写入数据库(我的数据中有日期格式的数据)。
    但是现在又出现了一个问题,我把时间格式改回默认的之后,DTPicker的值写入数据库的时候有日期和时间,而这之前都是只有日期的,我怎么样才能让DTPicker的值写入数据库的时候能只要日期不要时间?
      

  4.   

    你先把这人日期格式Format了再放到数据库就可以啦!
    注意,Format(Date , "DD\MM\YYYY")一定要是对日期格式进行。