Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

返回列表 發(fā)新帖
查看: 4639|回復(fù): 6
打印 上一主題 下一主題

[模塊/函數(shù)] 【Access小品】裸奔--自定義函數(shù)編制講座六

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2011-6-20 14:37:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 todaynew 于 2011-6-20 14:43 編輯

  江羽版主最近在研究拼音聲調(diào)字符轉(zhuǎn)換為字母的問(wèn)題,連續(xù)用了兩種方法,其一是數(shù)組法,其二是字符串法。這個(gè)問(wèn)題我也曾用過(guò)一個(gè)數(shù)據(jù)表法,說(shuō)明解決此類問(wèn)題的辦法很多。結(jié)合這個(gè)問(wèn)題,想講一下Replace函數(shù)的嵌套問(wèn)題。由于沒(méi)有依賴其他的輔助手段,比較起來(lái)可以稱之為裸奔法。

  許多函數(shù)都是可以嵌套使用的,比如iif函數(shù)、instr函數(shù)等等。Replace函數(shù)也是可以嵌套使用的,Replace的嵌套執(zhí)行的是連續(xù)的不同替換。只要你愿意可以嵌套很多層,不過(guò)為了閱讀的方便起見(jiàn),一般可以順序的用幾次Replace嵌套來(lái)解決替換問(wèn)題。比如拼音聲調(diào)字符轉(zhuǎn)換為字母的問(wèn)題,我們可以寫(xiě)如下自定義函數(shù):

function str1(str0 as string) as string
'功能:將拼音聲調(diào)字符轉(zhuǎn)換為字母
      str1=str0
  str1=Replace(Replace(Replace(Replace(str1,"ā","a"),"á","a"),"ǎ","a"),"à","a")
  str1=Replace(Replace(Replace(Replace(str1,"ē","e"),"é","e"),"ě","e"),"è","e")
  str1=Replace(Replace(Replace(Replace(str1,"ī","i"),"í","i"),"ǐ","i"),"ì","i")
  str1=Replace(Replace(Replace(Replace(str1,"ō","o"),"ó","o"),"ǒ","o"),"ò","o")
  str1=Replace(Replace(Replace(Replace(str1,"ū","u"),"ú","u"),"ǔ","u"),"ù","u")
  str1=Replace(Replace(Replace(Replace(str1,"ǖ","v"),"ǘ","v"),"ǚ","v"),"ǜ","v")
end function

  這個(gè)函數(shù)的編制方法可以用到許多方面,如果你想將阿拉伯?dāng)?shù)字轉(zhuǎn)換為中文數(shù)字,也是可以用此方法加以解決的,我們可以編寫(xiě)如下的自定義函數(shù):

function str1(str0 as string,B as boolean) as string
'功能:將阿拉伯?dāng)?shù)轉(zhuǎn)換為中文字符
'參數(shù):B=true 轉(zhuǎn)換為一、二... B=False 轉(zhuǎn)換為壹、貳...
      str1=str0
  select case B
          case true
           str1=Replace(Replace(Replace(Replace(str1,"0","0"),"1","一"),"2","二"),"3","三")
           str1=Replace(Replace(Replace(Replace(str1,"4","四"),"5","五"),"6","六"),"7","七")
           str1=Replace(Replace(str1,"8","八"),"9","九")
          case false
           str1=Replace(Replace(Replace(Replace(str1,"0","零"),"1","壹"),"2","貳"),"3","叁")
           str1=Replace(Replace(Replace(Replace(str1,"4","肆"),"5","伍"),"6","陸"),"7","柒")
           str1=Replace(Replace(str1,"8","捌"),"9","玖")
       end select
end function



  假如你認(rèn)為運(yùn)算符輸出不美觀,也可以用這個(gè)方法來(lái)編寫(xiě)一個(gè)自定義的轉(zhuǎn)換函數(shù):


function str1(str0 as string) as string
'功能:將運(yùn)算符轉(zhuǎn)換為輸出格式
      str1=str0
  str1=Replace(Replace(Replace(Replace(str1,"+","+"),"-","-"),"*","×"),"/","÷")
  str1=Replace(Replace(Replace(Replace(str1,"=","="),"<>","≠"),"<=","≤"),">=","≥")
  str1=Replace(Replace(str1,"<","<"),">",">")
end function

  如此等等,你可以按照你的需要,依據(jù)此法寫(xiě)出很多實(shí)用功能很強(qiáng)的自定義函數(shù)來(lái)了。通過(guò)這個(gè)講座,希望能使初學(xué)的版友明白,很多時(shí)候自定義函數(shù)就是一兩句VB語(yǔ)句,關(guān)鍵看你是否真正掌握和理解了它們。掌握和理解了,就能在多種方法中找到最簡(jiǎn)單最直接的那些東西。

評(píng)分

參與人數(shù) 1經(jīng)驗(yàn) +15 收起 理由
yori2007 + 15

查看全部評(píng)分

本帖被以下淘專輯推薦:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖1 訂閱訂閱
2#
發(fā)表于 2011-6-20 16:12:03 | 只看該作者
重復(fù)替換,不錯(cuò)
3#
發(fā)表于 2011-6-20 17:23:31 | 只看該作者
謝謝,學(xué)習(xí)!

點(diǎn)擊這里給我發(fā)消息

4#
發(fā)表于 2011-6-21 10:08:41 | 只看該作者
學(xué)習(xí)!
5#
發(fā)表于 2011-6-21 10:29:30 | 只看該作者
學(xué)習(xí)了,謝版主。
6#
發(fā)表于 2017-12-30 19:13:38 | 只看該作者
重復(fù)替換,不錯(cuò)
7#
發(fā)表于 2018-1-1 18:13:08 | 只看該作者
2222222
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 07:31 , Processed in 0.182716 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表