Foxtable(狐表)用户栏目专家坐堂 → 代码疑问


  共有14046人关注过本帖树形打印复制链接

主题:代码疑问

帅哥哟,离线,有人找我吗?
卟离卟弃
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
代码疑问  发帖心情 Post By:2010/10/15 10:03:00 [显示全部帖子]

Dim b1 As String =Tables("客户端版本号")(0)("客户端版本号")
Dim b2 As String =Tables("服务器版本号")(0)("服务器版本号")
If b1 <> b2 Then
    MessageBox.Show("系统有更新,请更新文件!!", "提示")
    Forms("登陆窗口").Close()
    Forms("软件更新").OPEN()
End If

 

"服务器版本号" 与 "客户端版本号" 我改成一模一样的,也会 得到 MessageBox.Show("系统有更新,请更新文件!!", "提示") 这个提示,,改成不一样的,也会有提示.

If b1 <> b2 Then搞不懂这个怎么失效了.

 

版本号 列都是 字符型, 长度都是10

 

求解,,杂回事呢?

 


 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/10/15 10:13:00 [显示全部帖子]

Tables("客户端版本号")(0)("客户端版本号")  在 客户端版本号 中输入 10 个 C
Tables("服务器版本号")(0)("服务器版本号")  在 服务器版本号 中输入 10 个 C
If b1 <> b2 Then  判断成功

 

 

Tables("客户端版本号")(0)("客户端版本号")  在 客户端版本号 中输入 1 个 C
Tables("服务器版本号")(0)("服务器版本号")  在 服务器版本号 中输入 1 个 C

If b1 <> b2 Then  判断不成功

 

不知道杂回事...求解...


 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/10/15 10:16:00 [显示全部帖子]

谢谢,程版

原来如此啊


 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/10/15 10:37:00 [显示全部帖子]

没有发布成系统时,测试登录窗口没有问题.

发布成系统后,又和一楼一模一样.......

 

登录窗口 AfterLoad 代码

 

Dim cmd As New SQLCommand
Dim dt As datatable
Dim cmb As WinForm.ComboBox = e.Form.Controls("UserName")
cmd.C
cmd.CommandText = "SELECT DISTINCT Name From {Users} where [设备清单]= 'Y' "
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.Datarows
    cmb.Items.Add(dr("Name"))
Next
cmb.SelectedIndex = 0
Forms("登陆窗口").Controls("PassWord").Select() '返回窗口中 TB1控件
Dim b1 As String =Tables("客户端版本号")(0)("客户端版本号")
Dim b2 As String =Tables("服务器版本号")(0)("服务器版本号")
If b1 = b2 Then
MessageBox.Show("不需要!!", "提示")
Else
    Dim Proc As New Process
    MessageBox.Show("系统有更新,请更新文件!!", "提示")
    Forms("登陆窗口").Close()
    Forms("软件更新").OPEN()
End If

[此贴子已经被作者于2010-10-15 10:38:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/11/1 10:25:00 [显示全部帖子]

以下是引用czy在2010-10-15 14:47:00的发言:

如果是sql数据源,我觉得按下面的步骤就可以了。

假设在原项目中进行升级:

 

'判断是否可以升级
'获取下载文件大小,将值保存到变量中
DownloadFile '下载更新文件到指定目录
'获取刚下载的文件的大小,将值保存到变量中
'比较服务器文件和已下载的文件大小是否一致(如果不一致说明下载中出错)
CopyFile '复制刚下载的文件,并重命名覆盖原项目    ,,,求解:程序正在打開運行狀態,這時覆盖原项目操作系統會自動提示錯誤啊.
DeleteFile '删除下载的文件
syscmd.Project.Open(ProjectFile) '重启项目


 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/11/1 11:33:00 [显示全部帖子]

以下是引用czy在2010-11-1 11:18:00的发言:

 

不会的,假设下载的文件名称为“test.Table”,保存在项目目录下的“test”文件夹中

 

FileSys.CopyFile(ProjectPath & test & "\test.Table",FileSys.GetFileInfo(ProjectFile).Name,True)

系統更新,應該是整個文件更新吧.test.Table 這只是單單一個文件,例:如果我的菜單發生變化.等等之類的更新..

 

整個系統更新,應該是複製整個文件夾吧.

C版是這樣的嗎?還是只需要更新一個文件


 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/11/1 14:05:00 [显示全部帖子]

C版

你看我升級按鈕的代碼

FileSys.CopyDirectory ("\\192.168.1.2\系统文件更新\其它\自动升级程序", "D:\零时文件\其它\自动升级程序", True ) '复制服务器发布的文件夹到客户端指定文件夹并覆盖原文件夹.
FileSys.MoveDirectory("D:\零时文件\其它\自动升级程序", "D:\零时文件\其它\自动升级程序二",FileSys.GetFileInfo(ProjectFile).Name,True)
Dim Proc As New Process '定义一个新的Process
Proc.File = "d:\零时文件\其它\自动升级程序二\自动升级程序\wyq.exe" '指定文件路径
Proc.Start()'打开文件
Syscmd.Project.Exit(False)

 

測試的時候,能夠檢測到文件是否需要更新,只是更新按鈕代碼出問題

提示錯誤

 

 


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

 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/11/2 9:26:00 [显示全部帖子]

啊...

借助setup2go 軟件 基本上實現自動更新功能了

 

我是這樣做的,

把程序製作成為EXE安裝文件. 這樣更新的時候只要從服務器中複製下來,然後執行安裝就可以了.

 

在做成EXE安裝程序的時候,有兩個地方一定要先上

  1.程序自動安裝,不用要人工操作


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

 2.安裝後,自動運行


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

 

登錄窗口
 


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

 

登錄窗口 AFTERLOAD 事件代碼
Dim cmd As New SQLCommand
Dim dt As datatable
Dim cmb As WinForm.ComboBox = e.Form.Controls("UserName")
cmd.C
cmd.CommandText = "SELECT DISTINCT Name From {Users} where [设备清单]= 'Y' "
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.Datarows
    cmb.Items.Add(dr("Name"))
Next
cmb.SelectedIndex = 0
Forms("登陆窗口").Controls("PassWord").Select() '返回窗口中 TB1控件
Dim b1 As String =Tables("客户端版本号")(0)("客户端版本号")
Dim b2 As String =Tables("服务器版本号")(0)("服务器版本号")
If b1 = b2 Then
Else
    Dim Proc As New Process
    MessageBox.Show("系统有更新,请更新文件!!", "提示")
    Forms("登陆窗口").Close()
    Forms("软件更新").OPEN()
End If

確認升級按鈕代碼

If FileSys.FileExists("\\192.168.1.2\系统文件更新\其它\自动升级程序.exe") Then
    Network.DownloadFile("\\192.168.1.2\系统文件更新\其它\自动升级程序.exe","d:\零时文件\自动升级程序二\自动升级程序.exe","wyq","wyq7758520",True, 100000, True) '复制服务器发布的文件夹到客户端指定文件夹并覆盖原文件夹
    Dim Proc As New Process '定义一个新的Process
    Proc.File = "d:\零时文件\自动升级程序二\自动升级程序.exe" '指定文件路径
    Proc.Start()'打开文件
    Syscmd.Project.Exit(False)
    e.Form.TimerEnabled = False
Else
    Messagebox.Show("更新文件不存在或已经被删除!请联系管理员!","提示")
End If

 

 

呵,做成EXE文件,基本上可以,, 這種辦法可能很笨,我實在想不出了..

 

求更簡易的辦法..........


 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/11/2 11:27:00 [显示全部帖子]

試過,解压替换原文件的时候,提示错误,,,程序正在运行..无法进行操作....


 回到顶部