无奈,vb6中调试没问题,打包成exe文件执行老报"无效的过程调用或参数"

时间:2022-08-06 23:16:13
strSql = "Select Top 1 t1.FModel 规格,t1.F_102 品牌,t1.F_106 产地,t1.F_104 颜色,t2.FName 定量,t1.F_105 等级," & Chr(10)
        strSql = strSql & " IsNull(a.FAuxQty,0)-IsNull(a.FEntrySelfD0151,0) 涂布重量,IsNull((a.FEntrySelfD0150-isnull(a.FEntrySelfD0152,0)),0) 涂布长度," & Chr(10)
        strSql = strSql & " IsNull((a.FSecQty-ISNULL(a.FEntrySelfD0152,0)),0) 辅助涂布长度," & Chr(10)
        strSql = strSql & " a.FInterID 调拨单ID,a.FEntryID 调拨分录,a.FItemID 物料ID" & Chr(10)
        strSql = strSql & " ,t1.FNumber 物料代码" & Chr(10)
        strSql = strSql & " From ICStockBillEntry a" & Chr(10)
        strSql = strSql & " LEFT JOIN ICStockBill b On a.FInterID=b.FInterID /*单据头*/" & Chr(10)
        strSql = strSql & " LEFT JOIN t_ICItem t1 On t1.FItemID=a.FItemID    /*物料*/" & Chr(10)
        strSql = strSql & " LEFT JOIN t_Item t2 On t1.F_103=t2.FitemID And t2.FItemClassID = 3006 /*定量*/" & Chr(10)                                                         '20101102修改,未审核的单据,不能进行修改.
        strSql = strSql & " Where b.FTranType = 41 And a.FBatchNo='" & F原料编号 & "' and (a.FDCStockID=63481 or a.fDCStockID=149211) AND isnull(B.FCheckerID,'')<>''"       '限制只能在"成品车间仓库"和""生产一部半成品仓
        strSql = strSql & " AND A.FINTERID>100000"
        strSql = strSql & " ORDER BY A.FINTERID desc"
        Set lxpDB = K3conn.Execute(strSql)
        If lxpDB.EOF = False Then
          '我猜就是下面这里出的错,因为每次出错后,还会再弹出下面那个提示框"该卷纸已经分切完成"
           但我在vb6中调试,则没有问题,正常执行,弹出下面的提示框.(这里查询的结果有一条记录,而且lxpDB.Fields("涂布重量")是等于0的,这个结果不会有错.我用即时获得语句在查询分析器里查过的.)
            If Val(lxpDB.Fields("涂布重量") & "") <= 0 Then
                MsgBox "该卷纸已经分切完成!", vbInformation, "提示信息"
                Me.Text1(Index).Text = ""
                Me.Text1(Index).SetFocus
                Exit Sub
            End If
大家看看,这个问题到底是出在哪.最郁闷就是调试没有出现问题了...

14 个解决方案

#1


可以加msg 调试下,到底在哪里出的错

#2


可能是在你出错后按了"忽略"才会执行到下面的语句,应该与下面的语句没关系.
还是要确定你的数据库连接是否正常.

#3


引用 1 楼 rockets_nba 的回复:
可以加msg 调试下,到底在哪里出的错

我也想用这种方法, 但exe过大,打包一次就要去几分钟,麻烦啊.

#4


以上看不出问题。

一部分一部分注释掉,然后编译测试,直到查出错误位置。

#5


引用 4 楼 chinaboyzyq 的回复:
以上看不出问题。

一部分一部分注释掉,然后编译测试,直到查出错误位置。

也只能这样了,一想到生成exe要等的时间,就郁闷,谢了

#6


多半是你的这个strSql没有执行成功

#7


会不会是有控件没有注册呢?

#8


按上面的方法,最后的结果是这个提示的问题
MsgBox "该卷纸已经分切完成!", vbInformation, "提示信息"

- -!,这条语句哪里错了??
...是不是什么东西冲突了..

#9


引用 8 楼 wtnu200 的回复:
按上面的方法,最后的结果是这个提示的问题
MsgBox "该卷纸已经分切完成!", vbInformation, "提示信息"

- -!,这条语句哪里错了??
...是不是什么东西冲突了..

此语句没有问题

你是说注释掉此语句就没有问题了?  无奈,vb6中调试没问题,打包成exe文件执行老报"无效的过程调用或参数"

#10


测试:
MsgBox "该卷纸已经分切完成!", 64, "提示信息"

#11


你的sql语句在查询分析器中可以正确执行,并不意味着你在程序中可以正确执行,程序中SQL语句是通过数据库引擎执行的,比如你语句中类似 /*单据头*/ 这个东西是么?sql查询分析中的注释和vb的注释不一样的,数据库引擎应该同样不能识别,估计这就是问题所在.....

#12


引用 9 楼 chinaboyzyq 的回复:
引用 8 楼 wtnu200 的回复:

按上面的方法,最后的结果是这个提示的问题
MsgBox "该卷纸已经分切完成!", vbInformation, "提示信息"

- -!,这条语句哪里错了??
...是不是什么东西冲突了..

此语句没有问题

你是说注释掉此语句就没有问题了?

是啊,注释掉就没有问题,而这条语句本来就没有问题.
最奇怪的是,这条语句造成问题,但还会弹出提示.这个让我怀疑是不是这条语句的问题,但是一注释它,就没问题了...

#13


引用 11 楼 vbman2003 的回复:
你的sql语句在查询分析器中可以正确执行,并不意味着你在程序中可以正确执行,程序中SQL语句是通过数据库引擎执行的,比如你语句中类似 /*单据头*/ 这个东西是么?sql查询分析中的注释和vb的注释不一样的,数据库引擎应该同样不能识别,估计这就是问题所在.....

这些sql语句没有问题的.因这个过程正常情况下是没有问题的.只是如果当If Val(lxpDB.Fields("涂布重量") & "") <= 0 Then这个条件满足时才会出错.
/*单据头*/ 是放在字符串中的,放到sql中的话就是注释了

#14


另建一个程序,单独测试
MsgBox "该卷纸已经分切完成!", vbInformation, "提示信息"
是否有问题。

#1


可以加msg 调试下,到底在哪里出的错

#2


可能是在你出错后按了"忽略"才会执行到下面的语句,应该与下面的语句没关系.
还是要确定你的数据库连接是否正常.

#3


引用 1 楼 rockets_nba 的回复:
可以加msg 调试下,到底在哪里出的错

我也想用这种方法, 但exe过大,打包一次就要去几分钟,麻烦啊.

#4


以上看不出问题。

一部分一部分注释掉,然后编译测试,直到查出错误位置。

#5


引用 4 楼 chinaboyzyq 的回复:
以上看不出问题。

一部分一部分注释掉,然后编译测试,直到查出错误位置。

也只能这样了,一想到生成exe要等的时间,就郁闷,谢了

#6


多半是你的这个strSql没有执行成功

#7


会不会是有控件没有注册呢?

#8


按上面的方法,最后的结果是这个提示的问题
MsgBox "该卷纸已经分切完成!", vbInformation, "提示信息"

- -!,这条语句哪里错了??
...是不是什么东西冲突了..

#9


引用 8 楼 wtnu200 的回复:
按上面的方法,最后的结果是这个提示的问题
MsgBox "该卷纸已经分切完成!", vbInformation, "提示信息"

- -!,这条语句哪里错了??
...是不是什么东西冲突了..

此语句没有问题

你是说注释掉此语句就没有问题了?  无奈,vb6中调试没问题,打包成exe文件执行老报"无效的过程调用或参数"

#10


测试:
MsgBox "该卷纸已经分切完成!", 64, "提示信息"

#11


你的sql语句在查询分析器中可以正确执行,并不意味着你在程序中可以正确执行,程序中SQL语句是通过数据库引擎执行的,比如你语句中类似 /*单据头*/ 这个东西是么?sql查询分析中的注释和vb的注释不一样的,数据库引擎应该同样不能识别,估计这就是问题所在.....

#12


引用 9 楼 chinaboyzyq 的回复:
引用 8 楼 wtnu200 的回复:

按上面的方法,最后的结果是这个提示的问题
MsgBox "该卷纸已经分切完成!", vbInformation, "提示信息"

- -!,这条语句哪里错了??
...是不是什么东西冲突了..

此语句没有问题

你是说注释掉此语句就没有问题了?

是啊,注释掉就没有问题,而这条语句本来就没有问题.
最奇怪的是,这条语句造成问题,但还会弹出提示.这个让我怀疑是不是这条语句的问题,但是一注释它,就没问题了...

#13


引用 11 楼 vbman2003 的回复:
你的sql语句在查询分析器中可以正确执行,并不意味着你在程序中可以正确执行,程序中SQL语句是通过数据库引擎执行的,比如你语句中类似 /*单据头*/ 这个东西是么?sql查询分析中的注释和vb的注释不一样的,数据库引擎应该同样不能识别,估计这就是问题所在.....

这些sql语句没有问题的.因这个过程正常情况下是没有问题的.只是如果当If Val(lxpDB.Fields("涂布重量") & "") <= 0 Then这个条件满足时才会出错.
/*单据头*/ 是放在字符串中的,放到sql中的话就是注释了

#14


另建一个程序,单独测试
MsgBox "该卷纸已经分切完成!", vbInformation, "提示信息"
是否有问题。