Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


495 / 500 ページ ←次へ | 前へ→

【3248】Re:フォルダを開く方法
お礼  phoo  - 04/8/17(火) 15:48 -

引用なし
パスワード
   ▼こもれび さん:

うまくいきました。
色々な方法があるんですね〜。
皆さんのスキルが高く、大変勉強になりました。
有難う御座います。
・ツリー全体表示

【3247】Re:フォルダを開く方法
回答  こもれび  - 04/8/17(火) 13:19 -

引用なし
パスワード
   こちらの方法もお試しください。

Private Sub コマンド1_Click()
  Dim ShellArg as String
  Dim TskID as Variant

  ShellArg = Me!テキスト1.Value
  TskID = Shell("C:\Program Files\Internet Explorer\IEXPLORE.EXE " & ShellArg, vbNormalFocus)

End Sub

「vbNormalFocus」はwindowstyle定数といい、最小化のウィンドウや最大化のウィンドウなどが設定できます。
詳しくは「Shell関数」のヘルプをご参照願います。

IEのパスはIEのプロパティで念のためご確認ください。
・ツリー全体表示

【3246】Re:フォルダを開く方法
お礼  phoo  - 04/8/17(火) 13:11 -

引用なし
パスワード
   to かみちゃん

実現できました。
URLまで載せて頂き、大変参考になりました。
有難う御座いました。
・ツリー全体表示

【3245】Re:フォルダを開く方法
回答  かみちゃん  - 04/8/17(火) 12:41 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>実現したいのは、「フォルダ選択ダイアログ」を開くのではなく、
>特定の(フォーム画面にて指定したフォルダパス)フォルダを
>IEとして、開きたいのですが。

失礼しました。
それでは、以下でいかがですか?

Private Sub コマンド1_Click()
  Dim objIE  As Object 'IEオブジェクト参照用
  'インターネットエクスプローラーのオブジェクトを作る
  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True
  '文字列で指定したURLに飛ぶ
  '画面にて表示しているフォルダパスが、「テキスト1」テキストボックスにあるとします。
  objIE.Navigate Me.テキスト1.Value
End Sub

これは、以下のURLを参考にしました。
http://www.ken3.org/vba/backno/vba050.html
・ツリー全体表示

【3244】Re:フォルダを開く方法
質問  phoo  - 04/8/17(火) 11:30 -

引用なし
パスワード
   早速のご返事有難う御座います。

実現したいのは、「フォルダ選択ダイアログ」を開くのではなく、
特定の(フォーム画面にて指定したフォルダパス)フォルダを
IEとして、開きたいのですが。
よろしくお願いします。
・ツリー全体表示

【3243】Re:フォルダを開く方法
回答  かみちゃん  - 04/8/17(火) 11:08 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Access2000にて、フォーム画面にあるボタンを押して、
>画面にて表示しているフォルダパスの
>フォルダ(インターネットエクスプローラー)
>を開くことはできますか?

私は、WinAPIのSHBrowseForFolderを使って「フォルダ参照ダイアログ」を開くことで実現しています。
下記のURLは。Excelのサンプルがありますが、AccessVBAでも使用できます。
http://www.loadsystem.net/excel/SHBrowseForFolder.htm
・ツリー全体表示

【3242】フォルダを開く方法
質問  phoo  - 04/8/17(火) 10:59 -

引用なし
パスワード
   Access2000にて、フォーム画面にあるボタンを押して、
画面にて表示しているフォルダパスの
フォルダ(インターネットエクスプローラー)
を開くことはできますか?
出来るとすれば、具体的にどのような方法がありますか?
よろしくお願いします。
・ツリー全体表示

【3241】Re:文字の形態別に全半角の変換を変える
回答  こもれび  - 04/8/16(月) 13:21 -

引用なし
パスワード
   べる様 こんにちは

なるほど、了解しました 〆(・∀・)

ひとつのテキストボックス内で文字種が「混在」している。
と考えたほうがよいわけですね。

( 混在は無いという条件ですと解決方法が楽になりますけど・・・ )

現在職場で質問箱を見ていますので(^^;、帰宅しましたらまた返信します。
・ツリー全体表示

【3240】Re:テーブルへのレコード自動追加
回答  こもれび E-MAIL  - 04/8/16(月) 13:12 -

引用なし
パスワード
   ごろ様 こんにちは

今回の問題解決に関して一案があります。
ここの質問箱はあるひとつのポイントについて不明点などを
解決するものがほとんどです。
ですから、レスポンスツリーもそれほど深くなりません。
今回に関してはひとつのアプリケーション作製ということなので、
このままですと、まだまだツリーが深くなってしまう可能性があります。

そこで、私のメールアドレスをこの投稿については「表示」としますので
私宛にメールをお送りください。
私の一案をメールで返信したいと思います。(^^)/

>Clickイベント時、もしくは、OpenFormsイベント時の記述に

このあたりに関しても「一案」で詳しくお教えします。

>大変親身になっていただき、本当にありがとうございます。

どういたしまして。
・ツリー全体表示

【3239】Re:文字の形態別に全半角の変換を変える
質問  べる  - 04/8/16(月) 13:03 -

引用なし
パスワード
   ▼こもれび さん:
>▼べる さん:
>
>>入力フォームの1つのフィールド内で文字の種類によって
>>英字 → 半角変換
>>カタカナ → 全角変換
>>ひらかな → 全角変換
>
>「1つのフィールド内」とありますが、これは例えば
>一つのテキストボックスということなのでしょうか。
>また、入力がテキストボックスだと仮定して入力される
>文字列は「英字」と「カタカナ」と「ひらかな」が
>混在しているということなのでしょうか?
>
>「ひらがな」は通常全角でしか入力できないのではないか
>と思いますので、「変換対象」から外してもよいのでは?


解かりにくい説明で申し訳ありません。
また、「ひらがな」は変換の必要はありませんでした。すみません。
「1つのフィールド内」は、一つのテキストボックスになり、
ここには、日本人や外国人の名前を記載通りに入力する必要がある為、
漢字、カナ、かな、英字など様々な文字が入力されるのですが、
英字 → 半角変換
カタカナ → 全角変換
数字(?) → 半角変換
といったように文字により統一性を持たせたいと思っています。
どうかご教示ください。
よろしくお願いします。
・ツリー全体表示

【3238】Re:テーブルへのレコード自動追加
質問  ごろ  - 04/8/16(月) 1:08 -

引用なし
パスワード
   たくさんのご助言、ありがとうございます。

>OracleのテーブルをAccessにリンクしていると見ればよろしいのでしょうか?

その通りです。

>例えばユーザーさんが「△△△株式会社はID番号5」と考えさせてから
>アプリケーションが使えるというのでは困ってしまいます。
>また、数ある顧客をリストボックスから選ぶのに何の規則もなく表示されたら
>まず一生懸命顧客名(例えば漢字表示)を探すことからはじまってしまいますが、
>50音順に表示してくれれば手間は少しでも解消します。

ここについては大丈夫です。既にクリアしております。
フォームでの表示はIDベースではなく、テキストベースであり、
並び方も営業サイド(このアプリを利用するのは営業)の要望を満たしております。

>今私の頭の中で考えているイメージは、「修正用フォーム」を立ち上げると
>顧客名を表示するリストボックスと顧客選択決定入力用のコマンドボタン、
>そして選択された顧客の契約状況を表示するチェックボックスと日付を
>表示するテキストボックスが契約X,Y…の数分配置してあり、右隅あたりに
>「修正確定」と「キャンセル」ボタンが設けられているというものです。

私のイメージとほぼ一致しております!!
ただ、ここでリストされる顧客もこの前段階で絞込みも出来るように
するつもりです。
(例えば、【契約Xが無い会社】【契約Yがない会社】など)

>-------- ここで確認のメッセージボックスが表示される -------
>メッセージボックスタイトル:修正確認
>メッセージ本文:
>         次の内容を[日付]で確定してよいですか?
>          [顧客名] [契約X]:[yes/no]
>                .
>                .
>                .
>            OK(ボタン) Cancel(ボタン)
>5. OKボタンのクリックにより、契約テーブルを更新する。
>5’.キャンセルボタンのクリックではなにもしない。

確認メッセージを出すことについてはノーマークでした。。。
参考にさせて頂きます。


>ここの部分はマスタと契約テーブルをSQLで「契約テーブルにない顧客」
>を抜き出して、契約テーブルに追加するということで解決すると思います。
>
>例)
>    マスタ    契約
>    トマト    トマト
>    なす     なす
>    ジャガイモ  (null)
>    きゅうり   (null)
>    レンコン   (null)
>この例では契約テーブルにジャガイモときゅうりとレンコンがありませんから
>この3つを契約テーブルに追加すればよいことになります。

そうです!まさにこれがやりたかったのです!!
私の現状の場合、【会社マスターの会社ID】と【契約テーブルの会社ID】を
比較して、前者にしかないIDを後者に新レコードとして自動で追加
されるようにしたいのです。

具体的には、【修正用フォーム】が開かれた時、もしくは、その前段階で
別画面をはさみ、そのフォーム上でボタンが押された時などに、イベントとして
この新レコードの追加が行われるようにしたいです。
この技術的(?)な記述の仕方を調べたのですが、ヘタレな私には
見つけられなかったのです・・・。
Clickイベント時、もしくは、OpenFormsイベント時の記述に
どのように記述したら良いのでしょうか???

>マスタテーブルに新規顧客が入った場合は文書や口頭で連絡があるのでしょうか。
>それとも全く連絡がないのでしょうか?

連絡はあります。と言うよりも、新規顧客の登録は同部署で行うので、
知っていると言った方が良いかもしれません。
会社テーブルへの追加はもちろん、今回作成中のものとは
別のアプリからになりますが。。。


>全く連絡がないのであれば、「新規チェックフォーム」を用意しておいて
>「確認開始」ぼたんをクリックすると契約テーブルに追加すべき顧客を
>表示して「追加」ボタンをクリックすると追加される。
>というのはいかがでしょうか。

新規登録があったと言う情報は担当者に入っているので、
私が今、考えている理想としては、フォームや確認ボタンのクリックで
契約テーブルへのレコードの追加が行われるよりは、
こもれび様がイメージされている【修正用フォーム】等が開かれた時点で、
ユーザーに契約テーブルへの追加が裏で自動的に終わっている形にしたいのです。

大変親身になっていただき、本当にありがとうございます。
・ツリー全体表示

【3237】Re:レコードが重複して登録されてしまう。
お礼  ことら  - 04/8/16(月) 0:46 -

引用なし
パスワード
   ご回答ありがとうございます。
早速試してみます。
結果をまた報告させて頂きたいと思います。
・ツリー全体表示

【3236】Re:テーブルへのレコード自動追加
回答  こもれび  - 04/8/15(日) 23:21 -

引用なし
パスワード
   >ACCESS 2000で作成しております。
>いじっちゃダメDB(会社マスタ)はOracleです。

なるほど… 〆(..)メモメモ
OracleのテーブルをAccessにリンクしていると見ればよろしいのでしょうか?
参照する会社マスタテーブルには会社名を50音順に並べられる「ふりがな」
やそれに相当する別のコードはありますか?
また、出来上がったアプリケーションを利用するユーザーは何人で、
その方々はすぐに移動することのない人なのか、それともパート・アルバイト
の可能性もあるのか、そのあたりはいかがでしょうか。

なぜそのようなことを聞くのかと申しますと、基本的にアプリケーションは
ユーザーが「何も考えずに使える」ものが理想的なもので、「何かを考えさせる」
ことは極力避けるようにすることが必要だからです。

例えばユーザーさんが「△△△株式会社はID番号5」と考えさせてから
アプリケーションが使えるというのでは困ってしまいます。
また、数ある顧客をリストボックスから選ぶのに何の規則もなく表示されたら
まず一生懸命顧客名(例えば漢字表示)を探すことからはじまってしまいますが、
50音順に表示してくれれば手間は少しでも解消します。

今私の頭の中で考えているイメージは、「修正用フォーム」を立ち上げると
顧客名を表示するリストボックスと顧客選択決定入力用のコマンドボタン、
そして選択された顧客の契約状況を表示するチェックボックスと日付を
表示するテキストボックスが契約X,Y…の数分配置してあり、右隅あたりに
「修正確定」と「キャンセル」ボタンが設けられているというものです。

操作フローは次のようなものです

1. 顧客を選択
2. 選択決定ボタンのクリック(リストボックスで選択してenterキーを押す操作も可とする)
-------- ここで契約状況表示をVBAが行う ---------
3. 表示された契約状況を確認し、修正入力を行う。(チェックボックスのみ)
4. 修正確定ボタンのクリック
-------- ここで確認のメッセージボックスが表示される -------
メッセージボックスタイトル:修正確認
メッセージ本文:
         次の内容を[日付]で確定してよいですか?
          [顧客名] [契約X]:[yes/no]
                .
                .
                .
            OK(ボタン) Cancel(ボタン)
5. OKボタンのクリックにより、契約テーブルを更新する。
5’.キャンセルボタンのクリックではなにもしない。

>会社の追加はそうそうあることでは無いのですが、発生の際は
>手作業ではなく、自動で、契約テーブルの方にも新たに追加された
>会社用のフラグのレコードも作成されて欲しいのです。。。
>(↑ここが今の形での一番のネックになっております。。。)

ここの部分はマスタと契約テーブルをSQLで「契約テーブルにない顧客」
を抜き出して、契約テーブルに追加するということで解決すると思います。

例)
    マスタ    契約
    トマト    トマト
    なす     なす
    ジャガイモ  (null)
    きゅうり   (null)
    レンコン   (null)
この例では契約テーブルにジャガイモときゅうりとレンコンがありませんから
この3つを契約テーブルに追加すればよいことになります。

マスタテーブルに新規顧客が入った場合は文書や口頭で連絡があるのでしょうか。
それとも全く連絡がないのでしょうか?
全く連絡がないのであれば、「新規チェックフォーム」を用意しておいて
「確認開始」ぼたんをクリックすると契約テーブルに追加すべき顧客を
表示して「追加」ボタンをクリックすると追加される。
というのはいかがでしょうか。
・ツリー全体表示

【3235】Re:Accessのクエリー結果をレポート方法
質問  YU-TANG WEB  - 04/8/15(日) 21:31 -

引用なし
パスワード
   こんばんは、YU-TANG です。

> ▼YU-TANG さんありがとうございます。
> お蔭様でできました。

ああ、それは良かったです。

差し支えなければ、何が原因で引っ掛かっていたのか、後学のために
教えていただけませんか。
過去ログを参照するどなたかの役に立つかもしれませんし。
・ツリー全体表示

【3234】Re:テーブルへのレコード自動追加
質問  ごろ  - 04/8/15(日) 15:26 -

引用なし
パスワード
   たびたびのご教授ありがとうございます。

>その1
>使用されている(作るデータベース)のAccessのVersionは2000以上ですか?

ACCESS 2000で作成しております。
いじっちゃダメDB(会社マスタ)はOracleです。

>一つの顧客で例えば3カ月おきに更新されるというようなイメージなのでしょうか。
>・正規化前のデータ(例)
>
> 顧客名     契約日   更新日   商品X  商品Y
>トマト株式会社 2004/5/10  2004/5/10   yes   no
>トマト株式会社 2004/5/10  2004/6/10   no    yes
>トマト株式会社 2004/5/10  2004/7/15   yes   yes
>
>※ 上の例では契約日を一つの顧客との取引開始契約としています。

えぇっとですね、あくまで私が今、考えている形としては、

会社ID  契約X  契約X_更新日 契約Y  契約Y_更新日 ・・・
1     Yes   2004/5/10   Yes    2004/6/10
2     no    2004/08/10   yes    2004/7/20

といったような感じで、各契約ごとに更新日、及び、Yes/Noを持っており、 
更新の際はレコードを新たに追加して過去の履歴として保存していくと言うよりは、
レコードを上書きしてしまって行く形になります。
(フォームを作成して、チェックボックスで操作します。)
ですので、契約テーブルに新レコードが追加されるのは、
新たな取引先の発生(会社マスターに追加があった場合)になります。

ちなみに、契約テーブルの存在意味としては、例えば、
契約XのフラグのNoの一覧をレポートし、今後、営業していくですとか、
各商品ごとに契約期間が決まっているので、契約X_更新日を
2004/5/10以前と言う様な形でレポートすることによって、
契約がもうすぐ切れる会社を知ることが出来ると言った
使い方になります。

そう言う意味では、このテーブルに関してはDBと言うよりは、
レポートの為、チェックの為のフラグとして使う形になります。

確かに、会社マスターに契約がらみの項目も追加できれば
まったく問題ないのですが、あくまで、マスターをいじれないと言う
制約があるため、強引に2つに分けたような形をとり、
クエリの方で完全にこちらの要求を満たしてくれる形になる予定です。

会社の追加はそうそうあることでは無いのですが、発生の際は
手作業ではなく、自動で、契約テーブルの方にも新たに追加された
会社用のフラグのレコードも作成されて欲しいのです。。。
(↑ここが今の形での一番のネックになっております。。。)

初心者の意味不明な説明になってしまい、すみません。
こもれび様のお時間を割いていただき申し訳ありませんが、
ご教授、よろしくお願いいたします。
・ツリー全体表示

【3233】Re:Accessのクエリー結果をレポート方法
お礼  mana  - 04/8/15(日) 13:26 -

引用なし
パスワード
   ▼YU-TANG さんありがとうございます。
お蔭様でできました。
・ツリー全体表示

【3232】Accessのクエリー結果をレポート方法
お礼  mana  - 04/8/15(日) 13:25 -

引用なし
パスワード
   こもれび さん何度も回答ありがとうございます。
お蔭様で出来ました。またこれからもよろしくお願いします。
・ツリー全体表示

【3231】Re:Accessのクエリー結果をレポート方法
回答  こもれび  - 04/8/15(日) 11:55 -

引用なし
パスワード
   >フッターにはテキストボックスを設けたのですが、
>「グループのフッター」に設けるのは普通のフッターとはどんなふうに
>ちがうのでしょうか?

ごめんなさい、訂正させてください。
グループを設けなくても出来ます。<m(__)m>

幾つか私も受止めかたを間違っていたようです。
レポートフッターにテキストボックスを設けて
先の関数を記述すればよいです。

ひょっとして、「ページフッター」と「レポートフッター」を
同じものと考えていらっしゃいませんか?
accessの既定値ではレポートフッターの高さが0になっていますので
見逃しがちなのですが、レポートフッターのプロパティの高さに適当
な数字を記述しますとちゃんと出てきます。

ページフッターに記述するとエラーになってレポートフッターに
記述するとエラーにならず値が表示されるのは、レポートフッターは
レポートのレコードソースが関係するところというaccessの
考え方なのだと思います。
・ツリー全体表示

【3230】Re:Accessのクエリー結果をレポート方法
質問  mana  - 04/8/15(日) 11:34 -

引用なし
パスワード
   ▼YU-TANG さん 回答ありがとうございます
エラーを再現方法とはどんなことをすればいいのでしょうか?
パラメータで抽出したデータだけを足していくので、グループ別のレコード数になるとは思うのですけれど、レポートフッターにテキストボックスを設けてそこに関数を組み入れたんですけれど。。。
・ツリー全体表示

【3229】Accessのクエリー結果をレポート方法
質問  mana  - 04/8/15(日) 11:29 -

引用なし
パスワード
   こもれび さん お返事ありがとうございます。
フッターにはテキストボックスを設けたのですが、
「グループのフッター」に設けるのは普通のフッターとはどんなふうに
ちがうのでしょうか?
・ツリー全体表示

495 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084785
(SS)C-BOARD v3.8 is Free