设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 5312|回复: 14
打印 上一主题 下一主题

[窗体] 窗体与WebBrowse交互(从todaynew学来的)

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2012-8-27 10:57:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先看代码:
  1. Option Compare Database
  2. Option Explicit

  3. Private Sub Command1_Click()
  4.     WebBrowser0.Document.parentWindow.test "called from Access Form"
  5. End Sub

  6. Private Sub Form_Load()
  7.     WebBrowser0.Navigate "about:blank"
  8.     DoEvents

  9.     Do While WebBrowser0.Busy
  10.         DoEvents
  11.     Loop

  12.     WebBrowser0.Document.Write _
  13.         "<html><head><script>" & vbCr & _
  14.         "var accForm; " & vbCr & _
  15.         "function test(message) { alert(message); }" & vbCr & _
  16.         "</script></head><body><button " & vbCr & _
  17.         "onclick=""accForm.test('called from script code')"">" & vbCr & _
  18.         "call client code from script code</button>" & vbCr & _
  19.         "</body></html>"
  20.     Set WebBrowser0.Document.parentWindow.accForm = Me
  21. End Sub

  22. Public Sub test(ByVal message As String)
  23.     MsgBox message
  24. End Sub
复制代码
新建一个窗体,在窗体上放一个Microsoft Web控件和一个命令按钮,分别命名为 WebBrowse0 和 Command1,在窗体的 VBA 模块中输入上述代码。运行窗体,得到如下效果:
当点击 Command1 时:

当点击WebBrowse控件中的按钮时:


意思是点击Access的按钮执行页面的javascript函数,而点击页面中的按钮则执行Access窗体中的方法。

更好的示例:  (2012-08-28 添加)
Todaynew:WebBrowser控件与数据库交互示例

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2经验 +16 收起 理由
zpy2 + 15 (V币)优秀提问、答复(1-2分)
风中漫步 + 1 看着不错

查看全部评分

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享分享 分享淘帖1 订阅订阅

点击这里给我发消息

2#
 楼主| 发表于 2012-8-27 10:59:32 | 只看该作者
很有意思,我们可以通过 WebBrowse.Document.parentWindow这个对象来实现交互。

有了这个,再实现 歌逸新平台:MS Access 和 JQuery 打造最炫界面
http://www.office-cn.net/forum.p ... 088&fromuid=625



就应该不是很困难了。

点击这里给我发消息

3#
发表于 2012-8-27 11:28:36 | 只看该作者
Access的Web化浪潮来了...
4#
发表于 2012-8-27 11:39:20 | 只看该作者
不错,不用说从谁那里学来的,代码我看得很熟悉,天下文章都是抄来的,哈哈。。。

对于带超链接的还有一个更简单的,就是捕捉URL
5#
发表于 2012-8-27 12:03:26 | 只看该作者
WebBrowser0.Document.Write 似乎可以遍历数据库做出各种各样的数据呈现形式。

另外,提供的关于WebBrowser0方面资料的链接地址上的文字不是我写的,我只是找来学习了一下,呵呵。

点击这里给我发消息

6#
发表于 2012-8-27 12:09:29 | 只看该作者
很强,我也弄了半天,也大同小异。
看来gnoy勾起了大伙们的兴趣。
7#
发表于 2012-8-27 13:10:45 | 只看该作者
但在access里面用WebBrowse,有时候会很灵异.曾经试过用wb(WebBrowse)去navitegate本地的一个swf文件,失败.同样的代码,同样是调用wb控件,在vb,excel的userform里面做却可以加载成功.把userform导出frm在access导入,还是失败.不知道是什么原因导致失败.可能是跟Acess的运行环境有关,因为有的电脑是加载成功的
所以至今Access里面用这个控件,还是有点怕怕的.不知道会有什么不可预料的事情发生.
8#
发表于 2012-8-27 14:20:20 | 只看该作者
有个奇怪的问题想问一下:
dim txt as string
txt="将html代码逐段的写给这个变量"
WebBrowser0.Document.Write  txt
到此为止,WebBrowser0可以显示出写入的html代码。

但是,下面的语句就会报错:
Set WebBrowser0.Document.parentWindow.accForm = Me
这是什么原因?

点击这里给我发消息

9#
 楼主| 发表于 2012-8-27 15:36:59 | 只看该作者
todaynew 发表于 2012-8-27 14:20
有个奇怪的问题想问一下:
dim txt as string
txt="将html代码逐段的写给这个变量"
WebBrowser0.Document.Write  txt
到此为止,WebBrowser0可以显示出写入的html代码。

但是,下面的语句就会报错:
Set WebBrowser0.Document.parentWindow.accForm = Me
这是什么原因?


accForm 是网页中的一个对象变量

应该这样写
  1. dim txt as string
  2. txt="<script>var accForm;</script>" & _
  3.     "将html代码逐段的写给这个变量"
  4. WebBrowser0.Document.Write  txt

  5. ' 这样就不会报错了:
  6. Set WebBrowser0.Document.parentWindow.accForm = Me
复制代码
目的,是把当前窗体对象传递到网页。
10#
发表于 2012-8-27 15:41:26 | 只看该作者
没报错啊

Private Sub Form_Load()
   Dim str As String
   
    str = "<html><head><script>" & vbCr & _
        "var accForm; " & vbCr & _
        "function test(message) { alert(message); }" & vbCr & _
        "</script></head><body><button " & vbCr & _
        "onclick=""accForm.test('called from script code')"">" & vbCr & _
        "call client code from script code</button>" & vbCr & _
        "</body></html>"
   
    WebBrowser0.Navigate "about:blank"
    DoEvents

    Do While WebBrowser0.Busy
        DoEvents
    Loop

    WebBrowser0.Document.Write str
        
Set WebBrowser0.Document.parentWindow.accForm = Me
End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-6 06:28 , Processed in 0.099904 second(s), 40 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表