Foxtable(狐表)用户栏目专家坐堂 → [讨论] 用代码删除查询表,这段代码有错吗?


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

主题:[讨论] 用代码删除查询表,这段代码有错吗?

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


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
[讨论] 用代码删除查询表,这段代码有错吗?  发帖心情 Post By:2009/5/23 22:40:00 [显示全部帖子]

For Each dt As DataTable In DataTables
  If dt.Type = 4 Then
   dim name as string = dt.name 
   Maintable = Tables(name)
   Syscmd.Table.Delete()
   Sendkeys.Sendwait("{ENTER}")
  End If
next

这段代码的意思是:用系统命令Syscmd.Table.Delete()来删除外部查询表

因为执行系统命令以后,会有一个对话框出来,要按确定,所以再来了一个模拟按键Sendkeys.Sendwait("{ENTER}")

怎奈这段代码在执行时,如果选择对话框中的“是”则出错:


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

需要指出的是,我感觉是模拟按键的代码有问题,因为如果我在出现的对话框手动中选择“否”,则其他代码可以正常执行(可以找出所有的外部查询表,一个个地要求我选择“是”或“否”)

请教各位!

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


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/5/23 23:38:00 [显示全部帖子]

二楼是不是顺序搞反了?

先执行系统命令:Syscmd.Table.Delete()

然后才出现对话窗口,这时才需要有模拟按键:Sendkeys.Send("{ENTER}")

现在的问题是:
1、模拟按键不起作用,出现了对话窗口,不接受这个模拟按键的动作,非要手动选择“是”或“否”,这个代码有误;

2、对话窗口出来以后,手动选择“是”,则出错;     手动选择“否”,则不出错,程序会一个个地找出外部查询表,一个个地提示是不是要删除!

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


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/5/24 10:08:00 [显示全部帖子]

不好意思,我不明白
try

Catch ex As Exception
End try

是什么意思?

同时按道理讲,还是要先执行系统命令,再出现对话窗口,最后才模拟按键的。

但是按三楼的办法,确实自动删除了一个外部查询表。

实在是不明白啊!


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


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/5/24 11:26:00 [显示全部帖子]

我用命令窗口仔细测试了一下,代码中取得外部查询表的表名这一段是正确的。

但是,系统命令不会受FOR each 的约束,它只会循环执行一次!

这是我用OUTPUT.SHOW(),对每一句代码进行观察的结果。

不知道这是个BUG,还是老大的故意安排!


 回到顶部