重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

フォームのテキストボックスに関数を入れて表示するとき、
例1 貸出日のフィールドから曜日を表示させる
=Format([貸出日],"aaa") とテキストボックスに入力。
例2 D001のテーブルにある会員番号のフィールドの最大値を表示させる
=DMax("会員番号","D001") とテキストボックスに入力。

例2でフィールド名に付けるのが[ ]でなく""なのはなぜでしょうか? フィールドを使うならすべて[ ]でくくればいいと思ってましたが""でないとだめなようですが、なぜか教えてください。

A 回答 (3件)

>はじめから""と入力すると決まっているということでしょうか??


そういうことです(文法ですから意味を考えても仕方ありません。約束事です)

ただし[]とは全く意味が異なります

この回答への補足

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

補足日時:2007/07/11 15:11
    • good
    • 0

<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
    • good
    • 0

Formatの第2引数、DMaxの全引数はテキストで与えると


構文で決まっているからです

[]は名前をあらわす文字を囲むときに使われます
通常は省略しても問題ありませんが
名前の中に問題のある文字を使っている場合には必須です

下のいずれもOKです
=Format(貸出日,"aaa")
=DMax("[会員番号]","D001")

この回答への補足

>Formatの第2引数、DMaxの全引数はテキストで与えると
構文で決まっているからです

う~ん、はじめから""と入力すると決まっているということでしょうか??
初心者ですいません。。。

補足日時:2007/07/10 23:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!