ma-100140 @ ウィキ Access ADP

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

不具合

Access2010 定義xmlによるスキーマの確認が失敗しました。XML ドキュメントの行に|にエラーがあります。

あぁ、何でしょう。ファイル名にドットがついてたらだめみたいということらしい。確かにドットを取ったら出来ました。

SQLServer のテーブルにbit型のフィールドがあると、Accessでリンクした場合にレコードを修正できない

困りました。何をやっても競合だなんて。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1386175203

bit型をint型にすれば問題が解決。

フォームでレコード件数0のとき詳細が表示されない

通常の場合は レコード件数 0 のときでも詳細が表示されるのですが、以下の条件の場合表示されないことがある。

  • 追加の許可」が「いいえ」に設定してあるとき。
  • レコードソースが更新不可のクエリのとき。
  • レコードセット」プロパティが「スナップショット」で更新できないとき。

Access2000では詳細が0件の時に非連結フィールドをNullでクリアーしても変化がない。何でもいいから(普通は追加の許可を「はい」にする)詳細にレコードが表示されていればきちんと動く。どうもバグみたい。しかし、上記条件の時は回避できない。困ったもんだ。

【解決法の検討】

  1. クリアーの代わりに、フォームを一旦閉じて、再度開く:効果はあるが目障りな動き
  2. フィールドはnullなどでクリアーして、その後一旦最小化し、元のサイズに戻す:効果はあるが、やはり目障りな動き
  3. フィールドはnullなどでクリアーして、その後一旦最大化し、元のサイズに戻す:効果はなし
  4. フィールドはnullなどでクリアーして、画面を再描画しさらに最小化して、元のサイズに戻す:効果はあるが再描画は関係なさそう。
  5. フィールドはnullなどでクリアーして、画面を再描画だけを行う:効果なし

ここまでの結果を勘案すると、どうもウィンドウの表示のところにバグがありそう。一旦最小化すれば、ウィンドウは強制的に再描画されるからバグが回避されるのだろう。ということは面倒であるけどクリアーしたフィールドのVisibleプロパティーをFalseにして強制的に消して、再度Trueにすれば同じ結果が得られるかもしれない。

結果:フィールドのVisibleのFalse→Trueの併用でちらつきなく、フィールドをクリアーできました。

sum関数を使ったフィールドをフォーム上で集計するとエラーになる。

SQL = select sum(台数) as 台数 from 出荷 group by 月
Forms![表示画面].RecordSource = SQL

としてフォームの詳細に月フィールドのコントロールソースを 台数として配置します。また月ごとの合計を集計するためにフォームフッタ領域に集計フィールドをコントロールソースを=sum([台数])として配置します。 しかしながら集計フィールドはエラーが表示されてしまいます。どうもAccessは集計値をフィールドに持っていない感じです。sumした結果をsumするからダメなんでしょうね。試に集計フィールドに=count([台数])としてもエラーです。

Dim rs As Recordset
Set rs = Forms![表示画面].RecordsetClone

rs.MoveFirst
Forms![表示画面]!集計 = 0
While rs.EOF = False
  Forms![表示画面]!集計 = Forms![表示画面]!集計 + rs![台数]
  rs.MoveNext
Wend
set rs = Nothing

と個別に計算してフォームに表示するしかないみたい。面倒なことです。