• 締切済み

Accessの関数で、フィールド名に入力する""と[ ]の違い

フォームのテキストボックスに関数を入れて表示するとき、 例1 貸出日のフィールドから曜日を表示させる =Format([貸出日],"aaa") とテキストボックスに入力。 例2 D001のテーブルにある会員番号のフィールドの最大値を表示させる =DMax("会員番号","D001") とテキストボックスに入力。 例2でフィールド名に付けるのが[ ]でなく""なのはなぜでしょうか? フィールドを使うならすべて[ ]でくくればいいと思ってましたが""でないとだめなようですが、なぜか教えてください。

みんなの回答

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>はじめから""と入力すると決まっているということでしょうか?? そういうことです(文法ですから意味を考えても仕方ありません。約束事です) ただし[]とは全く意味が異なります

minao9
質問者

補足

<ただし[]とは全く意味が異なります すみません。もう少し詳しくこの部分を教えていただけますか?

noname#140971
noname#140971
回答No.2

<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)
回答No.1

Formatの第2引数、DMaxの全引数はテキストで与えると 構文で決まっているからです []は名前をあらわす文字を囲むときに使われます 通常は省略しても問題ありませんが 名前の中に問題のある文字を使っている場合には必須です 下のいずれもOKです =Format(貸出日,"aaa") =DMax("[会員番号]","D001")

minao9
質問者

補足

>Formatの第2引数、DMaxの全引数はテキストで与えると 構文で決まっているからです う~ん、はじめから""と入力すると決まっているということでしょうか?? 初心者ですいません。。。

関連するQ&A