2016-12-08 10 views
2

MS Accessでユーザーが特定の結果セットの上位3レコードを表示できるテキストボックスを作成する必要があります。したがって、クエリが5つのレコードになっても、3つのテキストボックスとして上位3つのレコードを表示したいだけです(場合によっては、1,2または0のレコードでもよい)。MS Accessでトップ3レコードが必要

私は簡単な方法をとって、マスター/子フィールドを使用して親フォームに接続された新しいサブフォームを作成しました。テキストボックスは、サブフォームの詳細部分に及びsubfromのレコードとして配置された次のクエリを使用:

Select top 3 tbl1.column1, tbl1.column2 
from tbl1 

column1は、テキストボックスとcolumn2のための制御電源は、私はマスター/子供のために使用しているコラムですリンク。

トップ3なしで使用するとクエリが正常に機能するようになりました。しかし、トップ3を使用すると、突然テキストボックスが消えてサブフォームが完全に空白になります。

エラーの原因を特定できません。私の推測では、それはサブフォームの型と関係があるということです。わからない。

私は?数結果に基づいて変えることができ、テキストボックスを持っている(ただし、3に結果セットを制限する)ことができ、他の方法があります

は助けに感謝します。

+0

'TOP 3'は、レコードを削除することはできません。しかし、コードが表示されていない場合は、あなた自身で行うことができます。 – Gustav

答えて

0
  1. テキストボックスは1つ以上の値を保持するものではありません。
  2. 1つのテキストボックスに2つの列の3つの結果を割り当てようとしています(できません)。
  3. listboxを使用して、リストのrowsourceに書き込んだクエリを割り当てる(サブフォームは必要ありません)。この方法で、ユーザーは3つのレコードを表示します。

Example

0

あなたがやろうとしているものを達成するために、テキストボックスを使用することができます。しかし、これを達成するためにいくつかのVBAコーディングが必要になります。何か他のものが1つを行っているので、コードを入れ

フォーム上すると
Public function CombineValuesForTextBox() as string 
Dim rst as dao.recordset 
Dim strSQL as string 

strSQL = "SELECT TOP 3 tbl1.Column1 as field1, tbl1.Column2 as field2 " & _ 
     "FROM tbl1;" 
set rst = currentdb.openrecordset(strsql) 
if rst.recordcount = 0 then 'Checks if the recordset has records or not 
    CombineValuesForTextBox = "No records found" 
    goto EndCode 'Or replace with what actions to take if no records are found 
else 
    rst.movelast 'Forces the recordset to fully load 
    rst.movefirst 
    do while not rst.eof 
     if CombineValuesForTextBox = "" or CombineValuesForTextBox = empty then 
      CombineValuesForTextBox = rst![field1] & " - " & rst![Field2] 
     else 
      CombineValuesForTextBox = CombineValuesForTextBox & vbcrlf & _ 
             rst![field1] & " - " & rst![Field2] 
     end if 
    Loop 
end if 
rst.close 
set rst = nothing 

EndCode: 
if not rst is nothing then 
    rst.close 
    set rst = nothing 
end if 
end function 

(...テキストボックスがバインドされていないことを確認し)

me.textbox = CombineValuesForTextBox 
関連する問題