可以先到一个临时表,然后成批insert

解决方案 »

  1.   

    楼上的是说新建一个DataTable吗,如何操作
      

  2.   

    用insert的话效率太低了?
    不insert 又能怎么办呢?不过应该可以使用批更新模式,insert完后再updatebatch
      

  3.   

    If Not rsLotID.EOF Then rsLotID.MoveFirst
               Do While Not rsLotID.EOF
                    sql = " insert into wtpnlm(ENTITYID,PNLID,PNLGRADE,PNLLEVEL,HIDEFLG,MOVEFLG,CARTID,FABID) "
                    sql = sql & "   VALUES(" & kk(rsLotID.Fields("LotID").Value) & "," & kk(rsLotID.Fields("PanelID").Value) & "," & kk(rsLotID.Fields("panelgrade").Value) & "," & kk(rsLotID.Fields("panellevel").Value) & ",'0','0'," & kk(rsLotID.Fields("cartonid").Value) & "," & kk(G_Fac) & ") "
                    cltSQL.add sql
                    rsLotID.MoveNext
                Loop
            If cltSQL.Count > 0 Then
                blnSqlOK = True
                DEDW.cnWIP.BeginTrans
                For i = 1 To cltSQL.Count
    '               Call SQLExec(cltSQL.Item(i), DEDW.cnWIP)
                    If SQLExec(cltSQL.Item(i), DEDW.cnWIP) = False Then
                        blnSqlOK = False
                        DEDW.cnWIP.RollbackTrans
                        Set cltSQL = Nothing
                        MsgBox "插入失敗,請重新作業!!!!", vbInformation, "訊息示窗"
                        Exit For
                    End If
                Next i
                If blnSqlOK = True Then
                    DEDW.cnWIP.CommitTrans
                    Set cltSQL = Nothing
                    MsgBox "插入成功!!!", vbInformation, "訊息示窗"
                    
                'sqlupwt = " update wtltm set unittraceflg='A' where tolotid=" & kk(TxtLotID.Text) & " and hideflg='0' and trackflg='1' and fabid='7'"
                    sqlupwt = " update wtltm set unittraceflg='A' where tolotid=" & kk(TxtLotID.Text) & " and hideflg='0' and trackflg='1' and fabid=" & kk(G_Fac) & ""
                    Call SQLExec(sqlupwt, DEDW.cnWIP)
                    If SQLExec(sqlupwt, DEDW.cnWIP) = True Then
                        MsgBox "修改成功!!!", vbInformation, "訊息示窗"
                       
                    ElseIf SQLExec(sqlupwt, DEDW.cnWIP) = False Then
                        MsgBox "修改失敗!!!", vbInformation, "訊息示窗"
                    End If
                End If
            End If
        Else
            MsgBox "輸入的行數不對!!!", vbInformation, "警告"
            Exit Sub
        End If
      

  4.   


     用Oracle 提供的0040对象(oracle objects for OLE), 
     创建参数数组,可以批量提交。速度很快.