2009-04-30 210 views

答えて

27

あなたは@onedaywhenはコメントで指摘するように、彼らは本当にVBA機能ではなく、MSジェットライブラリからそれらの等価物(VBA文字列関数を使用することができます。限り関数のシグネチャが行くように、彼らは呼ばれ、同じように機能する、それらを利用できるようにするためのMS Accessの実際の存在が必要とされていない場合でも):。

SELECT DISTINCT Left(LastName, 1) 
FROM Authors; 

SELECT DISTINCT Mid(LastName, 1, 1) 
FROM Authors; 
+3

気むずかしポイントを

dim myReturn as string myreturn = mid("bonjour tout le monde",9,4) 

あなたはMID機能を探している

例を考える価値をあなたにお返しします「TOUT」:関連するDLLは、(私は信じて)Expsrv.dllとvbajet32です。 dllは、MSのマニュアルでJet Expression Servicesと総称しています。だから私は、彼らが文脈では「VBA関数」ではなく、ネイティブのACE/Jet表現であると考えることができると思う。 ACE/Jetでは、同等のVBA関数とは異なる式が使用されることに注意してください。 IIF():VBAは常にtrueとfalseの両方の句を評価しますが、ACE/Jetは評価しません。 – onedaywhen

+0

@onedaywhen:ご理解いただきありがとうございます。私は "VBAの機能"を書くのを躊躇していましたが、代わりに何を書くべきか分かりませんでした。上記の文字列関数の場合、それらは明らかに同等です。 OTOH - Accessクエリでは、ユーザー定義のVBA関数を使用することもできますが、Access固有の可能性があります。 – Tomalak

+2

Nz()はネイティブアクセスでは利用可能ですが、Excelからクエリを実行する場合は使用できません。 – Knox

6

私はMIDが(あると思う)と、おそらくLEFT()とRIGHT()アクセスで。

+0

これらをLENで使用し、文字列値から必要なものを大部分得ます。 – Bratch

2

私はこの機能を追加した既製のモジュールを見つけることができませんでしたので、私は1つを書いた:Visual Basicのにクリックし

Accessでは、マクロ領域では、データベース・ツールリボンに行きます。左上のプロジェクトエリアで、ファイルの名前を右クリックし、[挿入] - > [モジュール]を選択します。モジュールに貼り付けます:

Public Function Substring_Index(strWord As String, strDelim As String, intCount As Integer) As String 

Substring_Index = delims 

start = 0 
test = "" 

For i = 1 To intCount 
    oldstart = start + 1 
    start = InStr(oldstart, strWord, strDelim) 
    Substring_Index = Mid(strWord, oldstart, start - oldstart) 
Next i 

End Function 

モジュールをmodule1(デフォルト)として保存します。

SELECT Substring_Index([fieldname],",",2) FROM table 
3

私はmsaccess vbaで多く働いています。 私は

+1

ようこそStackOverflowへ!あなたの答えは正しいですが、承認された回答にまだ入っていない新しい情報を提供していないので、おそらく何の票も得られません。 – CoderDennis

関連する問題