Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\db1.mdb;" & "Persist Security Info=False"
conn.Open
rs.Open "select name,email * from info", conn, adOpenKeyset, adLockOptimistic如何让显示的“name”字段中的值的最后3位被“*”取代,也让显示的“email”字段中的值排在“@”符号前面的3位也被“*”取代
这种算法有办法办到吗?

解决方案 »

  1.   

    字符串替代函数将name字符串右边长度为3的字符转替换为***
    第二个问题可以先将email字段以@为标记拆分为数组,在按照问题1的方法替换,最好将数组合并。
      

  2.   

    假定 @ 符合前面至少 3 个字符
    Dim sql As String
    sql = "select left(name,len(name)-3) + '***' as name," & _
                " '***' + mid(email,4) as email" & _
                " from info"
    rs.Open sql, conn, adOpenKeyset, adLockOptimistic
      

  3.   

    一半成功了,第2个不是这样的,小弟想要实现的效果是“@”之前的3位,不是“@”前面的第1-3位比如[email protected]   要变成 abc***@163.com
      

  4.   

    sql = "select left(name,len(name)-3) + '***' as name," & _
                " left(email,instr(email,'@')-4) + '***' + mid(code,instr(code,'@')) as email" & _
                " from dict"