Access VBA質問箱 IV

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

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


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

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

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


>>抽出したレコードの中の一項目をコンボボックスにして、
>>コンボボックス内のいくつかの項目ごとの値を表示させて選択、入力後、
>>そのレコード内の他の項目を修正する。
>この部分がいまいち理解できません。
>テーブルのフィールド構成やそこに入るデータなどを(仮の例をあげて頂いても構いません)
>具体的にして頂いた上で流れを説明して頂けるとと回答しやすくなると思われます。

自分が現在作成中のフォームを
「Print Screen」ボタンを使って
こちらに載せようとしたところ、
できませんでした。。涙

自分の知識不足のせいだと思います。。

けれども、このままあきらめたくないです。。
こちらの「投稿」メールの下に、
「□レスがあったらメールが欲しい(要メールアドレス)」とありますが、
メールだったら小僧さん宛までお送りする事ができるのでは?
と思ったのですが、
やはりご迷惑でしょうか。。
・ツリー全体表示

【5173】Re:都道府県のチェック
発言  たん  - 05/5/31(火) 13:48 -

引用なし
パスワード
   横から失礼。

余所でアップされている方と質問が同一なのですが、
そちらで解決したのであれば、そのむねをせめて
連絡しましょうよ。
・ツリー全体表示

【5172】Re:都道府県のチェック
回答  小僧  - 05/5/31(火) 13:41 -

引用なし
パスワード
   ▼せいや さん:
こんにちは。

>    If x = "都" Or "道" Or "府" Or "県" Then
→    If x = "都" Or x = "道" Or x = "府" Or x = "県" Then

>こんな感じで作ってみたのですが「型が一致しません」などのエラーが出てしまいます。

これで上記のエラーは回避できます!
が…。

現座のコードですと、「Me!住所1」が「東京都港区六本木」だとすると

>>i   x
>>1  東
>>2  東京
>>3  東京都
>>4  東京都港

となってしまいます。

Mid関数 か、Left関数 + InStr関数の組み合わせが良いと思われます!
が…。

>>>京都市左京区...
>>>水海道市...
>>>府中市...
>>>山県市...

などは左4文字の中に「都」「道」「府」「県」が出てきてしまいますよ…。
・ツリー全体表示

【5171】エラー番号
質問  ひろのしま E-MAIL  - 05/5/31(火) 13:38 -

引用なし
パスワード
   実行時エラー'3034' コミットまたはロールバックを実行するには、BeginTrans メソッドを使用してください。
というエラーメッセージが出る場合の具体例をあげられますでしょうか?
別の場所にいるお客様のAcessが起こしたエラー
からの電話なのですが、自分のAccessの方では起きません。で、お客様の方も
原因が分からないそうです。
どうかよきアドバイスをお願いします。
・ツリー全体表示

【5170】Re:フォーム作成
発言  小僧  - 05/5/31(火) 13:10 -

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

>期間(例えば、2005/04/01〜2005/05/31)を入力して、
>その期間内の該当するレコードを
>抽出(おそらく複数件抽出されると思われます)後、

ここまでは理解できたのですが、

>抽出したレコードの中の一項目をコンボボックスにして、
>コンボボックス内のいくつかの項目ごとの値を表示させて選択、入力後、
>そのレコード内の他の項目を修正する。

この部分がいまいち理解できません。

テーブルのフィールド構成やそこに入るデータなどを(仮の例をあげて頂いても構いません)
具体的にして頂いた上で流れを説明して頂けるとと回答しやすくなると思われます。
・ツリー全体表示

【5169】都道府県のチェック
質問  せいや  - 05/5/31(火) 12:14 -

引用なし
パスワード
   WindowsXP Pro
Access2003の環境です。

テキストボックスに住所を入力する欄を作って入力していますが
どうしても都道府県から”愛知県名古屋市…"のように入力したいと思います。

そこでiを住所ボックスのテキスト長までforでループさせて
都道府県のどれかの文字に該当したらエラーを表示するようにしてみました

作成した文は以下のとおりです。

Dim x As String
  Dim i As Integer
  
  For i = 1 To 4
    x = Left(Me!住所1, i)
    If x = "都" Or "道" Or "府" Or "県" Then
      Exit For
    Else
    End If
  Next
  MsgBox "住所は必ず都道府県から入力してください"

こんな感じで作ってみたのですが「型が一致しません」などのエラーが出てしまいます。
どのように修正しなければいけないのか教えていただければと思います。
・ツリー全体表示

【5168】Re:フォーム作成
質問  バリュー  - 05/5/31(火) 11:09 -

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


>>確認なのですが、
>>「それ以外のテキストボックス」とは
>>「テキストボックスのプロパティのコントロールソース名」
>>という意味でよかったですよね?
>説明不足で申し訳ないです。上記の意味で大丈夫です。

ありがとうございます。
拙い質問の為に気を煩わせてしまい申し訳ないです。。


>>現在は3件、レコードがDBに格納されている状況なのですが、
>>もう何件かレコード入力した方がよいでしょうか?
>3件でも問題ありません。
>フォームの下の方にあるレコードセレクタに
>「レコード |< <   1  >  >|  >* / 3」
>みたいな感じになってれば大丈夫です。

ありがとうございます。
安心しました。


>他に思い当たるものとして…
>>修正しました。
>>コンボ名を「対策所ID」にしました。
>コンボボックス名を変更した事により、更新後処理のコードが変わるはずなので
>もう一度コンボボックスの更新後処理のビルダの中身をチェックしてみてください。

Private Sub 対策所ID_AfterUpdate()
  Me.Filter = "対策書ID = " & Me.対策所ID
  Me.FilterOn = True
End Sub

上記に修正し、できました!
ご指摘の通り、「書」を「所」に修正しRERUNしたところ上手くいきました。


ところで、すみません。
もう少し欲張って質問してもよいですか?

期間(例えば、2005/04/01〜2005/05/31)を入力して、
その期間内の該当するレコードを
抽出(おそらく複数件抽出されると思われます)後、
抽出したレコードの中の一項目をコンボボックスにして、
コンボボックス内のいくつかの項目ごとの値を表示させて選択、入力後、
そのレコード内の他の項目を修正する。
という動きを一画面でさせたい場合、
どうしたらよいでしょうか?
・ツリー全体表示

【5167】Re:フィルタープロパティーでの抽出(複数...
発言  たん  - 05/5/31(火) 10:54 -

引用なし
パスワード
   横から失礼。

ヘルプで「クォーテーション」で検索して、
クォーテーションの使い方をきちんと確認
しましょう。

# 読みにくいけど、ヘルプ読みましょう。
# 必要な情報はきちんとそろっているのです。
・ツリー全体表示

【5166】Re:フィルタープロパティーでの抽出(複数...
お礼  しん  - 05/5/30(月) 21:30 -

引用なし
パスワード
   ▼小僧 さま
丁寧な解説ありがとうございました。
順をおって説明いただくと良く分かりました。
これで今後間違いの数が減ってくれればと思います。
ありがとうございました。
・ツリー全体表示

【5165】accessではないのですが教えてくだ...
質問  nemotake  - 05/5/30(月) 17:23 -

引用なし
パスワード
   フォルダーにパスワードを使用することができるのでしょうか?
ソフトでもかまいません。
よろしくお願いします。
・ツリー全体表示

【5164】Re:フォーム作成
回答  小僧  - 05/5/30(月) 17:16 -

引用なし
パスワード
   ▼バリュー さん:
>確認なのですが、
>「それ以外のテキストボックス」とは
>「テキストボックスのプロパティのコントロールソース名」
>という意味でよかったですよね?

説明不足で申し訳ないです。上記の意味で大丈夫です。

>現在は3件、レコードがDBに格納されている状況なのですが、
>もう何件かレコード入力した方がよいでしょうか?

3件でも問題ありません。
フォームの下の方にあるレコードセレクタに

「レコード |< <   1  >  >|  >* / 3」

みたいな感じになってれば大丈夫です。

他に思い当たるものとして…

>修正しました。
>コンボ名を「対策所ID」にしました。

コンボボックス名を変更した事により、更新後処理のコードが変わるはずなので
もう一度コンボボックスの更新後処理のビルダの中身をチェックしてみてください。
・ツリー全体表示

【5163】Re:フォーム作成
質問  バリュー  - 05/5/30(月) 16:41 -

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

>>コンボボックスの値を選択、入力後、
>>詳細にレコード一件の中身全てが表示されることを考えていました。
>検索を掛けるコンボボックスのコントロールソース ⇒ 空白
>それ以外のテキストボックス  ⇒  フィールド名
>でどうでしょうか?

やってみたのですが、変わりませんでした。。泣

確認なのですが、
「それ以外のテキストボックス」とは
「テキストボックスのプロパティのコントロールソース名」
という意味でよかったですよね?

現在は3件、レコードがDBに格納されている状況なのですが、
もう何件かレコード入力した方がよいでしょうか?
・ツリー全体表示

【5162】Re:フォーム作成
回答  小僧  - 05/5/30(月) 16:15 -

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

>コンボボックスの値を選択、入力後、
>詳細にレコード一件の中身全てが表示されることを考えていました。

検索を掛けるコンボボックスのコントロールソース ⇒ 空白
それ以外のテキストボックス  ⇒  フィールド名

でどうでしょうか?

>そもそもクエリーとは何なのでしょう??
>イメージとして、
>テンポラリファイルみたいなものだと考えてもよいものでしょうか??

テーブルを様々な形に加工(2つ以上のテーブルを合わせたり、
必要なフィールドのみを表示させたり)したオブジェクトです。
クエリのデータを変更すると、元テーブルの値も変更されます。

今回の場合も、「対策書ID = xx」 というものだけ抜き出したクエリを作成し、
それを元にしたフォーム作成という方法もあります。

>>使用例に「Northwind.mdb」が出てくると逃げ出したくなります…。
>
>なぜですか??
>「Northwind.mdb」って何ですか??

ヘルプで実際に出てきた時に「あぁ。この事を言ってたんだ」と思い出して下さい(笑)
・ツリー全体表示

【5161】Re:フォーム作成
質問  バリュー  - 05/5/30(月) 15:34 -

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

>>2件目以降の該当の項目値をコンボボックスで選択しようとすると、
>>「このコントロールはオートナンバー型の’対策書ID’フィールドに連結しているため、編集できません」
>>というメッセージが画面一番下に出て、選択できません。
>コンボボックスのコントロールソースを空白にしてみて下さい。
>ここがテーブルと連結されていると上記のエラーが発生すると思われます。

できました!
ありがとうございます!!

けれども、フォーム上で自分が動かせたい動きをしなかったので、
ごめんなさい、もう少し欲張ってお伺いしてもよいですか?

フォーム上で自分が動かせたかった動きとは、
「対策書ID」をコンボボックスで選択後、
その値が入っていたレコード一件の中身全てがフォーム上に表示される。
というものでした。

以下同じような説明になってしまいますが、、
フォームヘッダーに「対策書ID」のコンボボックスを作成して、
([#5119]の
>(フォームヘッダに配置するとそれらしくなります。)
というご意見を参考にさせて頂きました。)
コンボボックスの値を選択、入力後、
詳細にレコード一件の中身全てが表示されることを考えていました。

上記のような動きは、
やはりクエリーを使わないといけませんか?
(クエリーを使わないと動かす事は無理なんじゃないか?
と上司からの意見があったのですが、、)
そもそもクエリーとは何なのでしょう??
イメージとして、
テンポラリファイルみたいなものだと考えてもよいものでしょうか??


>VBAのコードが表示されている状態で、
>調べたい用語をマウスでドラッグ ⇒ F1キー
>でヘルプが表示されますが…

わかりました。
機会が来た時早速やってみます。
ちなみに、
自分はこれまでメニューバーのヘルプをクリックしてやっていました。。


>使用例に「Northwind.mdb」が出てくると逃げ出したくなります…。

なぜですか??
「Northwind.mdb」って何ですか??


>「ヘルプを見たけれど、記載されているxxxの部分が解らない」のような質問でも
>自分を含め回答者がつくと思われますので、めげずに頑張りましょう!

ありがとうございます。
すごく助かります!
・ツリー全体表示

【5160】Re:フォーム作成
回答  小僧  - 05/5/30(月) 14:32 -

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

>2件目以降の該当の項目値をコンボボックスで選択しようとすると、
>「このコントロールはオートナンバー型の’対策書ID’フィールドに連結しているため、編集できません」
>というメッセージが画面一番下に出て、選択できません。

コンボボックスのコントロールソースを空白にしてみて下さい。
ここがテーブルと連結されていると上記のエラーが発生すると思われます。

>>ひたすらHELPを参考にしてコードを作成してきました。
>なので、今度HELPを使う事があったらその点でもお伺いしてしまうかもしれません。。

VBAのコードが表示されている状態で、
調べたい用語をマウスでドラッグ ⇒ F1キー
でヘルプが表示されますが…

ACCESSのヘルプ、VBのヘルプ、DAOやADOのヘルプなど様々なものがありますが、
ヘルプを解読するためのガイドが欲しくなるような物もあります(笑)
使用例に「Northwind.mdb」が出てくると逃げ出したくなります…。

「ヘルプを見たけれど、記載されているxxxの部分が解らない」のような質問でも
自分を含め回答者がつくと思われますので、めげずに頑張りましょう!
・ツリー全体表示

【5159】Re:フォームの抽出条件から複数TBLを内部...
お礼  orange  - 05/5/30(月) 13:58 -

引用なし
パスワード
   ありがとうございました。
ほんとですね。いらないカンマが原因でした。

初歩的なミスでお手数おかけしました。すみません。

もっとちゃんとチェックしてから投稿するよう気を付けますので、
見捨てないでくださいね。(おねがいします。)

本当にいつもありがとうございます。
・ツリー全体表示

【5158】Re:フォーム作成
質問  バリュー  - 05/5/30(月) 13:51 -

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

>該当フォームのどこかに(レコードソースあたりが怪しいでしょうか…)
>変更前のテーブル名が残ってしまってないかを確認してみて下さい。

早速確認してみました。
コンボボックス:対策所IDの中の「値集合ソース」の欄のテーブル名が
修正前のものでした。。
なので、テーブル名を修正後、フォームビューを見てみました。

「#Name?」はとれました!!
が。。
2件目以降の該当の項目値をコンボボックスで選択しようとすると、
「このコントロールはオートナンバー型の’対策書ID’フィールドに連結しているため、編集できません」
というメッセージが画面一番下に出て、選択できません。
画面一番下という位置は、通常は「フォームビュー」と出ている欄です。

度々すみません。
どう対処したらよいでしょうか?


>ひたすらHELPを参考にしてコードを作成してきました。
>最近はWebが発達していますので解らない事はWebで調べて解決しています。
>その際に訪れたニキータさんのサイト
>http://www.mahoutsukaino.com/
>はDB設計の概念から教えて下さっていて解りやすかったです。
>WebにAccessやVBAのテクニックが溢れるほど紹介されているので、
>インターネットができる環境であれば参考書は必要ないかな?と思ってしまいます。
>ここの「VBA質問箱」でも過去ログを題材に学習していくとかなりの知識がつきますよ。

ありがとうございます。
一人でできるはずない。。とかなり落ち込んでいたので、
ご意見すごく励みになります。

依頼されて開発し始めたとき、
自分はHELPさえまともに使えない状況でした。。
なので、今度HELPを使う事があったらその点でもお伺いしてしまうかもしれません。。
ほんと情けなくてごめんなさい。。
・ツリー全体表示

【5157】Re:フォーム作成
回答  小僧  - 05/5/30(月) 12:01 -

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

>フォームビュー上の該当のコンボボックスに、
>「#Name?」というものが表示され、
>コンボボックスから選択後、入力、という動作ができません。
>どうしたらよいでしょうか?

直接の原因になっているかどうか解りませんが、
可能性の1つとして…。

[#5139]

で回答をした際に

>後からテーブルの変更を行うと、それに伴うVBAのコードや
>フォームにも大きな影響を与えてしまいます。

と書きましたが、

>早速修正しました。
>aと対の間のスペースを削除して、()をとったテーブル名にしました。

とした事により、フォームやコードに書いてあったテーブル名は
全て変更しなければならない事になります。

該当フォームのどこかに(レコードソースあたりが怪しいでしょうか…)
変更前のテーブル名が残ってしまってないかを確認してみて下さい。

>VBA独自の記述を調べる辞書のような参考書で、
>初心者が使うのに良いものをご存知ですか?

当方はExcelVBA ⇒ AccessVBAと覚えてきたのですが、
その際に参考書は1冊も買っていません…。
ひたすらHELPを参考にしてコードを作成してきました。
最近はWebが発達していますので解らない事はWebで調べて解決しています。
その際に訪れたニキータさんのサイト

http://www.mahoutsukaino.com/

はDB設計の概念から教えて下さっていて解りやすかったです。

参考書の出版社さんを敵に回してしまいますが…
WebにAccessやVBAのテクニックが溢れるほど紹介されているので、
インターネットができる環境であれば参考書は必要ないかな?と思ってしまいます。
ここの「VBA質問箱」でも過去ログを題材に学習していくとかなりの知識がつきますよ。
・ツリー全体表示

【5156】Re:フォーム作成
質問  バリュー  - 05/5/30(月) 11:28 -

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

>SELECT [ta 対策書マスター(クレーム)].[対策書ID] FROM [ta 対策書マスター(クレーム)]
>今後の場合を考えるとテーブル名を変更しておいた方が良いと思われます。
>「_(アンダーバー)」以外の記号は誤作動の元になりますので、
>スペースと()を使用しないテーブル名が望ましいです。

早速修正しました。
aと対の間のスペースを削除して、()をとったテーブル名にしました。

>>「検索コンボ」のところを「対策書ID」、
>>「背番号」のところを「対策書ID」にしたのですが、
>>これもまたよろしくなかったでしょうか?
>VBAで「対策書ID」と記述された時に、コンボボックス名かフィールド名かを
>判断させるのをACCESSに任せてしまう事になります。
>これも誤作動の元ですので「対策所IDコンボ」とでも変更しておいた方が良いです。

修正しました。
コンボ名を「対策所ID」にしました。

>コードビルダを選ぶと表示されるVBE(VBのエディタ画面)で大丈夫です。
>更新後処理の欄が [イベント プロシージャ] となります。

確認しました。
ありがとうございます。

そして!
先週からとれずに苦しんでいたエラーメッセージがとれました!!
が。。

フォームビュー上の該当のコンボボックスに、
「#Name?」というものが表示され、
コンボボックスから選択後、入力、という動作ができません。
どうしたらよいでしょうか?

>言語は違っても「条件分岐」「ループ処理」などの考え方は一緒ですので
>VBA独自の記述に慣れればどんどん上達されると思われます。

ありがとうございます。

VBA独自の記述を調べる辞書のような参考書で、
初心者が使うのに良いものをご存知ですか?

これを買っても使えなかったら。。と考えるとなかなか買えない。。
というのが自分が置かれている部署の現状ですので、
これ!という道しるべがあれば心強いです。
・ツリー全体表示

【5155】Re:フォームの抽出条件から複数TBLを内部...
回答  小僧  - 05/5/30(月) 10:54 -

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

こちらとしては strSQL1 から想像する事しかできないのですが…。

台帳        口座
口番号 −−−  番号
支社  −−−  支社
番号         名称
内容1
内容2
内容3

こんな感じでしょうか…。

>strSQL1 = "SELECT 台帳.支社, 台帳.番号, 口座.名称," _
>     & "台帳.内容1, 台帳.内容2, 台帳.内容3," _
>     & "FROM (台帳 INNER JOIN 口座 ON " _
>     & "台帳.口番号 = 口座.番号 and 台帳.支社 = 口座.支社) " _
>     & "WHERE 口座.支社 ='" & Me.支社 & "' AND 口座.番号='" _
>     & Me.番号 & "';"

よく見るとSELECT句の最後が「,」になってますね。
FROM句との間に必要な半角スペースに変えるだけで動くかもしれませんね。
・ツリー全体表示

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