标题:新人剛接觸,請大佬幫忙解惑,我底下If (floor = 2)的語句不執行,怎麼寫才 ...
只看楼主
tianxia978
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-11-19
结帖率:100%
已结贴  问题点数:20 回复次数:9 
新人剛接觸,請大佬幫忙解惑,我底下If (floor = 2)的語句不執行,怎麼寫才能整個判斷執行,謝謝!
Private Sub show_gd_son8(PCBNO As String)
Dim Rs                        As New ADODB.Recordset
Dim strSql                    As String

    strSql = " select SUBSTRING(PcbNo,6,1) as floor ,PlatLength/25.4 as PlatLength,PlatWidth/25.4 as PlatWidth " & _
    " from  cyerp.dbo.tblEng_WorkDirection_Plating " & _
    " where SH_Status=1 and PcbNo='" & Trim(PCBNO) & "'  "
   
    If Rs.State = adStateOpen Then Rs.Close
    With Rs
       .Source = strSql
       .Open , gConnection, adOpenStatic, adLockReadOnly, 1
    End With
    If Rs.EOF Then
    Exit Sub
    End If
      
    floor = Rs.Fields("floor").Value
    PlatLength = Rs.Fields("PlatLength").Value
    PlatWidth = Rs.Fields("PlatWidth").Value
      
    If floor > 2 Then
    strSql = " select YaheWLen as WLen,YaheJLen as JLen from  cyerp.dbo.tblEng_WorkDirection_PressMerge " & _
    " where SH_Status=1 and PcbNo='" & Trim(PCBNO) & "'  "

    End If

    If Rs.State = adStateOpen Then Rs.Close
    With Rs
        .Source = strSql
        .Open , gConnection, adOpenStatic, adLockReadOnly, 1
    End With
    If Rs.EOF Then
    Exit Sub
    End If

    WLen = Rs.Fields("WLen").Value
    JLen = Rs.Fields("JLen").Value

    If (PlatLength <> WLen) Or (PlatWidth <> JLen) Then
    MsgBox "多層板壓合撈邊尺寸有誤", vbOKOnly, "警告"
    End If
   
 
    If (floor = 2) Then
    strSql = " select cutlengthIn,cutwidthIn from  cyerp.dbo.tblEng_WorkDirection_Cutter " & _
    " where SH_Status=1 and PcbNo='" & Trim(PCBNO) & "' "
    End If
   
    If Rs.State = adStateOpen Then Rs.Close
    With Rs
        .Source = strSql
        .Open , gConnection, adOpenStatic, adLockReadOnly, 1
    End With
    If Rs.EOF Then
    Exit Sub
    End If

   cutlengthIn = Rs.Fields("cutlengthIn").Value
   cutwidthIn = Rs.Fields("cutwidthIn").Value

   If (PlatLength<> cutlengthIn) Or (PlatWidth<> cutwidthIn) Then

   MsgBox "雙層板開料尺寸有誤", vbOKOnly, "警告"

   End If


[此贴子已经被作者于2020-11-20 18:25编辑过]

搜索更多相关主题的帖子: Fields Value Then End If 
2020-11-20 18:22
cwa9958
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:247
专家分:1228
注 册:2006-6-25
得分:0 
你在这个语句上设置个断点,看看有没有运行到这条语句,看看floor的值是多少。
2020-11-21 08:33
tianxia978
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-11-19
得分:0 
回复 2楼 cwa9958
上面floor>2的可以拿到,並且能夠執行,從floor=2 開始就出問題了,難道我得從寫一個floor=2的方法?我想寫在一個方法里分別判斷執行的,
2020-11-21 08:50
cwa9958
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:247
专家分:1228
注 册:2006-6-25
得分:15 
我就是确定你的有没有运行到这一句。
还有,刚才没有仔细看,你的程序的逻辑有问题。
改为这样试试看。
程序代码:
If floor > 2 Then
    strSql = " select YaheWLen as WLen,YaheJLen as JLen from  cyerp.dbo.tblEng_WorkDirection_PressMerge " & _
    " where SH_Status=1 and PcbNo='" & Trim(PCBNO) & "'  "

    If Rs.State = adStateOpen Then Rs.Close
    With Rs
        .Source = strSql
        .Open , gConnection, adOpenStatic, adLockReadOnly, 1
    End With
    If Rs.EOF Then
    Exit Sub
    End If

    WLen = Rs.Fields("WLen").Value
    JLen = Rs.Fields("JLen").Value

    If (PlatLength <> WLen) Or (PlatWidth <> JLen) Then
    MsgBox "多層板壓合撈邊尺寸有誤", vbOKOnly, "警告"
    End If
    
  End If

 
  If (floor = 2) Then
    strSql = " select cutlengthIn,cutwidthIn from  cyerp.dbo.tblEng_WorkDirection_Cutter " & _
    " where SH_Status=1 and PcbNo='" & Trim(PCBNO) & "' "
    
    If Rs.State = adStateOpen Then Rs.Close
    With Rs
        .Source = strSql
        .Open , gConnection, adOpenStatic, adLockReadOnly, 1
    End With
    If Rs.EOF Then
    Exit Sub
    End If

   cutlengthIn = Rs.Fields("cutlengthIn").Value
   cutwidthIn = Rs.Fields("cutwidthIn").Value

   If (PlatLength<> cutlengthIn) Or (PlatWidth<> cutwidthIn) Then

   MsgBox "雙層板開料尺寸有誤", vbOKOnly, "警告"

   End If

 End If
收到的鲜花
  • tianxia9782020-11-21 15:44 送鲜花  1朵   附言:很給力,完美解決
2020-11-21 10:28
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:5 
既然 If floor > 2 Then 以后的语句能够执行,说明 floor 的值是大于 2 的,那么 If (floor = 2) Then 以后的语句肯定不会执行了。
如果 floor 的值 = 2,那么仅仅执行的是  If (floor = 2) Then 以后的语句,而 If floor > 2 Then 以后的语句就不会执行了。
如果  floor 的值 < 2,那么  If floor > 2 Then 与  If (floor = 2) Then 以后的语句均不会执行了。
因此关键是 floor 的值决定程序应该执行那些语句,不执行那些语句的。其他的没有详细看,如果还要什么问题,再探讨。
收到的鲜花
  • tianxia9782020-11-21 15:42 送鲜花  1朵   附言:多謝分析

请不要选我!!!
2020-11-21 11:42
tianxia978
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-11-19
得分:0 
回复 4楼 cwa9958
多謝大哥,你的代碼幫我去掉了end if 之後現在都能根據條件執行了,滿足了我的需求。
在幫我看看這個圖片   
  的問題能弄好嗎,執行時提示automation 錯誤,找不到知道你個模組。
2020-11-21 13:49
tianxia978
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-11-19
得分:0 
回复 5楼 ZHRXJR
謝謝幫我分析阿。
2020-11-21 13:51
cwa9958
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:247
专家分:1228
注 册:2006-6-25
得分:0 
回复 6楼 tianxia978
不是去掉了endif,是挪了地方了。
你原来的代码逻辑有问题。

现在的错误,只有图片,谁也不知道是什么问题。错误出在哪个代码上,是什么情况下出的错误

[此贴子已经被作者于2020-11-21 15:15编辑过]

2020-11-21 15:12
tianxia978
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-11-19
得分:0 
回复 8楼 cwa9958
原本這個程式在別的電腦上點擊預覽會調出EXCEL都正常,不會報錯,我電腦沒安裝VB,安裝之後把那個程式拷到我電腦上運行點擊預覽就報automation錯誤,找不到指定模組,也不知道是沒配置好還是沒有引用什麽插件,還是電腦缺失文件,反正已經重裝了軟件4次了。網上搜了一下regsvr32 MSINET.OCX註冊,也不起作用。
2020-11-21 15:39
l满满
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-11-26
得分:0 
刚好我也新手,白瞟
2020-11-26 14:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503950-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.485461 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved