• ベストアンサー

アクセスのVBAについて

アクセスのVBAでテーブルからウィザードでフォームを作成したのですが、その表示内容を昇順でソートしたいのですがどうすればよいのでしょうか?勝手に主キーでソートされてしまいます。違う値でソートしたいのですが・・・一応フォームLoadのイベントでSQLでテーブル内容をソートして値を代入していったのですがうまくいきません。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

フォームのLoadイベントにSQLを書くのであれば、、 Sub Form_Load()   dim strSQL as String   strSQL = "SELECT * FROM Table1 ORDER BY Field1;"   Me.RecordSource = strSQL   'フォームの並べ替えプロパティを削除   Me.Orderby =""   Me.OrderbyOn = False   'フォームのフィルタプロパティを削除   Me.Filter = False   'フォームの再描画   Me.Refresh End Sub こんな感じでしょうかねぇ。 #Accessを起動させずに書いてるので、あくまでも「感じ」ってことで(^^;。 何かありましたら、補足にお書きくださいませ。

arex_santa
質問者

お礼

お返事が遅くなりましたが、できました!!!! 有難うございました。

その他の回答 (3)

  • Kalen_F
  • ベストアンサー率25% (2/8)
回答No.4

フォームのプロパティ→レコードソースでSQLを作ります。 そのSQLで、昇順にしたいフィールドを、並べ替えしてやると、一番分かりやすく手っ取り早いです!

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

Accessのウィザードで作成したフォームを使用するとSQLよりAccess自体のフォームの設定を優先するため主キーでソートされてしまうのでそのフォームのプロパティのデータのレコードソースでクエリーを作製してそのクエリーでソートしたい順に指定すれのが一番簡単です。もしくはSQLでフォームのソートを無効にする記述をいれるかだと思います。Accessのフォームをインターフェースとして使うならクエリーを作成した方が良いと思います。

  • dpagr506
  • ベストアンサー率50% (1/2)
回答No.2

一番簡単な方法はクエリーを作成して、フォームのデータソースに設定することです。 クエリーならソート順は自由に設定できますので自由度は高くなります。 SQLを投げて表示しているということは更新はしないと思いますが、もし更新する必要がある場合にグループ化などしていると更新時にエラーになりますので注意してください。

関連するQ&A