我现在处理接收代码然后分析保存,用的代码是下边的方法
If Mid(strData, 7, 2) = "F9" Then
'判断
然后保存
sqlinsert = "insert into [客车列尾运行数据] ([主机编号],[命令名称],[日期],[时间],[记录时间]) values ('" + Text2.Text + "','" + Text4.Text + "','" + Trim(Text3.Text) + "','" + Trim(Text8.Text) + "','" + Text9.Text + "')"
        rs_suminsert.CursorLocation = adUseClient
        rs_suminsert.Open sqlinsert, conn, adOpenKeyset, adLockPessimistic
        rs_suminsert.CursorLocation = adUseClient
If Mid(strData, 7, 2) = "F1" Then
'判断
然后保存
sqlinsert = "insert into [客车列尾运行数据] ([主机编号],[命令名称],[日期],[时间],[记录时间]) values ('" + Text2.Text + "','" + Text4.Text + "','" + Trim(Text3.Text) + "','" + Trim(Text8.Text) + "','" + Text9.Text + "')"
        rs_suminsert.CursorLocation = adUseClient
        rs_suminsert.Open sqlinsert, conn, adOpenKeyset, adLockPessimistic
............
............
'最后
End Sub
上边的代码每次保存的时候时候都调用rs_suminsert.CursorLocation = adUseClient
        rs_suminsert.Open sqlinsert, conn, adOpenKeyset, adLockPessimistic
这样我的程序处理起来会很慢,请教下论坛朋友,能不能我先判断处理我的代码,最后一次调用保存啊?

解决方案 »

  1.   

    方法错了:
    conn.Execute sqlinsert
      

  2.   

    楼上朋友能给讲下
    rs_suminsert.Open sqlinsert, conn, adOpenKeyset, adLockPessimistic 
    和你的
    conn.Execute sqlinsert区别吗。
    conn.Execute sqlinsert这个怎么用啊?谢谢
      

  3.   

    应该看看msdn中关于ado的操作,你就能明白了。可以多花一点时间来看了,想念认真看完后,你对ado的理解有一个比较大的提升。
      

  4.   

    用If ... Else...end if
      

  5.   

    Execute 方法可以直接执行一个SQL语句,你用recordset打开的方法来做不是说错了,而是效率显著会降低,recordset对象形成的过程完全可以不需要产生。
      

  6.   

    我现在用
    If Mid(strData, 5, 2) = "FD" Then
    .......
    ElseIf Mid(strData, 5, 2) = "F1" Then
    .....
    ElseIf Mid(strData, 5, 2) = "F2" Then
    .....
    ElseIf Mid(strData, 5, 2) = "F3" Then
    ......
    end if
        Adodc1.Recordset.AddNew
        Adodc1.Recordset.Fields("主机编号") = Text2.Text
        Adodc1.Recordset.Fields("机车编号") = Text7.Text
        Adodc1.Recordset.Fields("记录时间") = Text9.Text
        Adodc1.Recordset.Fields("时间") = Text8.Text
        Adodc1.Recordset.Fields("命令名称") = Text4.Text
        Adodc1.Recordset.Fields("状态参数") = Text5.Text
        Adodc1.Recordset.Fields("日期") = Text3.Text    Adodc1.Recordset.MoveNext
    这个方法寸,这样的效率行吗。这样运行起来机器会不会拖慢?
      

  7.   

    肯定不如
    Adodc1.Recordset.ActiveConnection.Execute = _
                "INSERT INTO 表名 VALUES (" & _
                 变量1 & "," 变量2 & ")"
      

  8.   

    这样比你之前的好点,不过还是不如直接调用execute方法
      

  9.   

    现在改成
    If Mid(strData, 5, 2) = "FD" Then 
    ....... 
    ElseIf Mid(strData, 5, 2) = "F1" Then 
    ..... 
    ElseIf Mid(strData, 5, 2) = "F2" Then 
    ..... 
    ElseIf Mid(strData, 5, 2) = "F3" Then 
    ...... 
    end if 
    Adodc1.Recordset.ActiveConnection.Execute = "insert into [客车列尾运行数据] ([命令名称],[记录时间],[机车编号],[状态参数],[日期],[时间],[主机编号]) values ('" + Text4.Text + "','" + Text9.Text + "','" + Text7.Text + "','" + Text5.Text + "','" + Trim(Text3.Text) + "','" + Trim(Text8.Text) + "','" + Text2.Text + "')"
    这样了。
    谢谢大家的讲解。
      

  10.   

    dim test as string 
    test=mid(strdata,5,2)
    将数据库连接与执行SQL语句写成函数或过程.如 sub insert_data(p1,p2)......end sub
    用SELECT CASE test
             case "f1"
                  insert_data p1,p2
             case "f2"
                  insert_data p1,p2
             case else
                  insert_data p1,p2
      end select