以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  删除表中所有记录不成功?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=20042)

--  作者:wzh198059
--  发布时间:2012/5/28 10:19:00
--  删除表中所有记录不成功?
请教高手:
我在设计主窗口时把table作为normal形式,并且,主窗口的afterload事件代码为:CurrentTable.Filter = "[_identify] Is null"  在把excel数据导入到此窗口中的table中后,点击“自动计算”按钮先判断导入excel内容是否有错误,当产生错误时想删掉table中的所有数据用了如下代码:
    If erro > 0 Then    \' erro 是提前设置的一个计算错误的变量
    messagebox.Show("开票明细资料或其它错误,请检查后重新导入计算!")
    for each r as row in currenttable.rows
    r.delete
    Next
    CurrentTable.DataTable.Save
    end if
测试不成功,每次执行完命令后都留有一行记录未能删除,请教错在那里!

“自动计算”按钮代码如下:
Dim d As Date = Date.Today
Dim str_m As String = "开票资料"
Dim str_d As String = Format(d,"yyyy年MM月") & str_m
Dim hjkpsl As Integer
Dim erro As Integer = 0   \'定义一个错误计数变量以便在核对"开票明细资料"时计数
If CurrentTable.Rows.Count > 0 Then
    \'首先判断开票明细资料的正确性!(方法:判断本次开票数量即"未开票数量"
    \' +原来开票的数量"累计开票数量"是否=订单数量"需求数量")
    For Each dr As Row In CurrentTable.Rows
        Dim ddh As String = dr("订单编号")
        Dim hh As Integer = dr("行号")
        Dim tbl As DataTable =DataTables("订单明细表")
        Dim dr_tbl As DataRow
        dr_tbl = tbl.Find("订单编号 = \'" & ddh & "\' and 行号 = \'" & hh & "\'")
        If dr_tbl IsNot Nothing Then
            Dim ljkpsl As Integer = dr_tbl("累计开票数量")
            Dim wkpsl As Integer = dr("未开票数量")
            Dim xqsl As Integer = dr_tbl("需求数量")
            hjkpsl = ljkpsl +wkpsl
            If hjkpsl >  xqsl Then
                erro = erro +1
            End If
        End If
    Next
Else
    messagebox.Show("请先导入需要核对的开票资料明细!")
End If
If erro > 0 Then
    messagebox.Show("开票明细资料或其它错误,请检查后重新导入计算!")
    Dim i As Integer = CurrentTable.Rows.Count   ‘ 改为此代码后提示索引超出范围????
    For i1 As Integer = 0 To i-1
        CurrentTable.Rows(i1).Delete()
    Next
    CurrentTable.DataTable.Save
ElseIf erro = 0 And CurrentTable.Rows.Count > 0
    Dim a As Double = DataTables("开票明细表").Compute("sum(开票金额)","开票明细名称 = \'" & str_d & "\'")
    Vars("kpzje") = a      \'把当月开票总金额的值赋给公共变量
    \'以下自动进行核对代码
    For Each dr As Row In CurrentTable.Rows
        Dim ddh As String = dr("订单编号")
        Dim hh As String = dr("行号")
        Dim tbl As DataTable =DataTables("订单明细表")
        Dim dr_tbl As DataRow
        dr_tbl = tbl.Find("订单编号 = \'" & ddh & "\' and 行号 = \'" & hh & "\'")
        If dr_tbl IsNot Nothing Then
            Dim ljkpsl As Integer = dr_tbl("累计开票数量")
            Dim wkpsl As Integer = dr("未开票数量")
            dr_tbl("累计开票数量") = dr_tbl("累计开票数量")+dr("未开票数量")
        End If
        tbl.Save
    Next
    CurrentTable.Filter = "[_identify] Is null"
    Forms("核对结果窗口").open
End If
先谢谢各位高手!


--  作者:wzh198059
--  发布时间:2012/5/28 10:35:00
--  


--  作者:wzh198059
--  发布时间:2012/5/28 10:46:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:a.png
图片点击可在新窗口打开查看


--  作者:狐狸爸爸
--  发布时间:2012/5/28 11:24:00
--  

理由在这里有详细的介绍:

 

http://www.foxtable.com/help/topics/0599.htm

 


--  作者:wzh198059
--  发布时间:2012/5/28 14:00:00
--  
谢谢狐狸爸爸,先看看!
--  作者:wzh198059
--  发布时间:2012/5/28 14:33:00
--  
问题已解决!谢谢狐爸!另外请教狐狸爸爸,诸如此类,删除时用for each语句是无法实现的?
--  作者:狐狸爸爸
--  发布时间:2012/5/28 17:30:00
--  
显然,这种情况,用For Each 是不行的。
--  作者:wzh198059
--  发布时间:2012/5/28 20:54:00
--  
谢谢狐爸,师者传道授业解惑也!希望自己有一天也能帮上别的狐友!