设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 9482|回复: 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 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-1-2 21:01:11 | 只看该作者
todaynew楼主的帖子都要收藏。
支持。
3#
发表于 2010-1-3 09:20:47 | 只看该作者
又一个好作品,下载学习!
4#
发表于 2010-1-4 08:44:22 | 只看该作者
好作品,学习一下
5#
发表于 2010-1-4 10:59:13 | 只看该作者
你是我学习的榜样,谢了!
6#
发表于 2010-1-4 18:15:32 | 只看该作者
值得学习学习
7#
 楼主| 发表于 2010-1-5 13:41:34 | 只看该作者
谢谢领导和同志们的鼓励。
8#
发表于 2010-1-5 15:01:27 | 只看该作者
todaynew 的小品,没话说,收藏!
9#
发表于 2010-1-5 22:01:17 | 只看该作者
都是JP,顶上去!
10#
发表于 2010-1-11 08:40:26 | 只看该作者
下下下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 20:52 , Processed in 0.106462 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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