- 締切済み
Accessの関数で、フィールド名に入力する""と[ ]の違い
フォームのテキストボックスに関数を入れて表示するとき、 例1 貸出日のフィールドから曜日を表示させる =Format([貸出日],"aaa") とテキストボックスに入力。 例2 D001のテーブルにある会員番号のフィールドの最大値を表示させる =DMax("会員番号","D001") とテキストボックスに入力。 例2でフィールド名に付けるのが[ ]でなく""なのはなぜでしょうか? フィールドを使うならすべて[ ]でくくればいいと思ってましたが""でないとだめなようですが、なぜか教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- CHRONOS_0
- ベストアンサー率54% (457/838)
>はじめから""と入力すると決まっているということでしょうか?? そういうことです(文法ですから意味を考えても仕方ありません。約束事です) ただし[]とは全く意味が異なります
<D001> ID___会員番号 1____0001 2____0002 3____0003 質問者の意図しているように、DMax関数の引数にテキストボックスを指定しても構いません。 ただし、この場合は、下記 DBMax関数を見れば判るようにフィールド名(列名)を指示。 ですから、フォームに[フィールド名]というテキストボックスを配置し、値='会員番号'であることが肝心。 実際に、テストした結果を次に示します。 ちゃんと、最大値をイミディエイトウィンドウに表示しています。 テキストボックスを書けば、その値が採用されます。 テキストボックスの名前は値ではありませんから当然のこと。 ここら辺りを誤解しているだけですね。 <フォーム> ========================= フィールド名:[会員番号] ========================= Private Sub コマンド0_Click() Debug.Print DMax([フィールド名], "D001") End Sub [イミディエイト] 3 Public Function DBMax(ByVal strField As String, _ ByVal strTable As String, _ Optional strWhere As String = "") As Variant On Error GoTo Err_DBMax Dim N Dim strQuerySQL As String Dim rst As ADODB.Recordset Set rst = New ADODB.Recordset strQuerySQL = "SELECT MAX(" & strField & ") FROM " & strTable If Len(strWhere) > 0 Then strQuerySQL = strQuerySQL & " WHERE " & strWhere End If With rst .Open strQuerySQL, _ CurrentProject.Connection, _ adOpenStatic, _ adLockReadOnly If Not .BOF Then .MoveFirst N = Nz(.Fields(0), 0) End If End With Exit_DBMax: On Error Resume Next rst.Close Set rst = Nothing DBMax = N Exit Function Err_DBMax: MsgBox "SELECT 文の実行時にエラーが発生しました。(DBMax)" & Chr$(13) & Chr$(13) & _ "・Err.Description=" & Err.Description & Chr$(13) & _ "・SQL Text=" & strQuerySQL, _ vbExclamation, " 関数エラーメッセージ" Resume Exit_DBMax End Function
- CHRONOS_0
- ベストアンサー率54% (457/838)
Formatの第2引数、DMaxの全引数はテキストで与えると 構文で決まっているからです []は名前をあらわす文字を囲むときに使われます 通常は省略しても問題ありませんが 名前の中に問題のある文字を使っている場合には必須です 下のいずれもOKです =Format(貸出日,"aaa") =DMax("[会員番号]","D001")
補足
>Formatの第2引数、DMaxの全引数はテキストで与えると 構文で決まっているからです う~ん、はじめから""と入力すると決まっているということでしょうか?? 初心者ですいません。。。
補足
<ただし[]とは全く意味が異なります すみません。もう少し詳しくこの部分を教えていただけますか?