注册 登录
编程论坛 VB6论坛

vb打包后安装到其它电脑的问题

jxawgya 发布于 2011-05-30 09:36, 3070 次点击
在VB软件下在运行一切都可以。(在本机可以)打包后安装到其它电脑时运行查询不到数据,第一个查询(调用存储过程(sp_kjy_tj)的查询)没有数据,我用的是:
With Adodc1
             .ConnectionString = Conn
             .RecordSource = "sp_kjy_tj  " & _
             " '" & Trim(DTPicker1.Value) & "' " & "," & "'" & Trim(DTPicker2.Value) & "' "
             .Refresh


而另一个查询却可以,(用SQL语句查询)
adodc1
             .ConnectionString = Conn
             .RecordSource = "SELECT  * FROM ttt_view "
             .Refresh

如果是打包不成功的话,那第二个查询也应查询不到数据,请教?我用的VB+SQL2005在局或网内运行


[ 本帖最后由 jxawgya 于 2011-5-30 09:49 编辑 ]
30 回复
#2
jxawgya2011-05-30 15:25
后试了在XP下有的功能不行都不行,而在2003下却全部可以
#3
Artless2011-05-30 23:39
只有本站会员才能查看附件,请 登录
#4
jxawgya2011-05-31 07:42
存储过程(sp_kjy_tj)的名称,在XP下第一个查询没有结果,第二个查询可以,在2003系统下两个查询都可以。不知是什么原因,我用VB自带的打包工俱打包,后用HAP_Setup Factory7.0打包都一样,只能查询出部分,而我在本机上(XP系统)下运行一切都可以,不知什么原因?请各位指教。

[ 本帖最后由 jxawgya 于 2011-5-31 07:50 编辑 ]
#5
jxawgya2011-06-01 07:18
比较困惑,好不容易用VB做出来,打包后却出现问题,难道要将所有的电脑都安装 2003系统吗?望高手指点。不胜感谢。
#6
yyttdd632011-06-01 10:09
控件版本??
建议运行正常的电脑中把所有需用控件打包
把更换电脑替换
#7
不说也罢2011-06-01 11:45
检查或设置下CursorLocation/CommandType的属性。
调用存储过程的代码怎么会是那样子的?
#8
jxawgya2011-06-01 13:31
但是在2003系统下一切运行正常,
“如调用存储过程的代码怎么会是那样子的?”
另外我用换代码调用存储过程结果是一样的不行
Private Sub Command1_Click()
    Dim i As Integer
    Dim j As Integer
    Set parm_date1 = New ADODB.Parameter
    Set mycommand = New
    ' parm_jobid.Name = "name1"
    parm_date1.Type = adChar '参数类型
    parm_date1.Size = 10 '参数长度
    parm_date1.Direction = adParamInput
    '参数方向,输入或输出
    parm_date1.Value = DTPicker1.Value '参数的值
    mycommand.Parameters.Append parm_date1 '加入参数
    Set parm_date2 = New ADODB.Parameter
    'parm_joblvl.Name = "name2"
    parm_date2.Type = adChar
    parm_date2.Size = 10
    parm_date2.Direction = adParamInput
    parm_date2.Value = DTPicker2.Value
    mycommand.Parameters.Append parm_date2

    mycommand.ActiveConnection = cnn1
    '指定该command 的当前活动连接
    = "sp_kjy_tj"
    'myprocedure 是你要调用的存储过程名称
    = adCmdStoredProc
    '表明command 为存储过程
    Set rstByQuery = New ADODB.Recordset
    Set rstByQuery = mycommand.Execute()
    MSFlexGrid1.Rows = 1
    '动态设置MSFlexGrid的行和列
    MSFlexGrid1.Cols = rstByQuery.Fields.Count
    MSFlexGrid1.Row = 0
    For i = 0 To rstByQuery.Fields.Count - 1
        MSFlexGrid1.Col = i
        MSFlexGrid1.Text = (rstByQuery.Fields.Item(i).Name)
    Next '设置第一行的标题,用域名填充
    i = 1
    Do While Not rstByQuery.EOF
       MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
       MSFlexGrid1.Row = i '确定行
       For j = 0 To rstByQuery.Fields.Count - 1
           MSFlexGrid1.Col = j
             '添充所有的列
      If IsNull(rstByQuery(j)) Then
         MSFlexGrid1.Text = ""
        Else
       MSFlexGrid1.Text = rstByQuery(j)
      End If
       Next
       rstByQuery.MoveNext
       i = i + 1
    Loop

End Sub
#9
jxawgya2011-06-01 14:15
另外在2000系统下VB如何访问到SQL2005(通过ADO)我想在2000系统下打包后在测试,但是访问不到数据库(SQL2005)
#10
jxawgya2011-06-01 15:41
后我在另外的电脑上装上VB6.0,用VB打开程序时出现提示
不能加载Dapplayer3.0.578.69.703.dll 是否加载“
如加载后在运行的话,出现如上面的一样,第一个查询没有结果,第二个查询可以,不知为何?
后在本机下找到这个文件(在用VB打包的文件下)

[ 本帖最后由 jxawgya 于 2011-6-1 17:10 编辑 ]
#11
不说也罢2011-06-01 18:07
1、当前环境中没有SQL2005,无法为你测试
2、你用SF打包时,没有将SQL2005的客户端组件打包进去。SQL2005运行是需要.netframework支持的。
3、你之所以在WIN2003下能正常运行,是因为WIN XP之后的版本都自带了.netframework
#12
yyttdd632011-06-01 22:16
VB-PowerWrap 汉化版
#13
jxawgya2011-06-02 07:48
没有将SQL2005的客户端组件打包进去,是指哪些组件?能详细吗?另外为什么在XP下有部分功能又可以用呢?

[ 本帖最后由 jxawgya 于 2011-6-2 07:53 编辑 ]
#14
lowxiong2011-06-02 09:16
我以前做过sql2000的数据库,里面需要客户端根据需要改写数据表结构(不定期的软件升级需要),我也出现了设计时运行正常,安装到其他客户端后不能更改表结构(设计状态下sql server2000安装完整),我记得是分析所有安装所需的dll文件,找到这些dll所需要的其他dll后成功的。(我没用过存储过程,不熟悉,所以不敢肯定)

[ 本帖最后由 lowxiong 于 2011-6-2 09:20 编辑 ]
#15
jxawgya2011-06-02 09:27
另外我在没有安装SQL2000的电脑上用好设计的查询(调用存储过程的查询)却查询不出结果,而在装有SQL2000的电脑上可以查询到数据,是不是少了哪些DLL文件?如何添加这些文件?
#16
lowxiong2011-06-02 11:08
刚回家找了下我以前做的安装程序,你把下面的文件找到,放到安装文件里安装并注册,看行不:
sqlresld.dll、sqlsvc.dll、sqlsvc.RLL、sqlwid.dll、sqlwoa.dll。
这些文件在安装有sql2000的电脑上都找的到。
#17
jxawgya2011-06-02 11:37
sqlwid.dll、sqlwoa.dll 这两个文件没有找到,后试了还是不行。安装时的提示无法注册“Dapplayer3.0.578.69.703.dll 文件

[ 本帖最后由 jxawgya 于 2011-6-2 11:41 编辑 ]
#18
jxawgya2011-06-02 11:45
”放到安装文件里安装并注册“
手工注册——regsvr32   sqlresld.dll
对?

[ 本帖最后由 jxawgya 于 2011-6-2 11:48 编辑 ]
#19
jxawgya2011-06-02 11:58
在注册时出现 已加载sqlwoa.dll 但没有找到DLLREGISTERSERVER 输入点,无法注册文件。另外 这两文件在其它电脑中找到sqlwid.dll、sqlwoa.dll
#20
不说也罢2011-06-02 12:48
Dapplayer3.0.578.69.703.dll 用过的SQLSERVER版本中,没见过这个文件。刚搜了下,貌似是迅雷所带的DLL。楼主仔细瞅瞅
#21
不说也罢2011-06-02 13:01
解决此问题的办法,建议楼主在出现这个问题的机器上,安装下VB6,然后在这个机器上调试源程序,记住在调用存储过程的代码中,有处理错误代码的,先注释掉。

顺便再问一句,楼主的VB6打过SP6补丁吗?


[ 本帖最后由 不说也罢 于 2011-6-2 13:14 编辑 ]
#22
jxawgya2011-06-02 14:09
是的,我已经在出现问题的电脑中安装VB6.0,J并打好SP6补丁,在用VB启动程序的时出现提示
不能加载Dapplayer3.0.578.69.703.dll 是否加载“
如加载后在运行的话,在VB测试中,调用存储过程的查询没有结果(只出现表的列名,没有数据),第二个查询视图表却可以,不知为何?
后在本机下找到这个文件(在用VB打包的文件下)
是不是我在本机中安装过SQL2000,在出现问题的电脑没有安装SQL2000的原因?

”住在调用存储过程的代码中,有处理错误代码的,先注释掉。“
在调用存储过程的代码请版主帮我查一下。



[ 本帖最后由 jxawgya 于 2011-6-2 14:15 编辑 ]
#23
不说也罢2011-06-02 14:26
在你的问题没有完全解决前,建议你不要在出现此问题的电脑上安装任何一个版本的SQLSERVER,所有的调试请放在有问题的电脑上进行
楼主,你贴在8楼的代码行中没有处理错误的代码(on error...),所以不需要注释
我在七楼中,回复你注意设置下CursorLocation/CommandType属性。请将connection对象的CursorLocation属性设为adUseClient,即

mycommand.ActiveConnection=cnn1
mycommand.ActiveConnection.CursorLocation=adUseClient
另外,请逐个检查8楼参数类型与SQL2005的存储过程中的参数型是否完全一致
#24
不说也罢2011-06-02 14:27
下班后再关注你这个贴子吧
#25
jxawgya2011-06-02 15:19
按楼主所说
mycommand.ActiveConnection=cnn1
mycommand.ActiveConnection.CursorLocation=adUseClient
逐个检查8楼参数类型与SQL2005的存储过程中的参数型完全一致
但是还是一样的。
#26
不说也罢2011-06-02 17:55
有点儿怪了,如果楼主执行你在8楼的代码,调试的时候,VB6没有提示出现错误,说明代码全部顺利执行完毕,而且,参数传递给SERVER后,服务器已经完成存储过程的执行,既然到了这一楼,还是有这样的情况发生,你就要考虑是不是传递过去的参数出现了变化。特别是DTPicker2.Value和DTPicker2.Value的值。有的系统是短日期格式,有的系统是长日期格式。建议在传递之前格式化一下试试,保证长度不大于10
#27
不说也罢2011-06-02 17:58
此外,楼主还可以将Set rstByQuery = mycommand.Execute()这一行以下所有的代码注释掉,在此代码所在的窗体上添加一个Microsoft Hierarchical FlexGrid Control控件,也就是MSHFlexGrid,然后将刚才注释掉的代码换成Set MSHFlexGrid1.DataSource = rstByQuery 再试一下。
#28
不说也罢2011-06-02 18:09
还有,就是在 出状况的电脑中,记录下8楼代码执行后各个参数的实际值(用DeBug.Print DTPicker1.Value这样就行了 )然后,在SQL2005所在的电脑中运行SQL Server Management Studio调出来查询分析器,将实际的值直接写一个SQL查询语句在分析器里执行,看看什么结果。


#29
jxawgya2011-06-03 08:35
‘DTPicker2.Value和DTPicker2.Value的值。有的系统是短日期格式,有的系统是长日期格式’
楼主拨说是对的,调整电脑时间格式后,运行正常,
在此,向各位关心本帖的人员表示真挚的感谢,由于分数有限,只好平均散分了,请各位谅解。
再次表示感谢!

[ 本帖最后由 jxawgya 于 2011-6-3 09:17 编辑 ]
#30
不说也罢2011-06-11 21:26
回复 29楼 jxawgya
你虽然解决了你贴子中的问题,但必须提醒你一下,如果总是写C/S程序的话,最好在服务器端的存储过程里先将时间参数格式化。这样,无论客户端传递的时间参数是什么格式,都会先由服务器转换后进行运算。不然,有些问题你怎么查源码都查不了.
#31
普金2013-12-25 15:45
如何确定要打包进的所有程序中用的控件呢?
1