设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1883|回复: 6
打印 上一主题 下一主题

[模块/函数] 对两个表进行处理的一段半角替换全角代码能否简化

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2007-10-19 10:09:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
红色部分是andymark老师提供的用半角替换全角的代码,用于对表1中“结果”列误按全角输入的数字替换成半角数字,现在把它用于处理两个表,即表1表2,运行没有问题,但请教各位老师,这段代码可否简化?谢谢!

Private Sub 半角替换全角_Click()
Dim Rs As New ADODB.Recordset
Dim Conn As New ADODB.Connection
Dim Str As String
Set Conn = CurrentProject.Connection


Rs.Open "select * from 表1", Conn, adOpenDynamic, adLockOptimistic
Do While Not Rs.EOF
Str = Rs.Fields("结果")
If Asc(Str) < 0 Then
   Str = Replace(Str, "。", ".")
   Str = StrConv(Str, vbNarrow)
  Rs.Fields("结果") = Str
  Rs.Update
End If
  
Rs.MoveNext

Loop

Rs.Close

Set Rs = Nothing
Set Conn = Nothing

Set Conn = CurrentProject.Connection

Rs.Open "select * from 表2", Conn, adOpenDynamic, adLockOptimistic
Do While Not Rs.EOF
Str = Rs.Fields("结果")
If Asc(Str) < 0 Then
   Str = Replace(Str, "。", ".")
   Str = StrConv(Str, vbNarrow)
  Rs.Fields("结果") = Str
  Rs.Update
End If
  
Rs.MoveNext

Loop

Rs.Close

Set Rs = Nothing
Set Conn = Nothing

   
End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-10-19 10:33:12 | 只看该作者
可提炼成过程(参数为表名称和字段名称)
事件中调用该过程。

点击这里给我发消息

3#
 楼主| 发表于 2007-10-19 11:05:25 | 只看该作者
谢谢hi-wzj版主,您的意思是做成自定义函数吗?其实这段代码只用一至两次,我是看到这两段大部分重复,就想请教一下能否合并简化。能与不能简化对学习代码都是非常有用的知识积累。谢谢!
另外,输入数字如这样的格式:<0.25(<号是半角而0.25是全角的)代码就不起作用了。好在输入数据时一段数字既按全角又按半角输入的几率少之又少。可以不去管它了。

[ 本帖最后由 wang1950317 于 2007-10-19 11:12 编辑 ]
4#
发表于 2007-10-19 13:11:47 | 只看该作者
先定义一个半角替换全角的函数(参数为被替换的文本和替换为文本),然后再替换表中字段值的函数(参数为表名称和字段名称),在替换时调用前面定义的半角替换全角的函数。

一个函数最好只完成一个简单的功能。

点击这里给我发消息

5#
 楼主| 发表于 2007-10-19 13:58:22 | 只看该作者
谢谢fan0217老师指教。我的理解是基于这段代码本身两位版主的意见是不能再做简化的了,必须使用另外的方法。谢谢啦!按你们的方法做做看。

[ 本帖最后由 wang1950317 于 2007-10-19 14:04 编辑 ]
6#
发表于 2007-10-19 14:05:07 | 只看该作者
Private Sub 半角替换全角_Click()
Call QJ2BJ("表1", "结果")
Call QJ2BJ("表2", "结果")
End Sub

Sub QJ2BJ(StrTableName As String, StrFildName As String)

Dim Rs As New ADODB.Recordset
Dim Conn As New ADODB.Connection
Dim Str As String
Set Conn = CurrentProject.Connection

Rs.Open "select * from " & StrTableName & "", Conn, adOpenDynamic, adLockOptimistic

Do While Not Rs.EOF
   Str = Rs.Fields("" & StrFildName & "")
   Str = StrConv(Str, vbWide)                           ' 为防止全角半角的混合输入,统一转换为全角
   Str = Replace(Str, "。", ".")
   Str = Replace(Str, ".", ".")
   Str = StrConv(Str, vbNarrow)
   Rs.Fields("" & StrFildName & "") = Str
   Rs.Update

    Rs.MoveNext

Loop

Rs.Close

Set Rs = Nothing
Set Conn = Nothing

End Sub

点击这里给我发消息

7#
 楼主| 发表于 2007-10-19 14:48:57 | 只看该作者
可以简化了。对全角半角混输问题,非常崇拜andymark老师的不管是对的还是错的,先把它统一改成为错的,然后再将错的纠正过来的思路!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 01:16 , Processed in 0.087341 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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