Access VBA質問箱 IV

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

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


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

【7447】Re:日報の作成
発言  小僧  - 06/3/6(月) 9:55 -

引用なし
パスワード
   ▼青首 さん:
おはようございます。

まず…掲示板の上にある、

>>本サイトの基本方針をまとめました。こちら をご一読ください。

をお読みください。

>>できるだけ1トピック1質問にしてください

とあります。

今回は当方が別スレッドを建てますので、
次回からはルールを守っていきましょう!
・ツリー全体表示

【7446】バーコードでのチェックボックスオン
質問  シャドウ  - 06/3/5(日) 19:53 -

引用なし
パスワード
   はじめまして。VBA超初心者です。
バーコード入力で出欠チェックをしたいと考えています。
バーコードのコントロールソースが個人IDの列に
なっているとして、
読み込んだ個人IDをもとに、月ごとの列に入っているチェックボックスの
当該個人のところのレコードのをチェックボックスをオンにすることは
できるでしょうか。
データシート形式のフォームをつくって、更新イベントでカーソルのある
月名の列のチェックがオンになるコードをつくるような場合は、
適切な関数などがあるでしょうか。
・ツリー全体表示

【7445】Re:日報の作成
質問  青首  - 06/3/5(日) 18:08 -

引用なし
パスワード
   小僧さんの言われるように、ちゃんとフォーム等の仕様を
きちんと決めてから作成するのがいいですね。

今まで小僧さんに教えていただいた方法で、自分なりに必要だと思われる
テキストボックス・コンボボックス・オプショングループを付け加えて
みました。

まあなんとか動いてくれているのですが、ちょっと心配…。

先日作成した残業区分のオプショングループの件で質問なのですが、

プロパティのタブ移動順で
テキストボックス:業務内容→残業時間→残業区分とエンターキーを
押すことによって移動していくのですが、


テキストボックス:残業時間からエンターを押して移動するとき
オプショングループ:残業区分
       ・上司の指示
       ・仕事の遅れ
       ・改善
       ・その他
の一番上、「・上司の指示」にカーソルは移動するのですが、
オプションボタンが選択されないのです。
(オプションボタンの中が白いまま)

「・上司の指示」にカーソルが移動した後、下キーを押してやると
「・仕事の遅れ」のオプションボタンは選択されます。
その後、上キーを押すと「・上司の指示」のオプションボタンは選択
されます。

これをテキストボックス:残業時間でエンターを押すと

、「・上司の指示」にカーソルが移動し、オプションボタンが
選択されるようにしたいのですが、どのようにすればよいでしょうか。

あともうひとつ質問がありまして、

フォームを開くときと閉じるときに

【開くとき】
○○件(社員数)のレコードが追加されます。
○○件(社員数)のレコードが更新されます。

【閉じるとき】
○○件(社員数)のレコードが更新されます。
○○件(社員数)のレコードが指定したレコードから削除されます。

というようなメッセージが表示されるのですが、このメッセージを
表示させないようにするにはどのようにしたら良いでしょうか。

申し訳ありませんが、ご指導お願いいたします。


  
・ツリー全体表示

【7444】Re:レコードの追加
回答  Gin_II  - 06/3/4(土) 23:40 -

引用なし
パスワード
   > 1.フォームヘッダー 名前はなこ ID10
> 詳細       テスト1 5点  実施日2006/2/2
>          テスト2 10点  実施日2006/2/5
> 追加コマンドクリック
>
> 2.フォームヘッダー 名前はなこ ID10
> 詳細       テスト1  点 実施日
>          テスト2  点 実施日

1 の詳細セクションにある、2つのレコードを追加したいということなんでしょうか?
であれば、追加クエリを使ってください。

Microsoft Office アシスタント: INSERT INTO ステートメント
http://office.microsoft.com/ja-jp/assistance/HP010322451041.aspx

Microsoft Office アシスタント: 追加クエリを使ってテーブルから他のテーブルにレコードを追加する (MDB)
http://office.microsoft.com/ja-jp/assistance/HP051880831041.aspx


VBAで、クエリを実行するのなら、OpenQuery メソッドが使えます。
SQL文を直接使いたいのなら、RunSQL メソッドが使えます。

Microsoft Office アシスタント: SQL クエリについて (MDB)
http://office.microsoft.com/ja-jp/assistance/HP051884121041.aspx


フォームを開くときに、特定のレコードを抽出したい場合には、OpenForm メソッドの
WhereCondition 引数を使ってください。
・ツリー全体表示

【7443】レコードの追加
質問  ジダン  - 06/3/4(土) 21:56 -

引用なし
パスワード
   はじめまして。
教えていただきたいのですが。
テスト課題入力用データベースを作っています。
レコードを追加するコマンドを作り新しい入力フォームへ移動した上で名前やID番号のみを表示するにはどのようなVBAを作ればよいでしょうか?

1.フォームヘッダー 名前はなこ ID10
詳細       テスト1 5点  実施日2006/2/2
         テスト2 10点  実施日2006/2/5
追加コマンドクリック

2.フォームヘッダー 名前はなこ ID10
詳細       テスト1  点 実施日
         テスト2  点 実施日
初歩的なことでもうしわけありませんがよろしくお願いします。
・ツリー全体表示

【7442】Re:毎朝5時に起動させるには?
お礼  furau  - 06/3/3(金) 17:12 -

引用なし
パスワード
   >>>Ginさん、小僧さん、ありがとうございます!
    試した後、どうなったか報告します。

>>現在ある顧客データと新規の顧客データをマッチングさせるToolを作成します。
>
>このツールを、VBScript なんかで作成し、
>
>>毎朝5時にToolを起動させるにはどのような方法がありますでしょうか?
>
>AT コマンド
>Windows のタスク機能
>
>あたりを使ってやるとか。
・ツリー全体表示

【7441】解決しました
お礼  木蓮  - 06/3/3(金) 15:10 -

引用なし
パスワード
   小僧さん

早速のお返事ありがとうございます!
希望通りの動きになりました。

独学ではじめたばかりだったので大変助かりました。
・ツリー全体表示

【7440】Re:コンボボックスの絞込み
回答  小僧  - 06/3/3(金) 14:24 -

引用なし
パスワード
   ▼木蓮 さん:
こんにちは。

>テーブル1
>|名前   |文書番号  |コメント |
>|キリン  |1,2,3 |あいうえお|
>|さる   |1,5,6 |かきくけこ|
>|うさぎ  |4,5   |さしすせそ|
>|かめ   |5     |たちつてと|

ご提示のデータは データベースとしては相応しくない値の持ち方だと思われます。
Web検索等で「データベース」「正規化」をキーワードに調べてみて下さい。

テーブル1
名前    文書番号
キリン    1
さる     1
キリン    2
キリン    3
うさぎ    4
さる     5
うさぎ    5
かめ     5
さる     6

テーブル2
名前    文書番号
りんご    1
りんご    2
バナナ    3
オレンジ   1
オレンジ   4
オレンジ   6

このようなデータであれば、
フォーム上にコンボボックス「cmb1」「Cmb2」を配置。

Cmb1
値集合ソース:SELECT 名前 FROM テーブル1 GROUP BY 名前;

Cmb2
値集合ソース:SELECT テーブル2.名前 FROM テーブル1
       INNER JOIN テーブル2 ON テーブル1.文書番号 = テーブル2.文書番号
       WHERE テーブル1.名前=[Forms]![フォーム名]![Cmb1]
       GROUP BY テーブル2.名前;


の様に設定し、Cmb1の更新後処理に

Private Sub cmb1_AfterUpdate()
  Me.Cmb2.Requery
End Sub

という様なコードを書くとコンボボックスが連動するかと思います。
・ツリー全体表示

【7439】コンボボックスの絞込み
質問  木蓮  - 06/3/3(金) 13:32 -

引用なし
パスワード
   はじめまして、よろしくお願いします。

テーブル1
|名前   |文書番号  |コメント |
|キリン  |1,2,3 |あいうえお|
|さる   |1,5,6 |かきくけこ|
|うさぎ  |4,5   |さしすせそ|
|かめ   |5     |たちつてと|

テーブル2
|名前   |文書番号 |コメント |
|りんご  |1,2  |あかさたな|
|バナナ  |3    |いきしちに|
|オレンジ |1,4,6|うくすつぬ|

コンボボックスの絞込みをしたいのですが
テーブル1の文書番号に含まれている番号が
テーブル2の文書番号のいづれか該当すれば
2つめのコンボボックスに表示したいのです

単純に
文書番号 like *" & Me!コンボボックス0.column(1) & "*"
とやってしまうと希望通りの動きになりません。

↓例↓
キリンを選んだ場合
    りんご
    バナナ
    オレンジ

さるを選んだ場合
    りんご
    オレンジ

うさぎを選んだ場合
    オレンジ

かめを選んだ場合
    該当なし

↑例おわり↑

このようにするにはどうすればよいでしょうか。
・ツリー全体表示

【7438】Re:毎朝5時に起動させるには?
発言  小僧  - 06/3/3(金) 13:00 -

引用なし
パスワード
   ▼furau さん、Gin_II さん:
こんにちは。

>このツールを、VBScript なんかで作成し、
>AT コマンド
>Windows のタスク機能
>
>あたりを使ってやるとか。

Access だけで解決されたいのであれば、
MDB を開いたままにしておかなければいけない、という条件が付きますが
Form の Timer イベントを使われると可能かと思われます。

適当な秒数毎に Now 関数で Windows の時間を確認し、
5 時を過ぎたらモジュールを実行させる事が可能です。


Windows の機能を使って良いのでしたらタスクスケジュールで朝 5時に MDB を起動し、
AutoExec マクロでモジュールの実行を行えば可能ですね。
・ツリー全体表示

【7437】Re:AddNewについて教えてください。
お礼  [名前なし]  - 06/3/3(金) 12:57 -

引用なし
パスワード
   ▼クロ さん:
いろいろなアドバイスありがとうございます。
DAOで既定値を設定するで処理してみます。
ほんとうにありがとうございます。
・ツリー全体表示

【7436】Re:毎朝5時に起動させるには?
回答  Gin_II  - 06/3/3(金) 12:43 -

引用なし
パスワード
   >現在ある顧客データと新規の顧客データをマッチングさせるToolを作成します。

このツールを、VBScript なんかで作成し、

>毎朝5時にToolを起動させるにはどのような方法がありますでしょうか?

AT コマンド
Windows のタスク機能

あたりを使ってやるとか。
・ツリー全体表示

【7435】毎朝5時に起動させるには?
質問  furau  - 06/3/3(金) 12:38 -

引用なし
パスワード
   こんにちは、質問させてください。
現在ある顧客データと新規の顧客データをマッチングさせるToolを作成します。
既存の顧客データは膨大な量故に、電話番号だけでの成否を判定させようとしています。

この電話番号だけのテーブルを毎日更新し新規のレコードをぶつけようとしているのですが、これを毎日自動化したいと思います。

毎朝5時にToolを起動させるにはどのような方法がありますでしょうか?
・ツリー全体表示

【7434】Re:日報の作成
回答  小僧  - 06/3/3(金) 11:56 -

引用なし
パスワード
   ▼青首 さん:
こんにちは。

>オプショングループの中から選択するような
>形にしたいのですが、またこれも自分にとっては難解で・・・。

データベースを作成する際に、
後からテーブルの項目が増やすとテーブルだけでなく
フォームやモジュール等、色々な所に影響がでてきます。

できるだけ仕様をはっきり決めてから製作に取り掛かりましょう。
(当方も作っている内に段々とやりたい事が増えていく事が多いですけどね^^)


まずテーブルの変更です。
「T_日報情報」と「T_Work」に
数値型:残業区分ID フィールド を追加して下さい。


次にフォームですが、オプショングループの作成の仕方はご存知でしょうか。
もしお解りで無い様でしたら再度ご質問して下さい。

お解りでしたら、フレームのコントロールソースを「残業区分ID」に設定します。


そしてフォームモジュールの変更です。
前回のコードに一部不備がありましたので、訂正させて頂きます。

Private Sub Form_Load()
Dim strSQL As String
   
  strSQL = "INSERT INTO T_Work ( 社員ID, 日付 ) " _
      & "SELECT T_社員.社員ID, Date() AS 日付 " _
      & "FROM T_社員;"
  DoCmd.RunSQL strSQL
  
  strSQL = "UPDATE T_Work " _
      & "INNER JOIN T_日報情報 " _
      & "ON T_Work.社員ID = T_日報情報.社員ID " _
      & "SET T_Work.業務内容 = T_日報情報!業務内容, " _
      & "T_Work.残業時間 = T_日報情報!残業時間, " _
      & "T_Work.残業区分ID = T_日報情報!残業区分ID " _
      & "WHERE T_日報情報.日付=Date();"
  DoCmd.RunSQL strSQL
  
  Me.Requery
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim strSQL As String
  
   strSQL = "INSERT INTO T_日報情報 ( 日付, 社員ID )" _
      & "SELECT 日付, 社員ID " _
      & "FROM T_Work;"

  DoCmd.SetWarnings False
    DoCmd.RunSQL strSQL
  DoCmd.SetWarnings True

  
  strSQL = "UPDATE T_日報情報 INNER JOIN T_Work " _
      & "ON (T_日報情報.社員ID = T_Work.社員ID) AND " _
      & "(T_日報情報.日付 = T_Work.日付) " _
      & "SET T_日報情報.業務内容 = T_Work.業務内容, " _
      & "T_日報情報.残業時間 = T_Work.残業時間, " _
      & "T_日報情報.残業区分ID = T_Work.残業区分ID;"
  DoCmd.RunSQL strSQL

  strSQL = "DELETE FROM T_Work"
  DoCmd.RunSQL strSQL
End Sub

こんな感じでいかがでしょうか。
・ツリー全体表示

【7433】Re:日報の作成
発言  小僧  - 06/3/3(金) 11:35 -

引用なし
パスワード
   ▼青首 さん:
こんにちは。

>テーブルのインデックスの操作でこの件は解決できたみたいです。

>>  DoCmd.SetWarnings False
>>    DoCmd.RunSQL strSQL
>>  DoCmd.SetWarnings True

まずは自力で解決できました様で何よりです。

DoCmd 〜 の行を消すとインデックスが付いている為に重複エラーが発生し、
データの追加ができないような仕組みにしてあります。

エラーが出現しない様に DoCmd〜 の行で無視する様にしてあります。
・ツリー全体表示

【7432】Re:日報の作成
発言  青首  - 06/3/2(木) 22:41 -

引用なし
パスワード
   >この状態を一日20件分(社員数分)のデータの保存だけにしたいのですが
>可能でしょうか?


すみません。

テーブルのインデックスの操作でこの件は解決できたみたいです。

お騒がせいたしました。
・ツリー全体表示

【7431】Re:日報の作成
質問  青首  - 06/3/2(木) 22:27 -

引用なし
パスワード
   申し訳ありません。

F_日報情報についてさかのぼっての質問なのですが、

>2月28日に一度データを入れた後、もう一度フォームを開くと
>前回のデータを修正するような形ではいかがでしょうか。

ということでフォーム上では、修正できるような形になったのですが、
T_日報情報のデータを見てみるとF_日報情報を開いた分だけ
データが増えてしまいます。

たとえば、3月2日にF_日報情報を開いて20名いる社員の日報情報を入力して
フォームを閉じます。

そして3月2日のうちに、F_日報情報をもう一度開いて、情報を変更してフォーム
を閉じると、T_日報情報には40件分のデータが保存されています。

この状態を一日20件分(社員数分)のデータの保存だけにしたいのですが
可能でしょうか?
・ツリー全体表示

【7429】Re:WHERE条件の複数化
お礼  ひろひろRR  - 06/3/2(木) 17:31 -

引用なし
パスワード
   ▼Gin_II さん:
>> 因みにACCESS2000を使用しております。AddItemメソッドが表示されません。
>> RowSouceTypeもValueであります。
>
>AddItem メソッドは、Access2002からのサポートだったと思います。
>値集合ソースを動的に設定するように変更するか、テーブルを使ってください。

>やっぱりそうでしたか...(TT
>ご返信ありがとうございます。別手段を講じてみます。ありがとうございました。
・ツリー全体表示

【7428】Re:WHERE条件の複数化
回答  Gin_II  - 06/3/2(木) 17:20 -

引用なし
パスワード
   > 因みにACCESS2000を使用しております。AddItemメソッドが表示されません。
> RowSouceTypeもValueであります。

AddItem メソッドは、Access2002からのサポートだったと思います。
値集合ソースを動的に設定するように変更するか、テーブルを使ってください。
・ツリー全体表示

【7427】WHERE条件の複数化
質問  ひろひろRR  - 06/3/2(木) 17:16 -

引用なし
パスワード
   お初になります。
SQLにてWHERE条件複数化する場合(Combo/List Box)についてどうしたら?

現況
stSQL = "SELECT * INTO テーブルB FROM テーブルA " _
       & "WHERE(興味度合= '" & Forms!条件フォーム.txt興味度合& "');"

ListBoxで選択した興味度合が条件としてテーブルBを新規作成させています。

これを、Combo/ListBoxからListBoxへ複数追加させ、それらを条件としてテーブルB
を新規作成させるにはどうしたらよいでしょうか?

因みにACCESS2000を使用しております。AddItemメソッドが表示されません。
RowSouceTypeもValueであります。
助けてください。どうかお願いします。
・ツリー全体表示

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