Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Access 2013)
動的クエリのプロパティの設定について
投稿日時: 17/10/23 10:23:12
投稿者: hato

お世話になります。
フォームで選択した条件により、表示用のクエリをVBAで書き換えています。
毎回列の並びが変わるのですが、その中の数値項目に「右揃えで桁区切り」の
書式を入れたかったので、いろいろ調べて以下のようなコードを実行しました。
 
Call CurrentDb.QueryDefs("Q2_平均単価").Fields("仕入数量").Properties.Append(CurrentDb.QueryDefs("Q2_平均単価").Fields("仕入数量").CreateProperty("Format", dbText, "#,###"))
 
・これは1回実行すると、2回目からはエラーになるのでどこかに登録されていると思うのですが、
それを確認する画面はありますか?
・この設定を消したいのですが、どのようにすればこのプロパティを削除できるでしょうか?
・動的なクエリにおいて、Formatを使わずにプロパティの書式に桁区切りを入れたい場合、
上記の方法の他にもやり方はありますか?
 
以上よろしくお願いします。

回答
投稿日時: 17/10/23 13:58:44
投稿者: Suzu

こんにちは。
 
確認はクエリデザインビューの当該フィールドの書式を確認すれば良いです。
 
【日付の書式を設定する】
https://support.office.com/ja-jp/article/%E6%97%A5%E4%BB%98%E3%81%AE%E6%9B%B8%E5%BC%8F%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B-a4d026a3-da6f-48e7-8140-3bc4e274da45
 
【カスタム書式を使用してデータの表示方法を指定する】
https://support.office.com/ja-jp/article/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E6%9B%B8%E5%BC%8F%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E8%A1%A8%E7%A4%BA%E6%96%B9%E6%B3%95%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B-a5e5bcde-85da-4c7a-8164-1fe286636668
 
 
クエリのSQLを描き替えないとダメなのですか?
  クエリのフィールドなら、OrdinalPosition プロパティ の指定では?
  フォームのデータシートビューのコントロールなら、Visible プロパティー の指定では?
 
めんどくさければ、クエリを削除してから、作成しなおしても良いでしょう。
 
 

引用:
プロパティを削除できるでしょうか?

クエリの削除でも一緒ですが、コレクションに対しDELETEメソッドを発行します。
 
【Properties.Delete メソッド (DAO)】
https://msdn.microsoft.com/ja-jp/library/office/ff835356.aspx
 
【QueryDefs.Delete メソッド (DAO)】
https://msdn.microsoft.com/ja-jp/library/office/ff821426.aspx
 
 
書式で設定せず、演算フィールドとして Format関数を使う方法もあります。
 
 
好みとしては、データシートビュー & コントロール の Visible 制御です。

投稿日時: 17/10/23 16:27:38
投稿者: hato

Suzuさん、こんにちは。
早速のご回答ありがとうございます。
 
月別や年月なしの累計で集計するのでSQLでクエリを毎回書き換えています。
別のときに使えそうなので、Visible制御も覚えておこうと思います!
 
間違って書式を設定したものを変更したかったのですが、もう一度
Call CurrentDb.QueryDefs・・・・・と実行すると、
「同じ名前のオブジェクトが既にコレクションにあります」
とエラーになったので、削除がしたかったです。
 
選択クエリの場合は、デザインビューの書式設定を消せば、再設定ができました。
パススルークエリの場合はSuzuさんのアドバイス通り、削除してクエリを作成しなおすと
再設定ができました。
 
コレクションの式があまりよく理解できていませんが・・・、なんとか思う結果となりました。
本当にどうもありがとうございました!!