X



Access総合相談所 30
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@そうだ選挙にいこう
垢版 |
2021/04/07(水) 12:33:01.06
ACCESSに関する質問はこちらへ
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ 質問内容は具体的に書いてください。
  業務上の守秘義務も大事ですが、貴方の所属組織を特定できるほど、特異な業務・システムは滅多にありません。
 作りたいものの内容を隠しすぎないようにし、列名、データ値を適当に変更して例示するなどしましょう。
★ 事前にGoogle等で調べられる範囲は調べてください。
★ 完全初心者はまず、新規作成テンプレから「NorthWind」を開いて、一通り触ってみてください。ACCESSの概念を理解する
もっとも簡単な方法です。
★ お金の管理でシステム設計ミスが会社経営に重大な支障が予見される場合は、パッケージソフトに誘導する場合があります。
格安なソフトもあるので設計に取りかかってから悩む前に、市場調査も行なってください。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
  ギブアンドテイクで情報を共有しましょう。
▼━初心者用質問テンプレ ━━━━━━━━━━━━━━━━━
【Windows】 7, 8,10 【Access】 365,2013,2016,2019
【作りたいものの業務分野】
販売管理,買掛管理,営業予算管理,営業実績管理,生産管理,財務管理,労務管理,学術研究統計,文字格納を主体としたDB,その他()
【あなたのスキル】
LV1:完全初心者,
LV2:ACCESSの基本要素(テーブルやクエリーなど)の役割を知っている
LV3:VBAが打てる
【どのオブジェクトに関する質問か】
テーブル,クエリー,フォーム,レポート,サブフォーム(サブレポート),リレーション,VBA
【やりたいこと】
(質問によっては各テーブル名と列名を例示)
(クエリーの場合は、左上の「表示」を押し”SQLビュー”に変更して表示される”SQL文”を貼り付けると回答者がわかりやすい)
(得たい出力結果や挙動)
【エラーメッセージに関する質問】
・エラーメッセージの内容 ・windowsは32bit版か64bit版か
前スレ
Access総合相談所 29
https://mevius.5ch.net/test/read.cg/bsoft/1569236545/
0265名無しさん@そうだ選挙にいこう
垢版 |
2021/07/31(土) 18:25:12.82
アカン
おっきいのはSQLサーバーかアズール使ってください
0266名無しさん@そうだ選挙にいこう
垢版 |
2021/07/31(土) 19:37:27.12
2GBは知らなかった。
データファイル分離で使ってて
ファイルサイズ自体は4GBくらいになっても問題ないけど
実データサイズが2GB越えられないのかな。
0267名無しさん@そうだ選挙にいこう
垢版 |
2021/08/02(月) 13:05:48.42
win11でフォーム開くと、コマンドボタンの他にスクロールバーが変わってますね。マウスオーバーで上下矢印が表示されてバーが太くなります。
0270名無しさん@そうだ選挙にいこう
垢版 |
2021/08/27(金) 12:38:36.17
レポートでフィールドの文字をきっちりまんなかに表示させて、余計な隙間つくりたくないんですが目分量歯科できませんよね?
0273名無しさん@そうだ選挙にいこう
垢版 |
2021/08/30(月) 15:33:29.99
▼━初心者用質問テンプレ ━━━━━━━━━━━━━━━━━
【Windows】 10 【Access】2010 Runtime 32bit+Windows10 64bit
【あなたのスキル】
LV3:VBAが打てる
【やりたいこと】
/cmdを使って引数を2つ渡してaccdbを起動したいです。
Y:\hoge.accdb /cmd "ABC,"DEF"
だと問題なく起動するのですが、2回実行すると別プロセスで開いてほしいため
"C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE" "Y:\hoge.accdb" /cmd "ABC,"DEF"
のように設定すると、
MicroSoft Accessを起動するためのコマンドラインに、MicroSoft Accessでは認識できないオプションが含まれています。
MicroSoft Accessを終了し、正しいコマンドラインオプションを指定して、再移動してください。
というメッセージが出て、ファイルは起動しますがコマンドライン引数は渡せません。
引数を一つにして
"C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE" "Y:\hoge.accdb" /cmd "ABC"
なら問題なく起動します。

実際には、別アプリが動的に引数をくっつけて起動するので、引数部のデリミタやダブルクォーテーションをコントロールすることはできません。
そもそもエラーが出る理由もよくわかっていないのですが…

正しいやり方があると思うのですが、教えていただけないでしょうか?
0274名無しさん@そうだ選挙にいこう
垢版 |
2021/08/31(火) 08:52:36.40
/cmdが必ず最後
0275名無しさん@そうだ選挙にいこう
垢版 |
2021/09/05(日) 03:06:10.33
a b c d
a b e f
a b g h
z y i j
zy k l
こんな一覧を以下みたいな帳票レイアウトを
標準機能でつくれます?

a b
―――-
c d
e f
―――
小計

違うページ

z y
―――-
i j
k l
―――-
小計
0276名無しさん@そうだ選挙にいこう
垢版 |
2021/09/05(日) 10:28:26.25
>>275
ACCESSというより、知能テストみたいな情報しかないな。
ようは、カラム名になるべき項目が複数列にわたって、行情報に
入ってるのをなんとかしたいってことでしょ。
ここではクエリーエディターを表示するわけにもいかんので
SQLで表現すると、
SELCT [3列目] AS a,[4列目] AS b from table WHERE [1列目]=a AND [2列目]=b
小計をレポート上で表現するか、クエリーに含めるかは考え方による。
上記クエリーをq1とすると
SQL * FROM q1
UNION ALL
SQL sum([a]) AS sumA,sum[b] AS sumB FROM Q1
みたいな感じ。

違うページ、上記のように中身を変えてもう一本作ることになる。
本当はTransを使いたいところだが、1列目の数値データは3列目、
2列目の数値データは4列目、と変な形なので、無理だと思う。
本来あるべき、データの原型は
a c
bd
ae
bf
zi
yj
0277名無しさん@そうだ選挙にいこう
垢版 |
2021/09/05(日) 18:37:36.13
勉強し始めなのですが、クエリで複数の都道府県でデータを抽出する問題でわからないことがあります
大阪府と京都府を抽出条件に入力し、並び替えを昇順にすると京都府→大阪府の順に並びます
昇順は五十音順で、あ→んに並び替えなのかと思ったのですが違うのでしょうか?
0279名無しさん@そうだ選挙にいこう
垢版 |
2021/09/05(日) 19:18:05.86
調べたら地図上の順番通りに並べ替えする方法が出てきたので、最初からその設定になっているわけではないんですよね?
昇順降順の決まりが謎です…
Windows10、Office365です
0281名無しさん@そうだ選挙にいこう
垢版 |
2021/09/05(日) 19:55:46.48
>>280
文字コードですか
講師から何も説明なかったのでまったく考えついませんでした
ありがとうございます!
0283名無しさん@そうだ選挙にいこう
垢版 |
2021/09/05(日) 23:55:30.06
京都人に、わてらが前に来ないのは何事かといけず言われるよ。
気持ちは今でも首都だから。

アルファベットだと何の苦労もなく並び替えられるけど、
漢字は音読み、訓読みあるし。
ちなみに、軽くググったら厚労省の県コード表が見つかったが
概ね北から南の順に並んでるけど
京都府26番、大阪府27番になっとった。
https://www.mhlw.go.jp/topics/2007/07/dl/tp0727-1d.pdf

実データのほかにこういった都道府県マスターを持っておいて
クエリーで接続して県コード順に並び替えるのが、いいんじゃないの。
0284名無しさん@そうだ選挙にいこう
垢版 |
2021/09/06(月) 01:24:37.05
レポートのグループ化すると見出しみたいになるけど
複数フィールドでグループ化って出来ます?
0286名無しさん@そうだ選挙にいこう
垢版 |
2021/09/10(金) 19:55:19.05
クエリって

フォームの例えばラジオボタンの状態で
丸々以下の二つのクエリを切り替えて実行することできないの?


select 出力カラムA
from テーブル名B
where 条件式1
and 条件式2

select 出力カラムC
from テーブル名D
where 条件式3
and 条件式4
0287名無しさん@そうだ選挙にいこう
垢版 |
2021/09/11(土) 02:07:35.84
・売上レコードが月に数千ずつ増えていくテーブルで取引先の売上の合計とかある期間の売上合計をだす
・労働時間管理で月間の時間を足す

というのはレコードが増えるたびに重くなっていきますか?
それぞれのテーブルにはどんどんレコードが増えていき、一番使うのは今月の合計だと思いますが
今月のをみるがために、1度すべてのレコードを抽出条件に適合するか判定するんですよね?
例えば10年前の、とかまで
0289名無しさん@そうだ選挙にいこう
垢版 |
2021/09/11(土) 09:49:25.32
>>287
はい。pcのマシンスペックに影響されます。
計算が遅いと感じるのであれば
昔の会計系でよく見られた技法の
集計保存テーブルを持っておくことです。
whereじたいは、計算コストがかからないので対象を絞っておいて、合計計算して
集計テーブルにinsertするというやりかたです。
過去データは集計の対象から外れるので全体的な処理が
軽くなる場合もあります。
0292名無しさん@そうだ選挙にいこう
垢版 |
2021/09/11(土) 14:30:25.96
>>291
売り掛け管理は、明確に締め請求という手順があるので
月間(または締め日期間)の精算額テーブルを持ってますよ。
支払の契約によっては、前月の請求額が必ずしも今月入金にならない業界もあるので
前月残高+今月売り掛-今月入金=今月請求額
という計算を行います。
0297名無しさん@そうだ選挙にいこう
垢版 |
2021/09/11(土) 17:59:25.00
>>288
フォーム側の機能、レコードソースの切り替えでしか無理か
クエリ、つまりSQLでは無理なんだな
0299名無しさん@そうだ選挙にいこう
垢版 |
2021/09/12(日) 08:21:16.17
>>290
293さんの手法でwhereとgroup byで集計
insert 集計保管用テーブル(いわゆる追加クエリー)

集計のし直しは、集計保管用テーブルの対象レコードを見つけてupdate(いわゆる更新クエリー)
0302名無しさん@そうだ選挙にいこう
垢版 |
2021/09/13(月) 07:30:11.35
>>301
yearとmonthだけ入れてdayを1にするということ。
2021年9月なら年月フィールドには2021/9/1で入れる。
intで格納すると日付関数が使えないから面倒だし、うるう年計算でミスするヤツが出てくる。出てきた。
0304名無しさん@そうだ選挙にいこう
垢版 |
2021/09/13(月) 14:02:09.14
>>303
実データ日付と集計用欄の二つ持つということ。上にも書いてくれてるでしょ!
なんなら集計欄を「いろはにほへと」にしてもいいのだよ。
なんの計算か知らんけど20日締めがある場合、21日は次月を示すグループ値が必要なわけだよ。それは202110でもいいし2021/10/1でもいい。
日付は内部的にはシリアル値という数字に変換してるだけなので。
0305名無しさん@そうだ選挙にいこう
垢版 |
2021/09/13(月) 15:16:08.42
>>304
vbaとかでやらずにすべての1日でいれろ、ということかと勘違いしました
でも日付型(>>300にあるように)ならそのままの日付フィールドではだめなんですか?
0308名無しさん@そうだ選挙にいこう
垢版 |
2021/09/13(月) 18:22:22.20
締め日の範囲とかで集計するとかならともかく同じ年月ならいらんよね

VBAしばりプレイ中でフォームの即値しか使えないなら確かにSQLはごちゃごちゃするかな
0312名無しさん@そうだ選挙にいこう
垢版 |
2021/09/13(月) 20:02:37.88
>>310
SQL使っていない販売管理ソフトって今存在するのかな?

>>289の人も書いているように範囲データの抽出(where)だけならインデックスがあるから時間はかからない
単純合計などお茶の子さいさいだ。
10年貯めたら遅くなると思っている子はインデックス様の力を見くびっているぞ

ただし在庫数や売掛残金のようにすべての過去データを集計しないと出てこない数値は当然ある
だから普通のシステムは月次処理などで前月末残金などを別のレコードに記録を取りそこからの計算で済むようにしている

「向きではない」という感想はこれらのデータを組み合わせた表を画面表示するのが面倒だということだろう
Excelなら簡単ですね

AccessのFormで実現するなら一時テーブルを作成するぐらいしか手はないだろうが
そのためのレポートである。がんばれ
印刷したくないならVBAでExcel出力してもよいぞ。がんばれ
0313名無しさん@そうだ選挙にいこう
垢版 |
2021/09/13(月) 20:10:19.32
formのフィールドの値をクエリの抽出条件に設定して、フォームにレポートプレビューボタンからレポート開いても抽出がうまくいかずレコードなし。やり方まちがってる??
0315名無しさん@そうだ選挙にいこう
垢版 |
2021/09/13(月) 20:26:33.20
>>312
適度に集計して計算結果を保存するテーブルにVBAで転機するっことだよね?

バカにされがちなファイルメーカーって
計算フィールド(計算結果が常に保持される)ってのがあってExcel的な関数をいれといて計算するんだけど
結局されと同じことするってことだよね?
0321名無しさん@そうだ選挙にいこう
垢版 |
2021/09/14(火) 02:52:17.67
>>320
この例だと、せっかく 「[日付] の値」 で目次つくってあるのに、

「Year([日付]) = 2021」 とか 「Month([日付]) = 9」 ってやっちゃうと、
値を変換して比較してるから目次が使えない

「[日付] >= #2021/09/01#」 や 「[日付] < #2021/10/01#」 なら、
目次使えるねって話
0324名無しさん@そうだ選挙にいこう
垢版 |
2021/09/14(火) 07:53:50.38
>>321
202109を提案の方と違うけど
私も202109のインデックス欄作ってますよ。
全然、強制はしませんが。
不等号より等号のほうが計算コストが小さいんですわ。
0325名無しさん@そうだ選挙にいこう
垢版 |
2021/09/14(火) 08:09:31.61
さらに考え方変えて、売り掛け買い掛けのように締め日がずれない、必ず1日と末日の区間であるという前提で提案しましょう。
Accessの利用を許可してる会社は、Access使いをパソコンオタクとしか見なしてない会社が大半です。
そこでみんな大好きexcelです。
外部データ接続でaccessファイルの該当テーブルを指定します。
リンクデータは自動でテーブル化しますから
そのテーブルをもとにピボットテーブル、行ヘッダーに日付をもってきて、年と月でグループ化します。
新しいデータは基本的にはリンクテーブル部分とピボットのとこで右クリックメニューから「更新」を押すだけです。
excelなら皆が開けるし、オタクがわけわからないことやってる、と陰口たたくこともないでしょう。
(ちなみにうちのパワハラ上司は「何がピボットだ、くだらん」と叫んでますが、これは無視ということで。)
0327名無しさん@そうだ選挙にいこう
垢版 |
2021/09/14(火) 14:06:15.34
>>326
解説サイトなんかでも大昔の常識がそのまま採用されてることあるよね
全部メモリにロードされるしよほどじゃないかぎり重くなることはなさそう
0330名無しさん@そうだ選挙にいこう
垢版 |
2021/09/14(火) 19:19:23.09
よくある納品書ヘッダーと明細の2つのテーブル
明細にも日付があるとSQL書くのがすごく楽になる
0331名無しさん@そうだ選挙にいこう
垢版 |
2021/09/14(火) 19:38:12.14
そもそも今時、1対多とかにする必要あるのかとも思えてくる
たかが数字や文字列省略したところで何TBもあるストレージの前では無意味に思える
0333名無しさん@そうだ選挙にいこう
垢版 |
2021/09/14(火) 19:45:47.85
>>332
ああそうか
上限あったな。いったことないから忘れてた
2GBならなおさらどうでもよくない?
上の方の日付のどうこうとか

集計でも毎回全レコードに対してやっても待たされることはなさそうだけど
なんなら単価×個数 とかもVBAでフィールドに格納(変更があれば再計算する)したほうが運用しやすい
レポートにも経験結果はるだけだからやりやすい
0334名無しさん@そうだ選挙にいこう
垢版 |
2021/09/14(火) 19:48:11.21
ADP使ってた人達はいまなにつかってんの?
0336名無しさん@そうだ選挙にいこう
垢版 |
2021/09/14(火) 20:41:19.32
>>334
accessはコンパイルする必要ないから、賄い飯ツールフロントエンドとしては
よくできてるんじゃない?
10人同時更新の要件あったから、odbcじゃなくadoで引っ張る必要のために、死ぬほどコード書いたけど。
さすがにadpの概念どおりに
フォームでレコード移動するたびに全フィールドの割り当て書くのはやめて、テンポラリテーブルを媒介させてる。
0339名無しさん@そうだ選挙にいこう
垢版 |
2021/09/15(水) 13:46:41.67
>>331
サイボウズ社のkintoneみたいなNoSQLデータベースでしょ。
常に一覧式か
本来のヘッダー情報
+品名1 単価1 数量1 小計1
品名2 単価2 数量2 小計2
品名3 単価3 数量3 小計3
というカード型だから
少しでもsqlやったことあれば
頭うにょーってなるよ。

一般労働者見てるとリレーショナルDBよりも、
excelで横に1万列とか並んでるほうを好む日本人向きな
設計思想だけど。
0340名無しさん@そうだ選挙にいこう
垢版 |
2021/09/15(水) 13:53:47.15
>>338
10%対象いくら 消費税額いくら
8%対象いくら 消費税額いくら

軽減税率対象品名に米印など。
振り分けの仕組みに少し頭使う。
そのうち方法論で、ここでも意見別れそうだけど。
0341名無しさん@そうだ選挙にいこう
垢版 |
2021/09/15(水) 14:27:47.33
>>339
キントーンって高いよね
そもそも使いにくいし
売上管理や集計、計算などそのまま使える会社もほぼないだろう

>>340
うちは軽減税率ないサービス業だからよかったよ
たしかにそれぞれ計算して集計するようにかえるのは大変かもね
うちの場合小計項目増やすだけだからね
8%0円 って
0345名無しさん@そうだ選挙にいこう
垢版 |
2021/09/16(木) 11:15:34.98
>>344
一般的には相手に合わせる
0347名無しさん@そうだ選挙にいこう
垢版 |
2021/09/16(木) 14:29:40.43
基本的には業者間取引で
法人が消費税を担税するわけではないので
損も得もないんだけど
切り捨てのほうが心証はいいかもね。
上のご指摘のとおり「うちは切り捨てです」「うちは四捨五入です」と統一する必要はある。
成り行き上、販売チャネルや本支店間で売上管理システムが別になってしまったときは特に注意が必要。
このスレのように諸口だけaccessで管理してます、とか。
0349名無しさん@そうだ選挙にいこう
垢版 |
2021/09/16(木) 21:15:54.91
where句のand,orが複雑になるとわからなくなる。
良い考え方ない?
0350名無しさん@そうだ選挙にいこう
垢版 |
2021/09/17(金) 12:47:32.72
>>349
()で括れば有線順位変えられるやろ
Where (果物=りんご and 価格<=300) or (果物=みかん and 価格<=200)
0351名無しさん@そうだ選挙にいこう
垢版 |
2021/09/17(金) 14:46:28.95
内容みないとなんとも。
一つのカラムに対してなら
IN句がORの変わりになる。
in (select どーたら)はaccessでも使えるんだっけ?

クエリデザイナーは条件欄を
横方向に列記すればAND
縦方向に書けばORだから
無理にsql入力しないほうが
見やすいかもしれんし。

あんましごちゃごちゃするなら、小分けのクエリーの保存、参照を繰り返せばいいのよ。
似たようなところで、sqlserverではCTE式ってのを頻繁に使う。
0353名無しさん@そうだ選挙にいこう
垢版 |
2021/09/17(金) 16:36:53.87
>>350
フォームの値を設定してて、空のときは無視するとか
betweenのときはどうすりゃよかったっけとか
複雑
0354名無しさん@そうだ選挙にいこう
垢版 |
2021/09/17(金) 16:38:27.46
>>351
フォームの値がブランクの時かつ複数のフィールドの場合
SQLじゃないと、全パターンクエリデザインはしんどい
0355名無しさん@そうだ選挙にいこう
垢版 |
2021/09/17(金) 21:11:37.39
>>353
>空の時は無視する
ってのがよくわからんが。空の時はその値は検索条件にしないってのなら
選択クエリのデザイングリッドで、その値のフィールドの抽出条件に
文字列の場合
Like "*" & me.[(フォームのコントロール名)] & "*"
でフォームのコントロールが空欄だったら Like "**"となって全レコードを選択状態に
何か入れたらLike "*なんとか*"となって「なんとか」があるレコードを選択状態に
0356名無しさん@そうだ選挙にいこう
垢版 |
2021/09/17(金) 21:40:21.24
>>355
数字の場合は?
0357名無しさん@そうだ選挙にいこう
垢版 |
2021/09/17(金) 21:54:35.54
NZつかえばいけるわ
0359名無しさん@そうだ選挙にいこう
垢版 |
2021/09/18(土) 21:20:36.98
>>358
これだと種類とランクで片方のコンボボックスだけ空白の場合
片方の選択条件で絞れるんですかね。
左側から抽出条件は実行される暗黙のルールがあるんでしたっけ
0361名無しさん@そうだ選挙にいこう
垢版 |
2021/09/19(日) 00:33:21.14
>>359 私も思いつかない、なかなかトリッキーな手法だけど

IIf(IsNull(forms![フォーム]![種類]),True,[種類]=forms![フォーム]![種類])
抽出条件をtrueとしているわけだ。
不等号を使う場面は、日付、番号が想定されるが

IIf(IsNull(forms![フォーム]![日付1]),True,[日付]>=forms![フォーム]![日付1])

と置き換えられるだろう。日付1から日付2までなら、
IIf(IsNull(forms![フォーム]![日付2]),True,[日付]<=forms![フォーム]![日付2])
ともう一本作るだけ。

空値ならtrue、空値ではなく値が条件に合うならtrue
わかるかな?
ノンプログラミング可能な、良いアイディア。

もっとも、フォームの検索エリアにわざわざラベルで「から」「まで」と書いてやっても
ユーザーは平気で「12月1日」から「9月1日」までと入力しやがるので
私はこの手法は使わないと思うけど。
VBAで一旦、大小関係を評価して必要に応じてひっくりかえしてから
querydef使っちゃう。
0362名無しさん@そうだ選挙にいこう
垢版 |
2021/09/19(日) 00:46:56.66
>>360
考え方は同じ。IIFの中でtrueを発生させてWHERE句でtrueとマッチ評価をするか
コンボ空値ならダミー文字、そうでないならテーブルの値を出力して
WHERE句でコンボボックスの値とマッチ評価をするかの違い。
コンボボックスが空値になりえる総当たり戦のパターンを書いている。

(true=true)=true
("文字"="文字")=true
0363名無しさん@そうだ選挙にいこう
垢版 |
2021/09/19(日) 22:03:44.31
>>361
>ユーザーは平気で「12月1日」から「9月1日」までと入力しやがるので
こういうのは、オレなら最初の欄に「12月1日」って入力した時点で、次の欄に「12月1日」以降しか入らない制限を掛けるな
0364名無しさん@そうだ選挙にいこう
垢版 |
2021/09/19(日) 23:39:41.30
>>360
>>358
のリンク先のやり方は、クエリ上に絞り込み用の演算フィールドを設けて、フォームのコントロールの値が空欄(Null)ならばTrueの値を設定してる。

つまり空欄なら全レコードでのこのフィールドの値がTrueになり、空欄以外ならその値があるレコードだけがTrueになる。

そこで、抽出条件にTrueを設定すると、空欄なら全レコードが選択、空欄以外ならその値があるレコードだけが選択されるってこと

>>360
のリンク先のやり方は、テーブルにあるフィールドの抽出条件として
フォームの値を設定する方法で、これだと、いずれか空欄だといずれのレコードも選択されない。
そこで>>358のリンク先と同様にクエリ上に絞り込み用の演算フィールドを設けているんだが、
空欄の場合にTrueではなく”AA”っていう値を設定しているので、その3種類のあらゆる組み合わせを抽出条件に設定しないといけなくなってる。

どっちが、よりスマートかというと、>>358の方法だと思うよ。
0365名無しさん@そうだ選挙にいこう
垢版 |
2021/09/20(月) 00:11:53.90
IIf(IsNull(forms![フォーム]![種類]),True,[種類]=forms![フォーム]![種類])

IsNull(forms![フォーム]![種類]) or [種類]=forms![フォーム]![種類]
とも書けるけどね。
まあ、大差ないかな。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況