2017-02-16 4 views
0

私は自分の問題を語る方法を100%確信していません!私はテキストを含むフィールドを持っています(レポートから読み込まれます)。 "Home/area/process /"の形式で、エリアテキストを簡単に抽出できます。MSアクセスの別のテキストフィールドからテキストを引き出す

"/ process/more processes"や "/ information/more information"になることもありますので、 "Home/and /プロセス」

うまくいけば、このメイク感覚、私は:)

事前みんなで感謝のためにこれを行うために約9000のエントリを持って、私はVBAに開いている/ Access 2007のために何を照会

+1

キーワードは文字列を "解析"します。スプリット機能[こちら](https://www.techonthenet.com/access/functions/string/split.php)をご覧ください。区切り文字は "/"になります。あなたは同じことを達成するために文字列関数の組み合わせを使うこともできます[こちらを参照](http://access.mvps.org/access/strings/str0001.htm) – MoondogsMaDawg

答えて

2

試してみてください!

Dim exampleString As String 
Dim exampleArray() As String 

exampleString = [field containing the string you want to split] 
exampleArray = Split(exampleString,"/") 
例えばだから、

、あなたが言及したフィールドに次の文字列がある場合:home/area/process

を、フィールド名は、次にあなたが次のことを行うことができrptSummary

という名前のレポートにある、txtFieldです:

Dim exampleString As String 
Dim exampleArray() As String 

exampleString = Reports!rptSummary!txtField.Value 
exampleArray = Split(exampleString, "/") 

exampleArrayのすべてのインデックスにアクセスして、それであなたが何をしてもよいでしょう。たとえば、あなたがexampleArrayに各インデックスの内容を示すポップアップを作成したい場合、あなたは次のことを行うことができます:

MsgBox exampleArray(0) //Creates a message box popup that displays "home" 
MsgBox exampleArray(1) //...displays "area" 
MsgBox exampleArray(2) //...displays "process" 

また、もう少し詳細を必要とMid機能を、使用することができます。その情報はhereです。私は2つのクエリを作成して追加することによってこの問題を解決するために管理している

それよりも、より具体的にするために、我々はフィールド名、レポート名に関するより多くの情報が必要と思い、関係する形態である、など

+0

ありがとう、私はVBAを少し使いましたアクセスはできません。基本的に "home/area/process"は別のシステム内の文書の場所であり、その文書が所属する領域を抽出する必要があります。私のテーブル(tblDocuments)の "Area"というフィールドにExampleArray(1)を追加する方法はありますか?これまでのところ大きな感謝! – MalleyMob

+0

早朝に研究をした後にクイックアップするのが一番簡単な方法は、mid([documents.Location]、InStr([documents.Location])/ "を使用して最初の"/" ")+1)AS Area]ヘルプとポインタの2番目の"/"感謝の後にすべてを削除する作業が必要 – MalleyMob

+0

すべてが区切り文字"/"で区切られていると仮定し、' Split'関数を使って'exampleArray(1)'(またはそれを呼びたいもの)を呼び出すと、 'Mid'関数で何度も構文解析するよりもはるかに簡単で作業が簡単になります。例えば、あなたの最初のコメント返信に応じて、いくつかのSQLを書いてVBAで実行すると(SQL文を文字列変数に割り当て、 'DoCmd.RunSQL'を使って文を実行して)、' exampleArray(1) 'をテーブル。 – UnseenSpecter

0

文字列の最初の部分を削除するには1「ホーム/」

firstArea: Mid([tblDocuments.Location],InStr([tblDocuments.Location],"/")+1)

その後、私はちょうど「/」の前に次のセクションを表示するために別のものを作成したこのクエリを使用して - 新しいフィールドに次のように(最初の結果だけを使用して、領域の後に他のすべてを追加しました。つまり、 "/ processビット"

Area: Left([All docs with area.firstArea],InStr([All docs with area.firstArea],"/")-1) 

「/プロセス」のセクションには何も書かれていないが、全体的には問題がないと私は確信しています。

ポインタのおかげで、私は現在、解析文字列知識で武装しています:)

関連する問題