Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Access 2013)
クエリで文字列だけを抽出したい
投稿日時: 17/10/24 15:42:36
投稿者: h.tahara

Accessのに英数字まじりのデータがあります。
例)C1709041117218146001
英字を取り除いて、以下のように数値だけにしたいのですが、可能な関数はありますでしょうか。
例は、頭にCを入れていますが、文字の入る位置や桁数は可変になっています。
1709041117218146001

回答
投稿日時: 17/10/24 15:54:12
投稿者: sk

引用:
Accessのに英数字まじりのデータがあります。
例)C1709041117218146001
英字を取り除いて、以下のように数値だけにしたいのですが、可能な関数はありますでしょうか

引用:
例は、頭にCを入れていますが、文字の入る位置や桁数は可変になっています。

そういった機能を持つ Access の組み込み関数はありません。
 
したがって、ユーザー定義関数を自前で作成するしかないでしょう。

投稿日時: 17/10/25 16:44:16
投稿者: h.tahara

ユーザー定義関数を作成して、クエリを動かした際には上手くいきました。
ありがとうございます。
同じSQLをEXCELからdaoを使用して呼び出した際にエラーになり、
使用する事ができませんでした。
通常の関数が無いとの事でしたら、別の手を考えてみます。

回答
投稿日時: 17/10/26 02:32:02
投稿者: hatena
投稿者のウェブサイトに移動

Access.Application を経由してなら、ユーザー定義関数を参照可能です。
 

Public Function testSQL()
    Dim accApp As Access.Application
    Dim rs As DAO.Recordset
    Dim sSQL As String

    sSQL = "SELECT MyFunc(F1) FROM T1;"
    Set accApp = CreateObject("C:\Users\hatena\Documents\Test.accdb")
    Set rs = accApp.CurrentDb.OpenRecordset(sSQL)
    Do Until rs.EOF
        Debug.Print rs(0)
        rs.MoveNext
    Loop
    rs.Close
    accApp.Quit
End Function

 
参照設定
Microsoft Access *.* Object Library
Microsoft Office *.* Access database engine Object Library
 
ユーザー定義関数 MyFunc

投稿日時: 17/10/30 09:22:32
投稿者: h.tahara

ありがとうございました。
初心者で申し訳ありません。
Accessが起動されてしまうのが気にはなりますが、
daoからも問題なくユーザー定義関数が使用できるようになりました。