- ベストアンサー
Accessのフォームでシマシマ
いつもお世話になっています。 大変恐縮なのですが、どなたか教えてください。 Accessのフォームでシマシマの帳票フォームを作るにはどうしたら良いのでしょうか? いくつか調べてみましたが、どれもしっくりくる答えがなく質問いたしました。 お願いいたします。 Access2000 WindowsXP
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#2です > RowNo()関数をダブルクリックすると、 この操作は何でしょうか。チョッとわかりません。 > 「ファイルへのアクセスエラーが発生しました。 > ネットワークへの接続が切断されている可能性があります。」 > とエラーメッセージがでました。 このインポートしたものが原因とは考えにくいエラーと思います。 インポートしたものの中での動作でエラーが発生すると、エラーの内容は イミディエイトウィンドウに表示されるだけだと思います。 何故エラーが出たのか、原因はチョッとわかりません。 その mdb ファイルのコピーを取っておいて、最適化してみてどうなりますか。 また、新規 mdb を作成し、そのエラーの起きた mdb から全てインポートして、 新規 mdb での動きもおかしくなるのでしょうか。 メニューの「ファイル」→「外部データの取り込み」→「インポート」から、 ダウンロードした mdb ファイルを指定し、「モジュール」にある2つをインポートすると RowNo() 関数が使えるようになると思います。 後は、条件付き書式等で RowNo() を使ってみてください。 (RowNo() 関数を使うフォームの「コード保持」は「はい」にしておきます) (イベントプロシージャが全くないフォームに組み込む時には注意) なお、#2で提示した方法の条件付き書式のところで、 条件1、条件2で行の色を変更していましたが、 少しでも処理を速く・・・・とした場合、条件は1つだけにした方が良いと思います。 (気付いていたかと思いますが、念のため) 元々のテキストボックスの背景色を奇数行のものにしておいて、 条件付き書式の方で偶数行を判別して背景色を変える。 (説明上、対比しやすかったので並べて書いてました) テキストボックスでどうにか・・・・っていう方法でした。 後、見栄え的には、このシマシマ用テキストボックスの前面に乗っかっている テキストボックスの背景スタイルを透明にすると行の色が全部見えるようにはなります。 余談) YU-TANG さんのところは見られましたか。 他の記事 OleRect 関数 - 表形式(帳票)フォームの背景色をレコード別に変える方法 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsFrmOleRect.html これはまさに行の色変えの方法です。 サンプルファイルのフォームに「商品2」があります。 そこの動きで行番号を得る関数と組み合わせるとシマシマにできると思います。 (記事後半の使用上の注意は、よく読んでください) =OleRect(IIF((RowNo() Mod 2)=1,奇数行の色,偶数行の色)) でいけそうな気はします。(未検証)
その他の回答 (4)
- shinkami
- ベストアンサー率43% (179/411)
>ピクチャサイズ… 添付は ピクチャ:1cm角内に数個の同心円 JPG形式 ピクチャ全体表示:はい ピクチャサイズ:クリップ
お礼
ありがとうございます。 背景に画像を設定するという考えは私になかったので、 教えていただきありがとうございました。 ですが、私が考えていたものと少し違いました。 私の考えていたシマシマというのは、フォームの詳細部分が 各レコードごとにシマシマになるようにと、考えていました。 説明が悪く、うまく伝わらずすみませんでした。 このような質問にご回答いただき、うれしく思います。 これからも、もし私の質問を見つけたらご指南いただけたらと思います。 ありがとうございました。
- shinkami
- ベストアンサー率43% (179/411)
勘違いかもしれませんが フォームに背景を入れたいならフォームのプロパティーの書式で ピクチャー関係の設定を試してください。 背景の模様はご自分で検索してください。 背景の大きさは小さい時はタイル張りのように敷き詰める 設定もありますので小さくても構いません。 Windowsの壁紙にも使えるのが有りそうですね
お礼
お返事ありがとうございます。 >フォームに背景を入れたいならフォームのプロパティーの書式で >ピクチャー関係の設定を試してください。 この場合、ピクチャーのサイズとフォームのレコードが表示される部分のサイズが 一緒でなくてはならないですよね? まだやってみてはないので、これもやってみようと思います! ありがとうございました。
- 30246kiku
- ベストアンサー率73% (370/504)
できなくはないのですが、処理が重くなりそうな気がします。 2007 からは、詳細のセクションに「代替えの背景色」が追加されていて、 シマシマの帳票フォームを簡単に作ることが出来るようになってます。 とは言っても 2000 で実現したいのですよね。 以下に作り方を記述しますので、小さい環境で試してみてください。 (前回ご質問で画像にあった検索フォーム「F02」をコピーしたものが適当かと・・・) 準備) ・帳票フォームを表示している時、私は何レコード目を表示しているの? これを求める方法を入手します。 YU-TANG さんの フォームに行番号を表示する方法 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsFrmRowNo.html ここからサンプルファイルを入手します。 ここの RowNo() 関数を使って偶数・奇数行を判別するようにします。 必要なものをインポートしておきます。 フォームの修正) 以下、フォーム「F02」を想定して記述していきます。 ・詳細部分を縦にちょっと広げて、 各テキストボックス等を縦方向中央になるように移動します。 ・ヘッダ部分にテキストボックス(仮名「txt1」)を配置し、ラベル部分は削除します。 ・そのテキストボックスを詳細左上角に合わせて移動します。 ・そのテキストボックスの大きさを、詳細部分全部になるようにします(全てを隠すように) ・そのテキストボックスの 「タブストップ」を「いいえ」 「フォーカス取得時」をイベントプロシージャにし、以下を記述します。 Private Sub txt1_Enter() Me.顧客CD.SetFocus End Sub これは、テキストボックス「txt1」かマウスでクリックされた時、 前面に出てこないようにするために、クリックされたら「顧客CD」へフォーカス移動。 固定で「顧客CD」にフォーカスが移動するようにしましたが、 Private Sub txt1_Enter() Screen.PreviousControl.SetFocus End Sub のように、前にフォーカスがあったところに・・・でも良いかもしれません。 ・テキストボックス「txt1」の「背景スタイル」が「普通」になっていることを確認します。 ・条件付き書式で以下を設定していきます。 条件1: 「式」にして (RowNo() Mod 2)=1 で奇数行での背景色を指定 条件2: 「式」にして (RowNo() Mod 2)=0 で偶数行での背景色を指定 ・今まで設定してきたテキストボックス「txt1」を「最背面へ移動」させます。 (メニューの書式から指定) 以上で修正は完了です。 ※ マウスホイールのコロコロとか、スクロールバーでのスクロール等、 条件付き書式での背景色表示が追いつきません。 ※ 記述忘れがあったらごめんなさい。大体上記のような感じです。 ※ 上記は条件付き書式を使ったものになりますが、条件付き書式を使わずに コントロールソースで記述する方法もあります。 (この場合は、色付けなしと/ありの違いになりますが) カレント行の背景色の変更 その3 http://hatenachips.blog34.fc2.com/blog-entry-21.html これ、カレント行という処理をしていますが、首をひねればそのまま使えると思います。 つまり、コントロールソースの判別で =IIF((RowNo() Mod 2)=1,"gggggg","") として前景色(フォントの色)を設定すれば、その前景色がバックとなった表示になると思います。 ※ このテキストボックスは最背面にしておきます。 ※ 他のプロパティはそのまま設定してみてください。 ※ 条件付き書式を使った方法、文字の前景色を使った方法・・・・ どちらが軽い処理なのかわかりません。
お礼
ありがとうございます! いつもお世話になってしまっていてすみません… 現在、前回のデータをもとにやってみています。 同時に、2007を会社で買っていただくように頼んでみています。笑 >カレント行という処理をしていますが、首をひねればそのまま使えると思います。 首をひねるだけで解決できるといいのですが… とにかくやってみます! わからなかったらまた補足させていただきます。 その時は、もしよろしければよろしくお願いいたします。
補足
すみません、いつもありがとうございます。 いくつかわからない点があるので補足質問させてください。 >フォームの修正) 以後は恐らく指示通りにできていると思われます。 できなかったと思われるのは準備段階です。 RowNo()関数のインポートがきちんとできていないのでは、と思っています。 F01-1などが入っているアクセスデータのモジュールに入っている、 インポートしたRowNo()関数をダブルクリックすると、 「ファイルへのアクセスエラーが発生しました。 ネットワークへの接続が切断されている可能性があります。」 とエラーメッセージがでました。 おそらくこれが原因だと… インポート方法が間違っていたのか、それとも何か他に要因があるのか… すみませんが、お分かりになられる範囲でよろしいので、教えていただけないでしょうか。 よろしくお願いいたします。
- osahune
- ベストアンサー率47% (288/609)
ストライプ・シープかと^^; 失礼しました。。 下記へどうぞ。 魔法使いの開発工房 http://www.mahoutsukaino.com/ ↓ 魔法使いの開発工房--Access2000 超入門 http://www.mahoutsukaino.com/ac/ac2000/index2000.htm vBAの小屋 → シマシマのレポート で如何でしょう?
お礼
お返事ありがとうございます。 魔法使いの開発公房さんも参考にいたしました。 しかし最後のほうで、とりあえずできないということと、 意味深なことを書かれていたのですが、私の理解が足らず結局できないという結論に落ちました。 ですが、VBAを学ぶためにとても役に立ちます。 ありがとうございました。
お礼
お返事ありがとうございます。 なんとアクセス2010買っていただきました! しかし、この問題をきちんと解決してから2010に移行したいので、 すみませんが、宜しければもう少しお付き合いいただけたら嬉しいです。 本当は以前のご回答いただいた、「別フォームから主フォームに反映させるには?」 のことでも、もう少しお伺いしたいことがあるのですが… 本件 >> RowNo()関数をダブルクリックすると、 データベース→モジュール→インポートしたRowNo関数の2つ インポートした2つのRowNo関数のモジュールがあると思うのですが、 それを開こうとした時にでたエラーです。 >このインポートしたものが原因とは考えにくいエラーと思います。 すみません…私のインポートの仕方が間違っていました! 元のデータをコピーしたものをインポートしていたためにできなかったのだと思われます。 (それ以前にやり方も間違っていたのですが…) お騒がせし大変申し訳ありませんでした。 ご説明通りにきちんとやり直してみたら、できました!!! 条件は一つだけにしました。 ご忠告の通り、マウスホイール時や起動時等は反応が遅かったです。 ですが、さほど気になりはしないのでこれで十分すぎると思います。 いつも的確かつ丁寧なアドバイスをありがとうございます。 余談で教えていただいたYU-TANGさんのHPも熟読させていただきます。 私が望んでいた通りでしたので、ベストアンサーに選ばせていただきます。 ありがとうございました。