2017-03-01 10 views
0

私はvbaアクセスとSQLサーバーを使用しています。私はスペースがあるMaterial IDという名前のフィールドがあるフォームを持っています。さて、私はストアプロシージャでこれを渡そうとしていますが、実際にどのように渡すのか分かりません。私が働いてきたコードは次のようになります。上記のコードで vbaアクセスのプロシージャを格納するために、名前にスペースを含むパラメータを渡すにはどうすればよいですか?

If frm.Tag Then 
    strFilter = "usp_MovePending '" & UserStr & "'" 
    strFilter = strFilter & "," & frm!MaterialID 

    DB.QueryDefs("qryMovePending").Connect = SQLConnectString 
    DB.QueryDefs("qryMovePending").ReturnsRecords = False 
    DB.QueryDefs("qryMovePending").sql = strFilter 
    DB.QueryDefs("qryMovePending").Execute dbFailOnError 
End If 

は、私は明らかにMicrosoft access can't find the field 'MaterialID' referred to in your expressionを言って私にエラーを与えたスペースなしfrm!MaterialIDを使用しました。そして、私が[frm!Material ID]を空白にしておくと、何も返されません。私もそれの周りに一重引用符を保持しようとしましたが、それは値なしで一重引用符を返しました。助けてください。

+0

frm![Material ID]? frm( "Material ID")? – Jeremy

+0

またfrm.Material_ID。私はアクセスがスペースをアンダースコアで置き換えると信じています。 –

+1

Protip:フィールド名にスペースや特殊文字を使用しないでください。 –

答えて

1

私はAccessオブジェクトモデルに非常に慣れていないんだけど、VBA/VB6で強打表記foo!barがの省略形です

frm![Material ID] 
+0

私はすでにそれも試していましたが、それは物質のために何も返しません。 – toofaced

+1

あなたはあなたが '[frm!Material ID]'としか別ではないと言いました。これは違っています –

+2

角型括弧の外にフォーム名を残してください –

0

...デリミタとして角括弧で試してみてください明示的な表記法:

012:すなわち

foo("bar").Value 

frm!Foobarこのため略記であります

frm("Foobar").Value 

だから、あなたはどうなる:

frm("Material ID").Value 
0

それはほぼ確実にそれにアンダースコアを追加されます - Me.Material_IDまたはMeを使用してみてください[マテリアルID]実際のフォームのコントロール名を参照します。値はデフォルトのプロパティです

関連する問題