Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:总是不执行某些条件

1楼
edisontsui 发表于:2024/4/26 10:15:00
请看附页代码和3个问题,不知道为什么。谢谢。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:代码0426.rar


2楼
有点蓝 发表于:2024/4/26 10:32:00
按红色方式改,然后调试

                                            r1 = r1 + 1
                                            Dim drs As List(Of DataRow) = DataTables("生产计划").SQLSelect("[产品代号] = '" & ctns2(s2 - 1) & "' and [指令单号] = '" & ctns1(s1 - 1) & "' and  [生产年月] = '" & tx2 & "' ", "", "[_SortKey]")
                                           
                                            Dim T As String = "True"
                                            Dim i As Integer
                                            For Each dr As DataRow In drs
                                                'msgbox(1)
                                                i = i + 1
                                                msgbox("累计生产小时1=" & dr.isnull("累计生产小时1") & "," & dr("累计生产小时1") & "," & H1)
                                                msgbox("累计生产小时2=" & dr.isnull("累计生产小时2") & "," & dr("累计生产小时2") & "," & H1)
                                                If dr.isnull("累计生产小时1") = False AndAlso dr("累计生产小时1") >= H1 Then 
msgbox("累计生产小时1执行")
                                                    '总有一些数据行是满足这个条件的,但是总是不执行这里的代码
                                                    r2 = r2 + 1
                                                    T = "False"
                                                    msgbox("准时行数=" & r2)
                                                    Exit For
                                                ElseIf dr.isnull("累计生产小时2") = False AndAlso dr("累计生产小时2") >= H1 Then
msgbox("累计生产小时1   不执行,累计生产小时2执行")
                                                        '这里也一样,总有一些数据行是满足这个条件的,但是总是不执行这里的代码
                                                        r2 = r2 + 1
                                                        T = "False"
                                                        msgbox("准时行数=" & r2)
                                                        Exit For
                                                    Else
msgbox("累计生产小时1   不执行,累计生产小时2   不执行,这时 i=" & i & ",drs.count=" & drs.count)
                                                        '按道理,如果有满足上面的任何一个条件的数据的话,那么这样的数据行就不执行如下代码了,但是,所有数据行都会执行下面的代码
                                                        If i = drs.count Then
                                                            r9 = r9 + 1
                                                            Dim dr3 As DataRow = DataTables("未按时完成数据").AddNew()
                                                            dr3("工序") = "注塑"
                                                            dr3("数据来源") = "生产计划1"
                                                            dr3("piao号") = ctns1(s1 - 1) '指令单号
                                                            dr3("制造产品号") = ctns2(s2 - 1) '产品代号
                                                            dr3("要求生产数量") = q1
                                                            If drf5 IsNot Nothing Then
                                                                dr3("piao号日期") = drf5("要求开始交付日期")
                                                            end if
                                                        End If
                                                        'msgbox("T=" & T)
                                                End If
                                                
                                                If T = "False" Then 
                                                    Exit For 
                                                End If
                                                
                                            Next
3楼
edisontsui 发表于:2024/4/26 13:47:00
现在发现H1的值是无穷大,而这个问题的原因是前面有一个数据 drs1.count 的数据是0.
drs1.count 的来源是如下代码:
Dim drs1 As List(Of DataRow) = DataTables("生产计划").SQLSelect("[生产年月] = '" & tx2 & "' and [指令单号] <> '" & ctns1(s1 - 1) & "' and 产品代号 = '" & ctns2(s2 - 1) & "' ")
请问这句代码有问题吗?
4楼
有点蓝 发表于:2024/4/26 13:51:00
应该是木有符合条件的数据,或者没有保存数据。调试看看条件

msgbox("[生产年月] = '" & tx2 & "' and [指令单号] <> '" & ctns1(s1 - 1) & "' and 产品代号 = '" & ctns2(s2 - 1) & "' ")
5楼
edisontsui 发表于:2024/4/26 13:59:00
Dim drcnt As Integer = DataTables("生产计划").SQLCompute("count(生产年月)", "[生产年月] = '" & tx2 & "' and [指令单号] <> '" & ctns1(s1 - 1) & "'  and 产品代号 = '" & ctns2(s2 - 1) & "'") 
我用上面的代码来计算,drcnt 也一直是 0。
但是我用 
 msgbox("生产年月=" & tx2 & "  指令单号=" & ctns1(s1 - 1) & "  产品代号=" & ctns2(s2 - 1))

来测试的话,生产年月、指令单号、产品代号都是有数据的。


6楼
edisontsui 发表于:2024/4/26 14:00:00
哦,发现一个问题了。我再试一下。

7楼
edisontsui 发表于:2024/4/26 15:18:00
都找到原因了。谢谢。
8楼
有点蓝 发表于:2024/4/26 15:24:00
理解一下我给的调试代码,学会在调试的时候,显示一些关键的数据,方便跟踪分析各个步骤的执行情况。而不是简单抄帮助的messagebox.show(1)
共8 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 3 queries.