Access VBA質問箱 IV

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

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


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

【7568】日付の算出
質問  apple  - 06/3/22(水) 13:38 -

引用なし
パスワード
   日付をフォーム上にある、テキストボックスに表示させる事で悩んでいます。
前月の1日と前月の月末を算出する式を、テキストボックスプロパティの
既定値に設定したいのです。

例えば、2006/03/22に実行する場合、
2006/02/01と2006/2/28をテキストボックスに表示したいのです。

ご指導の程お願いいたします。
・ツリー全体表示

【7567】Re:テキストボックスへの表示
回答  小僧  - 06/3/22(水) 8:59 -

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

>T_社員をもとにしてフォーム:F_社員(単票テーブル)を作成して、
>新しく入社した人の名前と部署名を登録していっているのですが


部署名は F_日報情報 の中で変更する事はありませんよね?
それで宜しければ「T_Work」及び「T_日報情報」に部署IDは持たさないのが一般的です。
(マスタ管理と呼ばれたりします。)

T_日報情報 のレコードソースを下記 SQL に変えてみてください。

SELECT T_Work.*, T_社員.部署ID
FROM T_Work INNER JOIN T_社員 ON T_Work.社員ID = T_社員.社員ID
ORDER BY T_社員.部署ID;


ただし、例えば
3月31日までは 経理部
4月 1日からは 営業部

のような過去の履歴として所属部署の情報が必要な場合は
もう少し変更が必要になってきますね。
・ツリー全体表示

【7566】Re:テキストボックスへの表示
お礼  青首  - 06/3/21(火) 20:34 -

引用なし
パスワード
   ▼中西 健 さん:

すみません。ありがとうございました。

どうしてもT_社員の社員ID順に並んでしまうみたいです。

自分でももう少し考えてみたいと思います。
・ツリー全体表示

【7565】Re:テキストボックスへの表示
回答  中西 健  - 06/3/21(火) 8:01 -

引用なし
パスワード
    私にはそのようになる状況が思い浮かびません。
 他の方の回答を待つことになるかと思います。
・ツリー全体表示

【7564】Re:テキストボックスへの表示
質問  青首  - 06/3/20(月) 20:48 -

引用なし
パスワード
   ▼中西 健 さん:
> F_社員で最後に登録した社員の部署が菊ということはないですか。
> チューリップでも試してください。

チューリップでもバラでも試したのですが、やはり最後に登録した
社員名は、F_日報情報でも最後に表示されてしまいます。

F_日報情報のフォームはレコードソース以外特に変えなくても
大丈夫でしょうか。
・ツリー全体表示

【7563】Re:一つのフォームを複数のテーブルやクエ...
回答  Gin_II  - 06/3/20(月) 17:12 -

引用なし
パスワード
   >使いまわすことは可能でしょうか?

レコードソースプロパティを変更してみてください。
・ツリー全体表示

【7562】一つのフォームを複数のテーブルやクエリで
質問  たーとる  - 06/3/20(月) 16:50 -

引用なし
パスワード
   使いまわすことは可能でしょうか?
・ツリー全体表示

【7561】Re:RE:分類されているコード毎にEXCE...
発言  まさ7251  - 06/3/20(月) 16:23 -

引用なし
パスワード
   >(11行目の???部分の入力が不明です)
>
>このように入力してみましたが、エラーとなります。
>Set xlsWkb = xlsApp.Workbooks.Open(XName)
>この部分が黄色くなります。

11行目の
>    Set Rst = CurrentDb.OpenRecordset(RS![???], dbOpenDynaset)
と、このように〜
>Set xlsWkb = xlsApp.Workbooks.Open(XName)
とは、全然別のものですが、
結局、どの部分を聞きたいのでしょうか?

>エラーメッセージは
> 「実行時エラー'1004':
>  'C:\マイドキュメント\test,xls'が見つかりません。
>  ファイル名およびファイルの保存場所が正しいかどうか確認してください。」

これは、エラーメッセージのままです。
ファイルがないのではないでしょうか?
Cドライブに”マイドキュメント”というフォルダを作っているのですか?

既に小僧さんがご指摘している通り、まずは、コードの内容を
理解していないと、うまくいくはずもありませんが。。。
> 過去ログの方では「シート名」「セル位置」をテーブル化していますが、
> コードの内容が理解できれば、特にテーブルを持たさなくても
> コード毎にシートに出力できると思います。

それとも、ともさんのテーブルに合わせて
コードを書き換えてくれるのを期待しているのでしょうか?
・ツリー全体表示

【7560】RE:分類されているコード毎にEXCELの...
質問  とも  - 06/3/20(月) 15:11 -

引用なし
パスワード
   テーブル名 testテーブル
コード 氏名
1111  山田
1111  山田
2222  佐藤
2222  佐藤
2222  佐藤
3333  鈴木
・・・・・・・・・・・・・・・・・・・・・・・・
Dim RS As DAO.Recordset
Dim Rst As DAO.Recordset
Dim xlsApp As Object
Dim xlsWkb As Object
Dim XName As String
Dim SName As String

 XName = "C:\マイドキュメント\test.xls"
 Set xlsApp = CreateObject("Excel.Application")
 
 Set RS = CurrentDb.OpenRecordset("testテーブル", dbOpenDynaset)
 
  Do Until RS.EOF
    Set Rst = CurrentDb.OpenRecordset(RS![???], dbOpenDynaset)
      SName = RS![Sheet1]
      With xlsWkb.Sheets(SName)
       .Range(RS![A1]).CopyFromRecordset Rst
      End With
    Rst.Close
    RS.MoveNext
  Loop
  Set Rst = Nothing
  RS.Close: Set RS = Nothing
  xlsWkb.Close True: Set xlsWkb = Nothing
  xlsApp.Quet: Set xlsApp = Nothing
  End Sub


(11行目の???部分の入力が不明です)

このように入力してみましたが、エラーとなります。
Set xlsWkb = xlsApp.Workbooks.Open(XName)
この部分が黄色くなります。

エラーメッセージは
 「実行時エラー'1004':
  'C:\マイドキュメント\test,xls'が見つかりません。
  ファイル名およびファイルの保存場所が正しいかどうか確認してください。」
と出ます。
・ツリー全体表示

【7559】Re:テキストボックスへの表示
回答  中西 健  - 06/3/19(日) 20:18 -

引用なし
パスワード
    F_社員で最後に登録した社員の部署が菊ということはないですか。
 チューリップでも試してください。
・ツリー全体表示

【7558】Re:テキストボックスへの表示
質問  青首  - 06/3/19(日) 19:31 -

引用なし
パスワード
   ▼中西 健 さん:

早速の回答ありがとうございます。

中西さんの教えていただいたように

F_日報情報のレコードソースを

SELECT * FROM T_Work ORDER BY 部署ID,社員ID

に変えてみたのですが、特に変化はなく、

F_社員で最後に登録した社員名は、やはり最後に

表示されてしまいます。
・ツリー全体表示

【7557】Re:テキストボックスへの表示
回答  中西 健  - 06/3/19(日) 16:23 -

引用なし
パスワード
    F_日報情報の次のレコードを押したときの表示順ということであれば、
 F_日報情報のレコードソースがT_Workとなっているともいますがこれを

SELECT * FROM T_Work ORDER BY 部署ID,社員ID

 とすればよいと思います。
・ツリー全体表示

【7556】Re:オプションボタンを選択状態にしたい
お礼  青首  - 06/3/18(土) 22:16 -

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


いまなかなかいい感じに進んではいるのですが、またすぐ躓くと思うので
その際はよろしくお願いいたします。
・ツリー全体表示

【7555】テキストボックスへの表示
質問  青首  - 06/3/18(土) 22:13 -

引用なし
パスワード
   現在の状況

テーブル:部署名
  フィールド名 データ型
   部署ID   オートナンバー型
   部署名   テキスト型

テーブル:T_社員
  
  フィールド名 データ型
   社員ID   オートナンバー型
   社員名   テキスト型
   部署ID   数値型

テーブル:T_日報情報

  フィールド名 データ型
  日報ID    オートナンバー型
  社員ID    数値型
  部署ID    数値型
  日付     日付/時刻型
  業務内容   テキスト型
  残業時間   数値型

ワークテーブル:T_Work

  フィールド名 データ型
  社員ID    数値型   (主キー)
  部署ID    数値型
  日付     日付/時刻型
  業務内容   テキスト型
  残業時間   数値型

T_Workをもとに「F_日報情報」フォーム(単票)が作られています。

テキストボックス:社員名
 コントロールソース:=DLookUp("社員名","T_社員","社員ID=" & [社員ID])
テキストボックス:部署名
 コントロールソース:==DLookUp("[部署名]","T_部署","部署ID=" & [部署ID])


このフォームの「読み込み時」「読み込み解除時」に
T_Work のデータを出し入れする様な処理をしてあります。

F_日報情報を開くとT_社員の一番初めに登録された社員名が
表示されます。
その社員の日報を入力してコマンドボタン[次のレコードへ]を
クリックすると、T_社員の2番目に登録された社員名が表示されます。
こんな感じで一人一人社員の画面を表示させて入力していきます。

ここからが質問なのですが、
T_社員をもとにしてフォーム:F_社員(単票テーブル)を作成して、新しく入社した人の名前と部署名を登録していっているのですが、当たり前なのですが新規に入力した方は、F_日報情報でも一番最後に表示されます。


たとえば、

T_部署が
  部署ID   部署名
   1    チューリップ
   2    バラ
   3    菊

となっていると、現在はF_日報情報に部署名:チューリップ→バラ→菊というように各社員が表示されていますが、新規に登録した社員がチューリップに所属していると、この社員だけ同じ部署のメンバーから離れて表示されてしまいます。

できれば部署ごとに順々にF_日報情報に表示させていきたいと思っています。


F_社員
  -------------------
  | 社員名     |
  -------------------

  ------------------- 
  | 部署名    ▽| 
  -------------------

 コンボボックス:部署名
  値集合ソース:SELECT T_部署.部署ID, T_部署.部署名 _
  FROM T_部署 ORDER BY T_部署.部署ID;

説明が下手でわかりづらいかもしれませんが、よろしくお願いいたします。
・ツリー全体表示

【7554】Re:別のフォームから違うフォームを開く?
質問  ケン  - 06/3/18(土) 9:35 -

引用なし
パスワード
   ▼Gin_II さん:

返信ありがとうございます。

教えていただいたとおりにコードを書いてみたのですが、

実行時エラー:2465

指定した式で参照されている"|"フィールドは見つかりません。


と出てきてしまいます。

追記

 T_発注履歴のフィールド[発注コード]はオートナンバー型になっております。
・ツリー全体表示

【7553】Re:Access97からAccess2000への移行
発言  小僧  - 06/3/17(金) 15:57 -

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

> 現在、Windows95、Access97で稼動しているフォームを
> Windows Xp、Access2000の環境で稼動させようとしています。

こざるさんと環境は違うのですが、
当方、Win2000、Ac97 環境で作成した MDB を WinXP、Ac2002で運用しておりますが
comdlg32.dll に関する箇所では特に変更は行わなかったですね。


Ac97 から Ac2000 に変更する際に良くあるのが参照設定の問題です。
参照設定で参照不可になっているものがないかチェックされてみて下さい。

また、DAO、ADO に関して発生するエラーも多々あります。

「Ac97 では DAO」「Ac2000、Ac2002 ではADO」 が標準となりますので

[#6929]Re:DAOがエラーになる

のような変更が必要になる場合も出てきます。

関係ない話でしたらすみません。
・ツリー全体表示

【7552】Re:サブフォームの行
質問  tttn  - 06/3/17(金) 15:52 -

引用なし
パスワード
   ▼Gin_II さん:

>サブフォームのフォームフッターなりに、テキストボックスを作成して、
>コントロールソースプロパティに
>=Sum([数量])
>のようにしてください。

同じサブフォーム内にあるテキストボックスですと出来ましたが、テキストボックスはメインフォームにある場合はどのように設定しますか?

ちなみに、サブフォームはメインフォームにリンクしています。
・ツリー全体表示

【7551】Access97からAccess2000への移行
質問  こざる  - 06/3/17(金) 13:30 -

引用なし
パスワード
   いつもお世話になっております。

現在、Windows95、Access97で稼動しているフォームをWindows Xp、Access20
00の環境で稼動させようとしています。

「データベースの変換」で変換はしているのですが、以前は使用可能だったコ
モンダイアログボックスが使用できず困っています。
コモンダイアログボックス表示にcomdlg32.dllを使用しています。
97と2000で何か変更しなければならないことがあるのでしょうか?
ご存知の方いらっしゃったら教えてください。 

Access変換レポートツールでチェックしたところ、手動で変更しなければなら
ない点は該当なしでした。
・ツリー全体表示

【7550】Re:サブフォームの行
回答  Gin_II  - 06/3/17(金) 11:45 -

引用なし
パスワード
   > サブフォームに入力するだけで勝手にテーブルに登録してしまいます。
> 登録ボタンを押してから初めてサブフォームにある行分をテーブルに
> 登録するようにしたいですが・・・。

うん?

> DAOで接続してテーブルにデータ登録しますが、サブフォームに入力した
> 複数行を一行ずつINSERTしたいです。

この質問文から、本登録用のテーブルと、仮登録用のテーブル(ワークテーブル)を
利用していると思ったんですが、違うのでしょうか??

もともと、連結フォームであれば、データを入力したら1レコードずつ登録
されます。
非連結のフォームであれば、複数レコード分の入力はできません。
#コントロールを必要な数、配置するとかであれば別でしょうけど。


> それからサブフォームの数量というフィルドがあって全行の数量合計を
> 出したいですがどうすれば良いでしょうか?

サブフォームのフォームフッターなりに、テキストボックスを作成して、
コントロールソースプロパティに
=Sum([数量])
のようにしてください。
・ツリー全体表示

【7549】Re:サブフォームの行
質問  tttn  - 06/3/17(金) 10:34 -

引用なし
パスワード
   ▼Gin_II さん:
>リンクテーブルにしているのなら、同じだと思います。
>追加クエリをクエリのデザインビューで作成して、実行できませんか?

ありがとうございます。
サブフォームに入力するだけで勝手にテーブルに登録してしまいます。登録ボタンを押してから初めてサブフォームにある行分をテーブルにと登録するようにしたいですが・・・。

それからサブフォームの数量というフィルドがあって全行の数量合計を出したいですがどうすれば良いでしょうか?

よろしくお願いいます。
・ツリー全体表示

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