Access VBA質問箱 IV

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

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


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

【5194】Re:テーブルの差分計算
回答  小僧  - 05/6/1(水) 14:02 -

引用なし
パスワード
   ▼初心者です さん:
こんにちは。

ACCESSの機能にある「不一致クエリウィザード」を使うと
お望みの結果が返せるを思われます。
・ツリー全体表示

【5193】Re:フォーム作成
回答  小僧  - 05/6/1(水) 13:54 -

引用なし
パスワード
   ▼バリュー さん:
>>「フッター」に配置した「発生場所」「是正先」「不具合」の各コンボボックスは
>
>とありました「フッター」はフォームヘッダーのことになりますよね??

ごめんなさい。フォームヘッダーです…。
・ツリー全体表示

【5192】Re:フォーム作成
質問  バリュー  - 05/6/1(水) 13:45 -

引用なし
パスワード
   ▼小僧 さん:
返信誠にありがとうございます。


すみません、確認したいのですが、、

>フォームヘッダーに
>  開始日ボックス:(テキストボックス)
>  終了日ボックス:(テキストボックス)
>  検索実行ボタン:(コマンドボタン)
>  発生場所コンボ:(コンボボックス)
>  是正先コンボ :(コンボボックス)
>  不具合コンボ :(コンボボックス)
>を配置するとして

とおっしゃられていたので、

>「フッター」に配置した「発生場所」「是正先」「不具合」の各コンボボックスは

とありました「フッター」はフォームヘッダーのことになりますよね??
・ツリー全体表示

【5191】テーブルの差分計算
質問  初心者です  - 05/6/1(水) 13:44 -

引用なし
パスワード
   お世話になります。
よろしくお願いします。
例えばテーブルA(受注実績)、B(コード管理マスタ)があります。
※AはBの一部分です。

テーブルA
部品コード  部品名   受注担当者

テーブルB
部品コード  部品名

問題:マスタテーブルBにあって、テーブルBにまだ使っていない部品コードを
   求めたいです。
よろしくお願いします。
・ツリー全体表示

【5190】Re:フォーム作成
回答  小僧  - 05/6/1(水) 13:07 -

引用なし
パスワード
   ▼バリュー さん:
こんにちは。

「フッター」に配置した「発生場所」「是正先」「不具合」の各コンボボックスは
検索用に使用するので、非連結(コントロールソースを空)にして下さい。

「詳細」にテーブルと連結されたテキストボックスを配置してみて下さい。
・ツリー全体表示

【5189】Re:フォーム作成
質問  バリュー  - 05/6/1(水) 11:58 -

引用なし
パスワード
   ▼小僧 さん:
度々すみません。
返信誠にありがとうございます。


>>>Private Sub 検索実行ボタン_Click()
>という事で、検索実行ボタン(コマンドボタン)を
>クリックする事から始まるコードですので、
>検索実行ボタンの「クリック時」からのコードビルダーに
>記入をお願いします。

教えて頂いた上記の場所に、
早速下記のようにコードを投入してみました。

Private Sub 検索実行ボタン_Click()
'発行日が空だった場合は実行させません
  If IsNull(Me.発行日) Then
    MsgBox "発行日を入れて下さい"
    Exit Sub
  End If

'発行日が日付型でなかった場合は実行させません
  If Not IsDate(Me.発行日) Then
    MsgBox "発行日を正しく入力して下さい"
    Exit Sub
  End If

'発生場所・是正先・不具合のコンボボックスを空にします
  Me.発生場所.Value = ""
  Me.是正先.Value = ""
  Me.不具合内容.Value = ""

'発生場所コンボの値集合ソースを設定します
  Me.発生場所.RowSource = _
    "SELECT 発生場所 FROM ta対策書マスタークレーム " _
   & "WHERE 発行日 Between #"

End Sub

実行させようとしたところ、
エラーメッセージがでました。

「実行時エラー'3315'
フィールド'ta対策書マスタークレーム.発生場所'には、
長さ0の文字列を格納できません」
とありました。

何がよろしくなかったでしょうか?
・ツリー全体表示

【5188】Re:フォーム作成
回答  小僧  - 05/6/1(水) 11:09 -

引用なし
パスワード
   ▼バリュー さん:
こんにちは。

ごめんなさい。詳しく書いておりませんでしたね。

>>Private Sub 検索実行ボタン_Click()

という事で、検索実行ボタン(コマンドボタン)を
クリックする事から始まるコードですので、

検索実行ボタンの「クリック時」からのコードビルダーに
記入をお願いします。
・ツリー全体表示

【5187】Re:フォーム作成
質問  バリュー  - 05/6/1(水) 11:02 -

引用なし
パスワード
   ▼小僧 さん:
こんにちは。
返信誠にありがとうございます。


>とりあえずここまでを。
>発生場所コンボを選択すると、日付で絞られた値しか出てこなかったら成功です。
>上のコードは発生場所コンボの値集合ソースしか設定していませんが、
>同じように是正先コンボ、不具合コンボにも同じように設定してみてください。

すみません、お伺いなのですが、
こちらのコードを入力する画面は、
「コンボボックス:発生場所」の「プロパティ」の
「値集合ソース」の「クエリビルダ」の「SQLステートメント」でしょうか?
・ツリー全体表示

【5186】Re:年齢を21→20代と表示するクエリ関数は?
お礼  サチチ  - 05/6/1(水) 10:27 -

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

おはようございます。
ありがとございます!!出来ました!!
小僧さんに、毎回毎回教わり、出来が悪く、ご迷惑を
かけていたので、この様に、ストレートで出来ると
嬉しいです。

このデータベースをまだまだかかりそうですので、今後もお願いします!!
・ツリー全体表示

【5185】Re:年齢を21→20代と表示するクエリ関数は?
回答  小僧  - 05/6/1(水) 10:12 -

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

年齢が数値だったら…

[年齢]\10 & "0代"

ご提示の様にxx歳というテキスト型だった場合は

全体の長さを求めて
左から [全体の長さ] - 1 を切り取って数字に変換

という動作が必要(幼児・高齢者の方の対応)になると思います。
・ツリー全体表示

【5184】Re:フォーム作成
回答  小僧  - 05/6/1(水) 10:04 -

引用なし
パスワード
   ▼バリュー さん:
おはようございます。
いよいよ型が決まってきましたね。

フォーム(元テーブル名:テーブルA)上には

フォームヘッダーに
  開始日ボックス:(テキストボックス)
  終了日ボックス:(テキストボックス)
  検索実行ボタン:(コマンドボタン)
  発生場所コンボ:(コンボボックス)
  是正先コンボ :(コンボボックス)
  不具合コンボ :(コンボボックス)

を配置するとして

Private Sub 検索実行ボタン_Click()
'開始日と終了日が空だった場合は実行させません
  If IsNull(Me.開始日ボックス) Or IsNull(Me.終了日ボックス) Then
    MsgBox "開始日と終了日を入れて下さい"
    Exit Sub
  End If

'開始日と終了日が日付型でなかった場合は実行させません
  If Not IsDate(Me.開始日ボックス) Or Not IsDate(Me.終了日ボックス) Then
    MsgBox "開始日と終了日を正しく入力して下さい"
    Exit Sub
  End If

'発生場所・是正先・不具合のコンボボックスを空にします
  Me.発生場所コンボ.Value = ""
  Me.是正先コンボ.Value = ""
  Me.不具合コンボ.Value = ""

'日付でフィルタを掛けます
  Me.Filter = _
    "[発行日] Between #" & Me.開始日ボックス.Value & "# AND #" _
               & Me.終了日ボックス.Value & "#"
  Me.FilterOn = True
  
'発生場所コンボの値集合ソースを設定します
  Me.発生場所コンボ.RowSource = _
    "SELECT 発生場所 FROM テーブルA " _
   & "WHERE 発行日 Between #" & Me.開始日ボックス.Value & "# AND #" _
                 & Me.終了日ボックス.Value & "#"

End Sub

とりあえずここまでを。
発生場所コンボを選択すると、日付で絞られた値しか出てこなかったら成功です。

開始日ボックス、終了日ボックスはテキストボックスを使用しているため、
入力者の判断(05/01/01、05.01.01、H17.1.1など…)が働いてしますため
一工夫が必要です。過去ログやWebでお調べになってそれでも解らなければ
新しいスレッドを立てて質問してみてください。

上のコードは発生場所コンボの値集合ソースしか設定していませんが、
同じように是正先コンボ、不具合コンボにも同じように設定してみてください。

後は発生場所、是正先、不具合の各コンボボックスの更新後処理に
フィルタを掛けるコードを設定していけば良いかと思われます。

解らないところがありましたらできる限り回答致しますので
「できるところまで」自力でがんばってみてください!
・ツリー全体表示

【5183】年齢を21→20代と表示するクエリ関数は?
質問  サチチ  - 05/6/1(水) 9:48 -

引用なし
パスワード
   テーブルに、氏名・年齢・・・とあります。
その年齢をコンボで作っているのですが、
29歳・31歳・44歳などを
29歳→20代
31歳→30代
41歳→40代 と表示させ、クロス集計をしたいのです。
どの様な、クエリの関数をつかえばいいのか、教えて下さい。
よろしくお願いします。
・ツリー全体表示

【5182】Re:フォーム作成
質問  バリュー  - 05/5/31(火) 17:46 -

引用なし
パスワード
   ▼小僧 さん:
度々すみません。
返信誠にありがとうございます。


上司に報告したところ、指示がありました。

> 1) 日付で抽出されたデータが多い(100件とか)あると、
>   コンボボックスから探す事自体が大変になる。

100件ないそうです。

> 2) 不具合内容に入る値が長い(○○○○○○が△△△△△△△△△△△△△のためとか)
>   とコンボボックスの幅が大変になる。

長かったら、最初の文字だけ少し表示させられればよいとの事でした。

> 3) 必ず最終的に1レコードに絞れるのか。

1レコードに絞りこまれなくても、
入力する際に対象となるレコードが何件か絞りこまれればよいとのことでした。

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

【5181】Re:フォーム作成
回答  小僧  - 05/5/31(火) 17:01 -

引用なし
パスワード
   ▼バリュー さん:
こんにちは。
今度は内容が具体的なのでとてもイメージしやすいです。

>そこから「発生場所」「是正先」「不具合内容」で再検索して、
>最終的に「発行No.」を導き出したいです。

先ほどご提示された内容ですと、ここでコンボボックスを使って絞り込みたい
という事ですよね?

その際にいくつかの懸念があるのですが、

 1) 日付で抽出されたデータが多い(100件とか)あると、
   コンボボックスから探す事自体が大変になる。

 2) 不具合内容に入る値が長い(○○○○○○が△△△△△△△△△△△△△のためとか)
   とコンボボックスの幅が大変になる。

 3) 必ず最終的に1レコードに絞れるのか。

色々な解決方法があると思われますが、例えば…

不具合内容を一言であらわす「件名」というフィールドを設けて
「日付」で検索 → 「件名」で選択 → 該当レコードを表示

とかはいかがでしょう?
・ツリー全体表示

【5180】Re:テーブル作成クエリで作った新しい列に...
お礼  にしもり  - 05/5/31(火) 16:26 -

引用なし
パスワード
   ▼かろちん さん:
4ヶ月かかりましたが、なんとか自力でやりました。
まずデータ定義クエリをつくりました。内容はこうです。
alter table クエリー08 add column 式1 string;
これを実行したあと、更新クエリで式1を「1月」で更新することで解決しました。
アドバイスありがとうございました。
・ツリー全体表示

【5179】Re:フォーム作成
質問  バリュー  - 05/5/31(火) 16:14 -

引用なし
パスワード
   ▼小僧 さん:
度々すみません。
返信誠にありがとうございます。

項目名は5つです。
「発行No.」「発行日」「発生場所」「是正先」「不具合内容」
全て入力画面上の項目です。

この項目が格納されているテーブルの主キーは「発行No.」です。

上記項目のうち、入力する時にコンボボックスになっている項目が2つあります。
「発生場所」・・・他テーブルから選択するようにしました。
「是正先」・・・入力画面上で値を設定しました。

検索に使いたい項目は「発行日」です。

「発行日」検索で抽出したレコードを同じ入力画面に表示します。

そこから「発生場所」「是正先」「不具合内容」で再検索して、
最終的に「発行No.」を導き出したいです。

そうして導き出したレコードに修正を加えられたら、、
それが上司からの依頼です。
・ツリー全体表示

【5178】Re:フォーム作成
発言  小僧  - 05/5/31(火) 15:20 -

引用なし
パスワード
   ▼バリュー さん:
こんにちは。

>自分のフォームがこちらに載って、
>その後悪意のある方から何かされやしないか??
>といった漠然とした不安があった事も否めません。

先日自分が提示させていただいた例(千葉ロッテ)の様に、
適当な例をあげるのが良いのではないかとおもいます。

今回ですと、まず何かしらの日付が必要。

フィールド「仕入日」とか…。

あとは
フィールド品名:「りんご」「みかん」「トマト」
     種類:「果物」「野菜」

とかにすれば特に情報の漏洩も心配なさる事はないと思われます。

その上で「果物で抽出した上でどうたら」とか「りんごの単価を変えたい」とか
あると、回答がしやすいと思われます。
・ツリー全体表示

【5177】Re:エラー番号
発言  twining  - 05/5/31(火) 15:14 -

引用なし
パスワード
   まんまだと思います。

On Error GoTo ラベル
処理1
DBEngine.Workspaces(0).BeginTrans
処理2
DBEngine.Workspaces(0).CommitTrans
処理3
ラベル:
DBEngine.Workspaces(0).Rollback
処理4

トランザクション処理を開始する前(処理1)でエラーが出て
Rollbackしようとしている
又は、
RollbackかCommitされた後(処理3か処理4)でエラーが出て
Rollbackしようとしている
のではないでしょうか・・・
・ツリー全体表示

【5176】Re:フォーム作成
発言  バリュー  - 05/5/31(火) 14:58 -

引用なし
パスワード
   ▼小僧 さん:
返信誠にありがとうございます。


>バリューさんと同じように悩んでいる方がいらっしゃった時、
>ここから先をメールで展開してしまうと見失ってしまう事になってしまいます。

そうですね。
メールの怖さを感じます。


>掲示板に移すのは手間が掛かりますが、当方とバリューさん以外の方にも
>見えるようにしていきたいと思うのですがいかがでしょうか?

作業が先に進めばそれで構わないです。

ただ、先ほど申し上げた操作で自分のフォームがこちらに載らないので、
どうしたらよいものか困った時にひらめいたメール案でした。

それから、
こんな事を申し上げたら良くないのでしょうが、
自分のフォームがこちらに載って、
その後悪意のある方から何かされやしないか??
といった漠然とした不安があった事も否めません。

セキュリティ関係の知識が曖昧な自分の責任なのですが。。

けれども、小僧さんパート2とかパート3とか、
そういった方々がいてくだされば、
自分も心強く感じます。

すみません、失礼を承知の上で申し上げました。。
・ツリー全体表示

【5175】Re:フォーム作成
発言  小僧  - 05/5/31(火) 14:24 -

引用なし
パスワード
   ▼バリュー さん:
こんにちは。

バリューさんと同じように悩んでいる方がいらっしゃった時、
ここから先をメールで展開してしまうと見失ってしまう事になってしまいます。

また当方が間違いを犯してしまった時や知識不足のため回答がつけられない時も
進まなくなってしまいます…。

掲示板に移すのは手間が掛かりますが、当方とバリューさん以外の方にも
見えるようにしていきたいと思うのですがいかがでしょうか?
・ツリー全体表示

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