• ベストアンサー

Accessの文字切り出しについて

AccessでActiveDirectoryデータを管理したいと考えておりますが、ADからcsvdeで出力した後、Accessにインポートしています。 が、"DN"フィールドに、分割管理したい項目がまとめて入っており、分割する為のクエリを作成したいと思いますが、文字の抽出方法が分かりません。 CN=日本語ユーザー名(可変長),OU=OU名(可変長),DC=下位ドメイン名,DC=上位ドメイン名,DC=local ◎下記項目を切り出し CN=〇〇〇 OU=〇〇〇 単純に、Left関数・Mid関数では切り出し出来ない為、コーディング方法をお教え頂けましたら幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>クエリの式で実装したいのです。 添付図を参照されたし!

sujino
質問者

お礼

ありがとうございます、実装出来ました。 Public Functionで関数を定義すれば良いのですね、勉強になりました。 また、他でもCSVからの抽出は、よく使うので大変勉強になりました。 今後の為に、整理します。 テーブル名:AD 検索フィールド名:DN クエリ式 SELECT Mid(cutstr([AD].[DN],",",1),4) AS CN名, mid(cutstr(AD.[DN],",",2),4) AS OU名, AD.objectClass FROM AD WHERE (((AD.objectClass)="user"));

その他の回答 (2)

回答No.3

続:添付図!

回答No.1

要は、添付図のようなことを実現したのでしょうか? だったら、事は簡単。 Public Function CutStr(ByVal Text As String, ByVal Separator As String, ByVal N As Integer) As String   Dim strDatas() As String   strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs(N <= UBound(strDatas))) End Function CutStr(対象文字列, 区切り文字 Or 文字列, 抜き出すN番目の指示) ? CutStr("AAA and BBB and CCC", "and", 1) AAA_ ? CutStr("AAA and BBB and CCC", "and", 2) _BBB_ なお、CutStr関数の書き方は一通りではありません。次のように書く事も可。Split関数を意地でも使いたくなければ、これもありです。 Private Function CutStr(ByVal Text As String, ByVal Separator As String, ByVal N As Integer) As String   Dim I As Integer   Dim J As Integer   Dim K AS Integer   Dim L AS Integer   Text = Text & Separator   L = Len(Separator) - 1   For I = 1 To N     J = K + 1     K = Instr(J. Text, Separator, vbTextCompare) + L   Next I   IF K > J Then     CutStr = Mid$(Text, J, K - J - L)   End If End Function いずれにしろ CutStr()は、標準ライブラリに登録しておくべき必須の関数です。

sujino
質問者

お礼

回答ありがとうございます。 言葉足らずですいません、VBAでは無く、クエリの式で実装したいのです。 あわせて、オリジナル関数をお教え頂きありがとうございます。 クエリ式の中に下記の記塾を行えればと考えてます。 CN名:文字切り出し関数 自分で試した結果 CN名: Mid$(3,InStr(フィールド名,",")) 結果:3 手順としては、Mid関数とInStr関数の組み合わせで、カンマの位置を見つければ良いのではと考えているのですが、私の理解が足りたい為、数字しかかえって来ません。

関連するQ&A