设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[模块/函数] 【Access小品】词组的自动记忆与运用实例

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-2 20:54:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 todaynew 于 2010-1-3 07:09 编辑

昨天写了一个常用语实例,在此基础上考虑可以进一步扩展运用,便写了一个词组的自动记忆与运用的实例,在这个例子中对常用语函数进行了改进。有些遗憾的是,本打算用控件的更改事件来写运用,可是折腾的不理想,最后改为了双击事件,于最初的设想略有偏差。





Public Function MYphrase(表名 As String, 字段名 As String, 频度 As Long, 长度 As Long) As String
'============================================================
'功能:获取表中对应字段的常用语
'参数:1、表名:表名称;
'      2、字段名:字段名称;
'      3、频度:词汇出现的最小次数
'      4、长度:词汇的最小长度
'示例:me.常用语.RowSource = MYphrase("物资表", "名称", 3, 2)
'============================================================

Dim rs As New ADODB.Recordset
Dim ssql As String
Dim i As Long, j As Long, m As Long, n As Long
Dim str As String
Dim Maxlen As Long
Dim Myfname As String
Dim MyArray(), MyA()
Maxlen = DMax("len([" & 字段名 & "])", 表名)
m = 0
For i = 0 To Maxlen - 长度 - 1
    Myfname = "left(" & 字段名 & ", Len(" & 字段名 & ") - " & i & ")"
    ssql = "SELECT " & Myfname & " As 字段" & ", Count(" & Myfname & ") AS 计数 "
    ssql = ssql & " FROM " & 表名
    ssql = ssql & " WHERE len(" & 字段名 & ")>=" & 长度 + i
    ssql = ssql & " GROUP BY " & Myfname
    ssql = ssql & " HAVING Count(" & Myfname & ")>=" & 频度
    rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    For j = 1 To rs.RecordCount
        If i = 0 Then
            m = m + 1
            ReDim Preserve MyArray(1 To 2, 1 To m)
            MyArray(1, m) = rs("字段")
            MyArray(2, m) = rs("计数")
        Else
            For n = UBound(MyArray, 2) To 1 Step -1
                If InStr(MyArray(1, n), rs("字段")) > 0 And MyArray(2, m) < rs("计数") Then
                    m = m + 1
                    ReDim Preserve MyArray(1 To 2, 1 To m)
                    MyArray(1, m) = rs("字段")
                    MyArray(2, m) = rs("计数")
                    Exit For
                End If
            Next
        End If
        rs.MoveNext
    Next
    rs.Close
Next

CurrentDb.Execute "CREATE TABLE 临时表 (词组 Char(50))"
rs.Open "临时表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
For i = 1 To UBound(MyArray, 2)
    rs.AddNew
    rs("词组").Value = MyArray(1, i)
    rs.Update
Next
rs.Close
ssql = "SELECT 词组 FROM 临时表 ORDER BY 词组;"
rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
For i = 1 To rs.RecordCount
    str = str & rs("词组").Value & ";"
    rs.MoveNext
Next
rs.Close
DoCmd.DeleteObject acTable, "临时表"

MYphrase = str
End Function

本帖子中包含更多资源

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

x

评分

参与人数 1经验 +10 收起 理由
5988143 + 10 精品文章

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享分享 分享淘帖 订阅订阅
20#
发表于 2023-2-22 19:32:28 来自手机 | 只看该作者
学习学习
回复

使用道具 举报

19#
发表于 2016-5-19 21:11:00 | 只看该作者
学习学习了
18#
发表于 2015-7-9 13:40:56 | 只看该作者
学习一下
回复

使用道具 举报

17#
发表于 2015-5-25 22:33:19 | 只看该作者
分享了
回复

使用道具 举报

16#
发表于 2015-5-25 22:33:06 | 只看该作者
学习
回复

使用道具 举报

15#
发表于 2011-5-11 00:48:26 | 只看该作者
学习学习
14#
发表于 2010-9-11 02:06:03 | 只看该作者
学习学习!
13#
发表于 2010-8-22 13:49:15 | 只看该作者
学习,感谢分享
12#
发表于 2010-7-28 16:34:17 | 只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 03:16 , Processed in 0.100803 second(s), 37 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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