パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

Accessのデータをエクセルファイルに出力する(Access2000以降)

2017-05-17 17:26:43 | Access(アクセス)
今日も、アクセスを取り上げます。

任意のテーブルもしくはクエリーのデータをエクセルファイルに出力する方法をご紹介します。

その際、エクセルのファイル名だけではなく、シート名も指定してみます。

なお、シート名を指定しないと、テーブルもしくはクエリーの名前が
シート名となりますよ。

なお、Accessファイルは、デスクトップに保存してあるものとします。

エクセルファイルは、同じディレクトリ(今回は、デスクトップとなります)に
出力されるようにします。
従って、マイドキュメントにAccessファイルが保存してあれば、
エクセルファイルも自動的にマイドキュメントに出力されます。


Access2007でご説明しますが、2003やXPバージョンでも、問題なく動作します。



以下の画像は、今回エクスポートするテーブルのデータです。
T講座 という名前のテーブルです。






フォームをデザインビューで開いて、ボタンを配置します。
ボタンを選択して、プロパティをクリックします。
(F4キー、もしくは、Alt + Enter でもかまいません)

書式タブの標題に「エクスポート」と入力します。
これが、ボタンの表示される文字となります。






続いて、イベントタブのクリック時の右端の「・・・」をクリックします。






コードビルダを選択して、OKをクリックします。





Visual Basic Editorに切り替わりますので、
以下のように入力します。
画像を参考にしてください。


Private Sub コマンド0_Click()
    Dim FileName As String
    
    FileName = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "")) _
                    & "エクスポート講座.xls"
    DoCmd.TransferSpreadsheet acExport, _
            acSpreadsheetTypeExcel9, "T講座", _
            FileName, True, "講座情報"
    
End Sub







若干の説明をします。
FileName という変数を宣言して、そこにAccessファイルのパスとエクセルのファイル名を代入しています。

これで、Accessファイルがどこに保存してあろうと、同じフォルダにエクセルファイルが保存されるようになります。

エクセルのファイル名は、自由に変更してもかまいません。
今回は、エクスポート講座.xls としました。

次の1文がメイン処理です。

acSpreadsheetTypeExcel9 というのは、Excel2000ファイル形式を指しています。
これにしておくのが、一番安定しているようです。

保存先のファイル名は、先ほど仕込んだ FileName を使っています。

また、最後の 「講座情報 」は、シート名の指定です。
これを省略すると、テーブル名の「T講座」がシート名となります。


さて、それでは、Accessに切り替えて、フォームビューで表示してください。

「エクスポート」ボタンをクリックします。
画面に変化がありませんが、これで、エクセルファイルが出力されました。




もし、エラーが表示されたら、入力ミスの可能性がありますので、よく確認してみてください。


デスクトップ画面を見ると、エクセルファイルが作られていますね。





このファイルを開いてみましょう。
確かに、データが書き出されていますね。





シート名も確認してみましょう。
確かに、「講座情報」となっていますね。





なお、すでに同名のエクセルファイルが存在していても、エラーは出ません。
シートを上書きします。
シート名を変更してエクスポートすると、シートが増えていきますよ。




エクエルつながりで思い出しました。

エクセルって色々な機能があって、使い方によってはまるで手品(マジック)のようになるんですよね。

子どもの“プログラミング的思考"をグングン伸ばす本

この本、おすすめですよ(^^)

だい
コメント (8)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Access2010 テーブルやクエリが開けない

2011-10-19 09:02:19 | Access(アクセス)
みなさんおはようございます。

先日のAccessのレッスンは、久しぶりに頭をかかえてしまいました(汗)


お仕事でAccessを扱うことが多い生徒のSさんは

自宅でもAccessのお勉強ができるように

Access2010を自分のノートパソコン(Win7)にインストールしたばかり。

教室でもそれを使ってレッスンをしていました。

「あのー・・クエリを実行するとAccessがフリーズしてしまうんですが。」

あら、偶然かもしれないからもう一度Accessを起動して同じ操作をしてみましょうか

「やっぱり・・フリーズしてしまします。」

うーん・・機嫌が悪いのかなぁ

じゃあテーブルを開いてみようか

「あっこれもフリーズしちゃう」


とまぁこんな感じで、突然テーブルやクエリが開けなくなってしまいまして

さらに試したことが

・パソコンの再起動
・OfficeアップデートおよびWindowsアップデート
・Accessの再インストール

で、どれもこれもだめでした。

だい先生も私も首が90度傾いてしまいました(笑)

ちなみに別のパソコンにインストールされているAccess2010で試してみると問題なくテーブルもクエリも

開けました。なのでファイルの損傷ではないですね。

SさんのパソコンのAccessの設定が、なにかどこか違うというのかなぁ・・

ますます首がかたむくぅ~

こんなときは同じような症状で困った人がいないかとネットで検索!

すると

Microsoftのサポートサイトにこんな情報が!(画像をクリックしてページへジャンプ)


書いてある書いてある♪指紋認証のサービスが絡んでるんだぁ

SさんのPCはHP製だね。

でも指紋認証センサーはついてないね。

・サービス名 : バイオメトリック認証サービス
・サービス名 : DP HOST

これらのサービスを停止してみればいいみたいだけど、

メーカーに問合せをしてからのほうがいいみたい。

でも・・ものは試しで一度やってみようか(*^_^*)

(データのバックアップとリカバリDVDの準備をしておきます)

「私のパソコンは指紋認証センサーはついていないのに・・」

でもサービスは入っているかも

スタートボタン→「プログラムとファイルの検索」ボックスに「msconfig」と入力しEnter



システム構成のウィンドウが開くので「サービス」タブをクリック。



サービスの一覧から上記サービス名を探すと・・

ほらあったぁ。しかも有効になっているね♪

じゃあ停めるよ。(チェックをはずします)→OK

そしてパソコンを再起動。

※再起動後に「システム構成(Windows 7/Vista)を使って Windows の開始方法を
変更しました。」というメッセージが表示された場合は [OK] をクリックし、
再起動後にシステム構成ユーティリティが表示された場合は [キャンセル] を
クリックします。

さぁAccess起動してみましょう。

テーブルを開く。やったね(*^_^*)

クエリを実行する。やったね(*^_^*)

なおりましたぁ

PCも問題なく動いているから大丈夫みたいね。

それにしても・・原因が指紋認証のサービスだったとは。

これは絶対にわからないね(笑)

でも

めでたしめでたし(*^_^*)

さぁレッスンの続きをしましょうね

「はい(*^_^*)」



※ちなみに
同じような症状で困っている方は、Microsoftのサポートページに載っているとおり、
一度メーカーに問合せをして指示を受けてくださいね。

今回のPCはセンサーがついていないものだったためと
リカバリDVD・データのバックアップも用意した上で判断し、やらせていただいたまでです。

mihoりん
コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Access2010で作成したファイルを以前のバージョンで開いた場合のエラー

2011-09-29 09:00:29 | Access(アクセス)
Microsoftは、次々と新しいバージョンのOfficeをリリースするので、教室にも4つのバージョンが混在しています。

そこで、今日は、Accessのバージョン間の問題を取り上げます。

Access2010で、データベースファイルを作成します。
過去のバージョンでも開けるように、ファイル形式は、「2002-2003形式」で作成します。

さて、このファイルを開き、Altキーを押しながらF11キーを押します。
VisualBasicEditorが表示されます。

「ツール」→「参照設定」とクリックします。





「参照設定」が表示されます。





「参照設定」の上から4つには、自動的にチェックが入っていますね。

上から4番目の項目に注目ください。
「Microsoft Office 14.0 Access database engine Object Library」にチェックが入っていますね。

Office 14.0というのは、Officeのバージョンを示しています。2010バージョンのことです。


このファイルを、Access2007・2003・2002がそれぞれインストールされているパソコンにコピーして、
この参照設定がどうなるかを確認してみましょう。

まず、Access2007でこのファイルを開いてみます。
問題なく開けます。

参照設定を確認します。

結果は次の通りです。




上から4番目の項目が、次のように置き換えられていますね。

Microsoft Office 12.0 Access database engine Object Library

Office 12.0というのは、Officeのバージョンを示しています。2007バージョンのことです。



次に、Access2003でこのファイルを開いてみます。
開くと、下のような警告メッセージが表示されます。





参照設定を確認すると、4番目の項目が、参照不可 になっています。
これが、エラーの原因です。





次に、Access2002でこのファイルを開いてみます。
開くと、下のような警告メッセージが表示されます。




参照設定を確認すると、4番目の項目が、参照不可 になっています。
これが、エラーの原因です。





それでは、Access2003でファイルを新規作成すると、どのような設定になっているのでしょうか?

教室のパソコンで確認したところ、以下のようになっていました。




赤枠の中の、2つの項目にチェックがついていました。
なお、どちらか1つだけにチェックが入っていることもあります。
これが、Access2003の設定です。
Access2002も、同様でした。


Access2002/2003の場合、上の画面を参考にして、参照設定を手動で修正してください。

まず、参照不可の項目のチェックをはずしてください。
次に、上の画面の項目にチェックを入れてください。
Okを押して、閉じます。


補足:
上の2項目ですが、VBAでデータベースを制御する場合、必要となります。
DAOは、古いタイプ、ADOは、新しいタイプといえます。



だい
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ちょっとおしゃれなフォームのオプションを作成する(Access)

2011-07-26 09:02:21 | Access(アクセス)

みなさんおはようございます。

最近つくったAccessシステムで、お客様がちょっと喜んでくれた

小技をご紹介しましょう。

このようなメインメニューがあり、



オプションボタンを押すと

隠れているメニューが表示され、



もう一度オプションボタンを押すと非表示になる設定です。



デザインビューを表示すると・・

表示・非表示を切り替えるメニューはフォームフッターに配置してあります。



ここがポイントで

メニューフォーム起動時には、フォームフッターを非表示にしておき

オプションボタンを押すたびに、フォームフッターの表示・非表示を

切り替えるコードが書いてあるのです。

↓フォームの「開くとき」イベント



Private Sub Form_Open(Cancel As Integer)

  Me.Section(acFooter).Visible = False
  DoCmd.RunCommand acCmdSizeToFitForm

End Sub

↓オプションボタンの「クリック時」イベント



Private Sub オプション_Click()

  Me.Section(acFooter).Visible = Not Me.Section(acFooter).Visible
  DoCmd.RunCommand acCmdSizeToFitForm

End Sub

これで見え隠れするメニューの出来上がりです(*^_^*)

ちょっとした技でしょ(*^_^*)

mihoりん
コメント (3)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

再起不能?「メモリ不足のため~」エラー(Access2003)

2011-04-26 09:02:30 | Access(アクセス)
みなさんおはようござます。

先日、ある旅館に納品した予約管理システムの修正が入りました。

3年ほど前にAccess2002で開発したものです。

現在私のPCには2003と2007が入っているので、ここは一番環境が近い2003でやろう♪

ところがとことろが・・コーディングに入って3日目くらいののこと・・

いつものようにAccess2003を起動して

メニューformを開こうとしたところ・・




あれ?何これ?

まずは言われた通りにしなくちゃ

でも私、Accessしか起動していないし・・常駐も最低限のものしかないし・・

一応タスクマネージャを起動してメモリの確認をしてみると1.5GB積んでいるメモリのうち

半分以上はまだ利用可能じゃない(ホッ)

う~ん

じゃあデザインビューで開いてみよう


はい?また?

他のformは開けるのかな

あっ開けた。よかった(*^_^*)他は大丈夫ね

でも、なぜメニューformだけエラーが出てしまうのかしら・・

特別重くなるような処理を入れてあるformではないはず

こんなときはネットで解決策をさがしましょう。なにかよい情報があるかも(*^_^*)

調べてみたところ、あるある。

私と同じエラーで困っている方たちがちゃんといました。

でも・・みんな解決できてないみたい。

ただAccess2003にSP3をあててあるとこのエラーが出没するらしいことがわかりました。

Microsoftから修正プログラムが出ている事も。

http://support.microsoft.com/kb/945674/ja

(ちなみにこれをインストールした方は結局解決できなかったらしいですが)

私もSP3だし、やってみるしかないでしょう

・・実行・・

はぁダメだぁ。

なおらないよ。




メニューformはもう作り直すしかないとしても、今後の作業が不安なので

2007で開発することにしよう。

だい先生からのアドバイスもいただき、

今までの邪気?を祓うため

2007でいったん空のデータベースを作成し(拡張子はaccdb)、すべてのオブジェクトをインポートしました。

そうしたらなんと!

メニューformがちゃんと開きました♪

しかも動作も正常です。

2007では改善されているんですね♪

助かりました(*^_^*)

その後順調に2007で開発を進めています。


さて、今回は2007環境のおかげでなんとかなりましたが、これでは
本当の解決とは言えませんよね。

もし同じような経験をされている方で、解決方法をご存じの方は、コメントにてご教示
いただけないでしょうかm(__)m

どうぞよろしくお願いいたします。


さぁ

今日もすてきな一日をすごしましょうねO(*^_^*)O

mihoりん
コメント (6)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

グループごとに連番をふりたい(AccessVBA編)

2011-02-22 09:00:32 | Access(アクセス)
今回は、mihoちゃんが書いてくれたブログの続編をお送りします。

グループごとに連番をふりたい(Access2007編)では、関数を巧みに使って、連番を設定していましたね。

今回は、AccessVBAを使って連番をふってみます。

なお、Access2002以降なら、問題なく動作すると思います。(動作確認してませんので多分・・・)


まず、テーブルの確認です。mihoちゃんの時と同じテーブルを用意しました。
ただし、このテーブルには、班IDというフィールドが既に定義されています。
(データ型は、数値型です)

班IDフィールドに、連番を書き込んでいくのが今回の目的です。





このテーブルは、班ごとにグループ化されていないので、プログラム処理しやすいように、
まずは、班ごとに並び変えるクエリを作成します。


以下のようなデザインで、クエリを作成します。
班フィールドをソートしてあれば十分ですが、今回は、さらにID順に並べ替えておきました。





データシートビューで表示すると、以下のようになります。




この状態で、班IDフィールドに連番を振るということは、班1が4件あるので、1、2、3、4と連番を振った後、
班の値が2に変わるので、また、1から連番が降られることになります。

この流れをプログラムしていくのです。

さて、プログラムを実行するために、ボタンを備えたフォームを用意します。





ボタンを1つ配置します。
ボタン名は、表題と同じ「連番を振る」にしました。





プロパティシートのイベントタブから、クリック時イベントの右端をクリックします。

コードビルダを選択して、Visual Basic Editorが表示されたら、以下のようにコードを記述してください。


画像を載せておきます。(なぜかテキストにすると、はじかれてしまうので画像でごめんなさい)





コードの解説は、コメントを参照してください。





それでは、フォームビューに切り替えて、ボタンをクリックしてみましょう。
よほどたくさんのレコード件数でない限り、処理は、あっという間に終わります。

クエリを開いて、確認してみると、ちゃんと連番がふられています。






今回の例は、mihoちゃんの紹介してくれた方法を使えば、バッチリですが、VBAをうまく使うと、
Accessは、ますます使い勝手が良くなります。


だい
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

グループごとに連番をふりたい(Access2007編)

2011-02-17 12:13:44 | Access(アクセス)
みなさんおはようございます。前回は生徒さんの質問から

「Excelで名簿を作成したときに、グループごとに1から連番をふる」という

記事を書きました。

さて、ふとこれをAccessでやったらどうなるんだろうと思ってしまい

やってみたところうまくいってしまったので(*^_^*)

さらに「使えるじゃな~い」と思ってしまったので

これを忘れないように記事にしておきたいと思います。

よかったら前回の記事「グループごとに連番をふる(Excel編)」もご覧くださいね。

さて、名簿をAccessでつくると・・テーブルになりますね



みなさん必ずどこかの班に属しています。

クエリを使って班ごとに並べ替え、さらに班の中で1から連番をふっていきます。

作成タブ→クエリデザインビューから



T名簿を追加します。

フィールドをデザイングリッドに登録します。





わかりやすいように左から登録順を名前、班、IDにします。

並べ替えで班の昇順、IDの昇順にします。

左から4つ目に演算フィールド 班IDを追加し、連番をふる関数を入れます。

ExcelではCountIfでしたが、Accessの場合Dcount関数を使います。





はい。これでおしまい。データシートビューで見てみましょう。



班ごとに連番がふられていますね。

この関数をデータシートビューを使ってもう少し説明しますね。

1番上の中田さんデータですが、班が1、IDが2です。

T名簿テーブルの中からIDが2以下でかつ班が1のレコードは・・1件

2番目の百瀬さんデータは班が1、IDが6です。

T名簿テーブルの中からIDが6以下でかつ班が1のレコードは・・2件

ということでレコードの件数が連番を表しています。

このようにちょっと小技を使えばAccessの関数でも連番が振れます。

おもしろいですね(*^_^*)

さっ今日も楽しい一日にしましょうね。

mihoりん
コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

フォームに時計を表示してみましょう(Acess)

2010-12-23 09:00:28 | Access(アクセス)
みなさんおはようございます。

今日はAccessネタをご紹介しましょう。

フォームに時計を表示させてみたいと思います。

こんな感じで↓



では手順ですが

まずフォームにテキストボックスを配置し、プロパティを設定していきます。

その他タブ:名前を「時計」
データタブ:既定値に現在の日付・時刻を返すNow関数を設定
書式タブ:今回は時計の動きが確認できるように、秒単位まで表示できる時刻(L)を設定







次にフォームのプロパティを設定していきます。

イベントタブ:タイマー間隔を1000にする。単位がミリ秒なので
イベントタブ:タイマー時の・・ボタンをクリックしてコードビルダを選択してOK



コードを記述していきます。

1秒経過するごとにイベントを発生させます。







はい(*^_^*)

これでフォームビューで確認してみますよ。

ちゃんと時計が動いていますね。



ただし、このテキストボックスは値を変更できてしまいますから

気になる場合はテキストボックスのプロパティから

データタブ:使用可能を「いいえ」に、編集ロックを「はい」にしておきましょう。

以上です(*^_^*)


みなさん クリスマスも間近ですね。私はお仕事ですがけっこうワクワクしています。

生徒さんとケーキが食べられたり、もしかしたら雪がふるかも~♪なんて。

ささやかですが、この曲をみなさんへプレゼント(*^_^*)




mihoりん
コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

レポートで特定の明細行に背景色をつける(Access)

2010-12-09 09:04:58 | Access(アクセス)
みなさんおはようござます。

今日はAccessネタですよ。

レポートを出力する際に、ある条件を満たしているデータに背景色をつけてみます。

Accessのコマンドやプロパティにはこのような設定が用意されていないので

VBAを使いますよ。

ある場所にほんの4行書けばできてしまします。(*^_^*)

では

レポートをデザインビューで開きます。

詳細セクションをダブルクリックしてプロパティを表示

イベントタブをクリック

フォーマット時(イベント)の ... ボタンをクリック



「コードビルダ」を選択してOK



VBEが起動し、プロシージャが表示されます。

↓このプロシージャは、レポートの詳細データを印刷時に実行されます

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
     ここにコードを記述
End Sub



Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    If Me!総合得点 >= 200 Then
      Me.Section(acDetail).BackColor = RGB(255, 0, 255)
    Else
      Me.Section(acDetail).BackColor = RGB(255, 255, 255)
    End If
End Sub

このようになります。

結果はプレビューで確認。



うまくいっていますね(*^_^*)

さっ今日も楽しい一日を♪

mihoりん
コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ビューを切り替えるショートカットキー(Access)

2010-11-04 09:00:24 | Access(アクセス)
おはようございます。

今日はAccessネタでいきます。

「先生、ビューを切り替えるショートカットってないんですか?」

まだインストラクターになったばかりの頃は答えられなかった質問を

久しぶりにいただきました。

今ならお答えできますよ(*^_^*)

Ctrl+「,(カンマ)」→デザインビュー
Ctrl+「.(ピリオド)」→データシートビュー

に切り替えられます。

実はビューは何種類かあるんですよね。

テーブルの場合↓

データシートビュー
デザインビュー
データシートビュー
ピボットグラフビュー
ピボットテーブルビュー


クエリの場合↓

データシートビュー
デザインビュー
ピボットグラフビュー
ピボットテーブルビュー
SQLビュー

Ctrl+「,(カンマ)」を続けて押していくと上記の順で切り替わります。
Ctrl+「.(ピリオド)」を続けて押していくと上記の逆順で切り替わります。

ピボットなどのビューに切り替えることはあまりないと思いますので

Ctrl+「,(カンマ)」→デザインビュー
Ctrl+「.(ピリオド)」→データシートビュー

↑このように覚えましょう。マウスをコマンドボタンに移動する手間が
省け、けっこう快適です。

さて、フォームやレポートの場合は・・

どうぞ試してみてくださいね。

「ふぅん 勉強になりました。これって実はあまり知られていないんじゃ
ないですか?」

私もそう思います。

では楽しいレッスンを続けましょう(*^_^*)

mihoりん
コメント (3)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Access フォームでテキストボックスを扱う時の便利なプロパティ

2010-10-26 09:02:24 | Access(アクセス)
Accessのお勉強をしている生徒さんからこんな質問がありました。

「ねぇ先生、テキストボックス内で改行するにはどうしたらいいの?普通にEnterキーを

押すと、次のコントロールにカーソルが移動しちゃうんだけど・・」



「私のプロフィール」フォームの「プロフィール欄」のところですね。

これはCtrlキー+Enterキーで改行できますよ

「ふうん。でもついクセでEnterキーをおしちゃいそうだな・・」

たしかにそぉねぇ(*^_^*)私も・・(笑)

どうしてもEnterキーで改行したい?

「そのほうがいい!」

どうしても?

「はぁ」

じゃあそうしちゃいましょう

「もぉ もったいぶっちゃって」

ふふふ(*^_^*)ごめんなさい

じゃぁね、フォームをデザインビューに切り替えてプロフィールテキストボックスの

プロパティを出してね





その他タブ→Enterキー入力時動作を「フィールドに行を追加」に替えてください



以上です

「はい?これでいいの」

そうですよ

動かしてみて

「あっ本当だ。改行がEnterで出来る(*^_^*)」

でね、この設定にしたらコントロールの移動はTabキーになりますからね。

入力が済んだらTabキーで移動してね

「はぁい」

今日も楽しいレッスンは続く・・




さて、せっかくなのでみなさんに上記の設定をVBAで記述する場合もご紹介します↓

フォームをデザインビューに切り替え→プロフィールテキストボックスを選択→プロパティ



→イベント→フォーカス取得時→コードビルダ から・・







一応記事にも記述しておきます↓

Private Sub プロフィール_Enter()
  プロフィール.EnterKeyBehavior = True
End Sub

それではホントにこれで以上になります(*^_^*)

今日も良い一日を~♪

mihoりん
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

レポートに累計を表示する(Access)

2010-09-07 09:01:55 | Access(アクセス)
みなさんおはようございます。以前フォームに累計を表示させる記事を書きましたが

今回はレポートでやってみましょう。

フォームに表示するには元になるクエリで関数を使って累計を出しました。

レポートはもっと簡単です。

このようにレポートがあったとしましょう↓
売上金額の累計を出しましょう。



デザインビューで右側ににテキストボックスを追加します。非連結です。

そしてプロパティで、データタブのコントロールソースに「売上金額」、

集計実行に「全体」を指定します。



はい(*^_^*)これで終わりですよ。簡単でしょう。

では結果を見てみましょう↓



いいですねぇ♪

ちなみにおまけです。

明細行に1,2,3・・と連番を振りたい場合は

コントロールソースに「=1」、集計実行に「全体」を指定すれば出来ますよ。





ばっちりですね(*^_^*)

さぁ今日も一日楽しく過ごしましょうね(*^_^*)

mihoりん
コメント (3)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

累計額を表示する (Access)

2010-08-26 09:00:12 | Access(アクセス)
みなさんおはようございます。

さて今日はAccessネタです。

先日久しぶりにAccessのレッスンをしました。

生徒のAさんは自営業。

受注管理や社員さんの給与管理、そしてスケジュール管理をしようと、Accessで

開発しながらお勉強しています。(りっぱ!)

さて、このような↓支払額を入力するフォームを作ったところ・・・



「ねぇ先生、私支払い額の累計も出したいんですが・・」

なるほど。いい考えですね。

このような場合、クエリに計算してもらいますよ。

(今回は2007で解説します。もちろん2002/2003でもできますからね)

では、このフォームのレコードソースを見てみましょう。

フォームのプロパティから





レコードソースはQ支払額ですね。

...をクリックしてクエリビルダを起ちあげます。



「支払額累計」というフィールドを1つ追加して、数式をいれますよ。こうなります↓



支払額累計: DSum("支払金額","T支払額","ID



はい出来上がり。



いつも思うけど、こういう時の為の関数がちゃんと用意されていてありがたいです。♪

生徒さんも「うれし~い(*^_^*)」

いいね♪楽しくなってきましたね 次は何をやりましょうか(*^_^*)

Accessの楽しいレッスンは続く・・

mihoりん
コメント (6)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Webの画像をリンクしてフォームに表示する(Access2003以降)

2010-06-29 09:01:02 | Access(アクセス)
今回は、いただいた質問にお答えします。

「アクセスのフォームでWEBの画像をリンクして表示させようと
思うのですが、WEBで調べても分かりません。
どうしたらいいのでしょうか。」

ローカル(自分のパソコン)に保存してある画像を表示するのではなく、
Web上の画像というところが、面白いですね。



サンプルとして、以下のようなフォームを作成しました。

赤枠の中をご覧ください。
画像というラベルの付いたテキストボックスには、画像のパスが表示されています。
自分のパソコンの中に保存されている画像ではありませんよ。
ネット上に存在する画像のURLなのです。

下に表示されている実際の画像は、上記のネット上の画像を参照しています。
したがって、インターネットに接続していないと、画像は表示されませんし、
接続しているパソコンならば、どのパソコンでも、きちんと画像が表示されます。
(もちろん、Accessが必要ですよ)





このフォームのもとになるテーブルは、3つのフィールドで構成されています。
ID(オートナンバー型)
キーワード(テキスト型)
画像(テキスト型)

とすると、あれれ?画像を表示しているコントロールは何でしょうか?


実際に表示されている画像は、もとになるテーブルのフィールドと連結されていません。(非連結コントロールです)

実は、画像というフィールドのデータを使ってネットから画像を読み込んで表示しているのです。

つまり、このコントロールを挿入配置したからといって、すぐに画像が表示されるわけではありません。
VBAによるコードの記述が必要となります。


しかし、真っ黒な背景にぼけたWindowsのロゴマーク・・・このコントロールは何者でしょう?

このコントロールは、ウェブブラウザーといいます。





このコントロールの挿入方法をご紹介します。

■Access2003の場合

「挿入」→「ActiveXコントロール」とクリックします。
(下の画像では、既に謎のコントロールが挿入されていますが、
皆さんが操作する時には、もちろん、まだフォーム上に存在していませんよ)







「ActiveXコントロールの挿入」ダイアログボックスが表示されます。

一覧の中から、「Microsoft WEB Browser」を選択します。
「OK」をクリックしてください。

あとは、フォーム上の任意の位置でドラッグしてください。




■Access2007の場合

フォームをデザインビューで表示すると、デザインタブが出現します。
そのリボンの中から、「ActiveXコントロールの挿入」をクリックします。
(下の図の赤枠の中)




一応、拡大しておきます。





「ActiveXコントロールの挿入」ダイアログボックスが表示されます。

一覧の中から、「Microsoft WEB Browser」を選択します。
「OK」をクリックしてください。

自動的に左上に配置されます。任意の位置に移動して、サイズ変更してください。





挿入したActiveXコントロールの名前を確認しておきます。
コントロールを選択したら、プロパティシートを表示します。(F4キーを押してください)
その他タブの「名前」プロパティをご覧ください。

今回は、WebBrowser0 という名前です。
名前は、自由に変更できますので、好きな名前で構いませんが、
その名前を、このあと、VBAのコーディングの際に使用しますので、
よく覚えておいてください。





それでは、いよいよVBAでコードを記述します。

フォームセレクタを選択してから(①を参照)、
プロパティシートの「データ」タブの「レコード移動時」の右端をクリックします。






すると、Visual Basic Editorが起動します。
カーソルの位置に以下を参考にコードを記述してください。


Private Sub Form_Current()
    DisplayWeb
End Sub



DisplayWeb というのは、実は、サブルーチンです。
このプロシージャを以下の通り、追加してください。


Private Sub DisplayWeb()
If Not IsNull([画像]) Then
WebBrowser0.Visible = True
WebBrowser0.Navigate [画像]
Else
WebBrowser0.Visible = False
End If
End Sub



[画像] というのは、画像フィールドの値という意味です。

表示するには、WebBrowserオブジェクトのNavigate メソッドを使います。
引数に、URL(ネット上のアドレス)を指定します。
つまり、画像のパスを使って、ネット上の画像を読み込みなさいという内容になります。

なお、画像フィールドのデータが存在しないと、以前読み込んだ画像がそのまま残ってしまうので、
その対策として、WebBrowserコントロールの表示・非表示を切り替えています。

なお、画像フィールドにURLが入力されたら、直ちに、画像を表示したいので、
以下のコードも記述しておきます。
(画像テキストボックスのプロパティシートのイベントの「更新後処理」の右端をクリックします)



Private Sub 画像_AfterUpdate()
DisplayWeb
End Sub


サブルーチンというのは、このように複数のイベントで呼び出される場合に有効ですね。

一応、画像も載せておきます。





以上で、完成です。

WebBrowserの面白いのは、ローカルに保存された画像も、ちゃんと読み込むところです。

また、画像パスにWebページのURLを入力すると、もちろん、Webページが表示されますよ。
(画像に限らないということです)



おまけ:
Web上の任意の画像のURL(アドレス)を調べる方法について

画像の真ん中で右クリックしてください。
表示されたメニューの中のプロパティをクリックしてください。

プロパティ画面の中にアドレスがありますので、
選択して、コピーしてご使用ください。







だい
コメント (6)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

コンボボックスのリスト行数を増やす(Access)

2010-06-17 09:10:02 | Access(アクセス)
おはようございます。(*^_^*)

今日は久しぶりにAccessネタをご紹介しますね。

↓Access2002/2003の場合、初期設定のコンボボックスのリスト行数は8です。



リストに表示するデータがたくさんある場合、その倍の16行くらい表示しても

いいかなぁと・・

これはコンボボックスのプロパティで設定を変えれば出来ますが・・

でも

いつでも16行も表示していたら、場所をとってしまうようでイヤだなぁと・・・



思ったことがあるあなたの為に(何人くらいいるんだろう・・)


コンボボックスをダブルクリックして、表示行数を変えてしまおう!

簡単に出来ますよ(*^_^*)

↓このように・・・

コンボボックスのプロパティ→「イベント」タブ→「ダブルクリック時」→…をクリック

→「コードビルダ」を選択してOK→VBEが起動







コンボボックスをダブルクリックした時の処理を

Private Sub コンボ0_DblClick(Cancel As Integer)

    ここに書きます

End Sub

ちなみに「コンボ0」とはこのコントロールの名前です。プロパティの「その他」タブの「名前」で

確認できます。

↓さて、コードを書きます。



Private Sub コンボ0_DblClick(Cancel As Integer)

  If コンボ0.ListRows = 8 Then
    コンボ0.ListRows = 16
  Else
    コンボ0.ListRows = 8
  End If

  コンボ0.Dropdown

End Sub


ではやってみましょう。



けっこう気持ちいいです(*^_^*)

mihoりん
コメント (5)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

【おすすめ】

パソコン買ったらまず入れる10のアプリ