以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  数据库迁移后的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=99325)

--  作者:douglas738888
--  发布时间:2017/4/17 14:26:00
--  数据库迁移后的问题

请教老师,原来在本机电脑上装了SQLSERVER2008研发版的数据库,现把数据库迁移到阿里云的数据库SQLSERVER2008企业版,进行测试,出现以下问题

 

1. 从自定义登录窗口登录后,主窗口打不开,也不报错,不显示任何窗口,无法使用已设计好的项目;原来在本机连接的数据库上测试所有功能都是正常的.

 

迁移方式,采用的是任务——生成脚本,把脚本文件拷贝至阿里云服务器上,执行脚本文件

 

在设计项目上已修改数据库的连接都没有问题,也能从新的数据库调取数据,就是打不开主窗口。


--  作者:有点色
--  发布时间:2017/4/17 15:12:00
--  

 迁移数据库的方法尽量这样做:

 

方法一:备份还原。备份为bak文件,然后还原;

 

方法二:把数据库分离,然后拷贝,然后再附加上去。

 

 既然你没有修改到代码,那么你本来是怎样的,现在也是怎样的。


--  作者:有点色
--  发布时间:2017/4/17 15:15:00
--  

 既然是主窗口无法打开,那么你就既然msgbox定位一下是哪里有问题。执行show为什么不打开窗口。


--  作者:douglas738888
--  发布时间:2017/4/21 21:45:00
--  

请教老师,远程数据库重新按备份,再还原迁移数据库后,1楼的问题依然存在,经反复查验测试,主窗口的Timertick设置为False可以打开主窗口,设置为True启用代码就无法打开主窗口,主窗口的Timertick里有如下类似代码段二十多个,不知问题是否由类似代码导致,现在不知怎么解决了???

 

Dim pbx As WinForm.PictureBox = e.Form.Controls("PictureBox3")
Dim lbl As WinForm.Label = e.Form.Controls("Label130")
If lbl IsNot Nothing Then
   Dim Count As Double
   Count = DataTables("项目信息主表").SQLCompute("Count(项目编号)","信息甄批_投审人员 Like  \'%" & _UserName & "%\' and (信息甄批_投审确认 not Like \'%" & _UserName & "%\' or 信息甄批_投审确认 Is null)")
   If Count = 0 Then
        pbx.ImageFile = "Green.ico" 
        lbl.ForeColor = Color.Green  
    ElseIf Count >= 1 Then
        pbx.ImageFile= "Red.ico" 
        lbl.ForeColor = Color.Red  
    End If
lbl.Text = "" & Count & ""
Application.DoEvents() 
End If


--  作者:有点蓝
--  发布时间:2017/4/21 22:22:00
--  
1、确认连接到正确的数据库

2、打开窗口,把Timertick的代码放到命令窗口执行看有没有问题

--  作者:douglas738888
--  发布时间:2017/4/24 15:55:00
--  

经过,几天的折腾,连接阿里云数据库后主窗口不能打开的问题依然存在,经测试

 

1. 在局域网上木有这个问题,一切正常,速度也很快

 

2. 就是不启用主窗口的TIMERTICK,或TIMERTICK只有少量代码,有时可打开主窗口,但速度很慢很慢;如果代码多了,根本打不开主窗口

 

3. 数据源连接已是正确的,能正常从数据库调用数据

 

4. 把TIMERTICK里的全部代码放在命令窗口测试,没有任何提示,应该也是正常的

 

怀疑是SQL SERVER 2008 R2的问题,也在阿里云的ECS上重新装了SQL2008 ,也是同样的问题,现在都不知道问题在哪里了???


--  作者:有点色
--  发布时间:2017/4/24 16:02:00
--  

 既然是打不开窗口的问题,那么就应该把你窗口afterLoad事件、timertick事件的代码注释掉,单独测试是否能打开。

 

 如果打开了,再逐步加入代码,确定一下代码的位置。

 

 我估计:应该是你要加载的数据太多,而互联网的响应速度明显比你局域网要慢,所以你就要等一段事件。


--  作者:douglas738888
--  发布时间:2017/4/24 16:17:00
--  

老师的这个方法,我也试过,全部afterload代码清除不使用,也是一样,

 

只有把timertick里面的代码不启用或全部清除才能打开主窗口,也测试过在timertick里面一段代码一段代码的加入测试,有时候加一段、二段可以打开,有时候又不行;有时候加十段代码可以打开,多数时候又不行 ,1楼代码我还加上了  If forms("主窗口").Opened Then,每段代码都这样加了,也不行,就是打不开主窗口,除非不用timertick

 

其他表都是外部表,只有主窗口的所有者表是内部表,是否会是这个问题

[此贴子已经被作者于2017/4/24 16:19:30编辑过]

--  作者:有点色
--  发布时间:2017/4/24 16:26:00
--  
 你timertick事件写了什么代码?间隔多久执行一次?
--  作者:douglas738888
--  发布时间:2017/4/24 16:45:00
--  

代码段如下,大概同类的代码段有40个,间隔1000

 

If forms("主窗口").Opened Then
Dim pbx As WinForm.PictureBox = Forms("主窗口").Controls("PictureBox3")
Dim lbl As WinForm.Label = Forms("主窗口").Controls("Label130")
If lbl IsNot Nothing Then
   Dim Count As Integer \'Double
   Count = DataTables("项目信息主表").SQLCompute("Count(项目编号)","信息甄批_投审人员 Like  \'%" & _UserName & "%\' and (信息甄批_投审确认 not Like \'%" & _UserName & "%\' or 信息甄批_投审确认 Is null)")
   If Count = 0 Then
        pbx.ImageFile = "Green.ico" 
        lbl.ForeColor = Color.Green  
    ElseIf Count >= 1 Then
        pbx.ImageFile= "Red.ico" 
        lbl.ForeColor = Color.Red  
    End If
lbl.Text = "" & Count & ""
Application.DoEvents() 
   End If
End If