Access VBA質問箱 IV

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

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


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

【5950】Re:回答ありがとうございました。
お礼  わん  - 05/8/22(月) 13:05 -

引用なし
パスワード
   お答え下さり、ありがとうございます。

確かに、ルール違反的な行為をしている投稿者の方や
安易に解答を求めている投稿者の方も多いようですから
たんさんのおっしゃることは理解できます。

お忙しいところ、
お時間をとらせてしまい申し訳ありませんでした。
・ツリー全体表示

【5949】Re:追記
発言  たん  - 05/8/22(月) 11:16 -

引用なし
パスワード
   >> 実は、半年ほど前にエクセルVBAで質問したところ基本がわからないなら質問するなと
>> 相手によって返信の内容及び書き方が違っているように感じます。
>
>回答側は自分の経験に従って回答します。
(途中切れしてたので)

ので、回答側が、ちょっと教本を調べればいいものと感じたり、回答側が
過去に回答したのと同じ内容を質問されていると感じていれば、
回答側はそういう返事を返すでしょう。(程度の差はあれ)

例えば、ある質問を読んで、その中にあるキーワードから、「ああ、あそこに
例があったなぁ」と回答側がピンと来る事があります。

その時、それを基本と感じ、「基本が分からないなら質問するな」と取るか、
「そのキーワードで調べれば、あそこにあるからわかる筈だろう。何で調べん。」と
取るか、「キーワードで検索して、その結果を提示するか」、
それとも「手取り足取り」教えるのかは、その回答者次第です。
・ツリー全体表示

【5948】Re:呼出しを受けたので一言
発言  たん  - 05/8/22(月) 11:09 -

引用なし
パスワード
   こういう話を始めると長くなるし、不毛な話にもなるので、
あまり好きではないのですが。

> 実は、半年ほど前にエクセルVBAで質問したところ基本がわからないなら質問するなと
> 相手によって返信の内容及び書き方が違っているように感じます。

回答側は自分の経験に従って回答します。
ので、回答側が、ちょっと教本を調べればいいもの


>勿論、投稿前に必要事項は読んでいますが。

これをやって無い人間が多いのです。

>私が理解しているのは、
> ・バージョンとOSくらいは明記しろ。
当然。Ver、OS、付随環境によって答えはまるっきり変わります。
特にAC97以前と、AC2000。
(AC2000環境でDAO操作してるとかあるし)

> ・2重投稿するな。
こちらのように2重投稿を許している所もありますが、その質問に
対し、A掲示板とB掲示板でまるっきり別の回答が出たらどうします?
(しかも両方共、ぱっと読んで内容を良く理解できていない。)

その状況で、Aをやってエラーが出た、Bをやってエラーが出た...と
続いたら、解決するどころか、泥沼になる一方ですよね?

また、回答する側にとっても、「私がAで回答してるのに、この質問者は
Bのやり方で継続しているのか?」と不満に思う可能性もあります。
(タイムスタンプとかもけっこうチェックしてますよ。正直な所)

回答を受ける側にとっては、どんな方法でも解決さえすりゃそれでいいの
かもしれないけど、回答を行なう側も、自分の経験を相手に伝えようとして
いる(そしてその為の時間や工数を使っている)にも関わらず、他の回答を
見ているのであれば、自分の使っている時間がドブに

> ・答えを求めてヒトに作らせるな。

当然。システムを作るには当然費用が生じる。
(システムを作る人件費が一番多いかな?)

システムを作るにはそのシステムのロジックを考えなければならず、その
ロジックを考えるという事は、その考えている時間も当然人件費として発生
します。

その費用を質問者が負担するのなら、質問者が質問として提示したものを
そのまま解答とする為のロジックを用意するでしょう。

また、答え(=解答)を提示して貰えたとしても、それはあくまでその質問に
対しての解答であり、その解答の先にあるものまでを含めたものではないの
です。

その先が必要になるのかもしれない時に、単に提示された答えを丸写しして
どういう流れでその答えになったのかを自身が理解していなければ、
その答えを元に改造することも出来ないですよね?
(だからといって、その答えの中身を回答者に聞くのは論外。それはテストの
 解答を聞いているのと同じ。)

システムは動けばそれでイイというものではありません。
そのシステムを必要に応じ、修正・変更・追加するのは作った当人です。
それを他人にタダでお願いするというのなら、それは作っている人とは言えない。
単なるシステムの丁稚(システムの小間使い)にしかすぎない。

> ・基本をマスターしてから聞きに来い。

人によって基本を何処に位置ずけるのかは分かりませんが、私は少なくとも
「自分の質問で出てきたキーワードで、ヘルプやネットを調べる」
という行為は最低限すべきと思います。
その内容が理解できなければ、その文献を提示し、その文献の何処が
分からないのかを提示すべきでしょう。

それは「質問者が何処まで自分で努力して」「何処が分からないのかの基準」を
相手に示す事ができます。

質問を掲示板にあげるまでに、それなりの努力をしている方もおられると思い
ますが、質問が上がった時点では、質問しか書かれていなければ、
質問者がそれまで何をやってきて、その質問に行きついたのかは、
質問者にしか分かりません。


最後に。

私は良く書きますが、「回答」はヒントであり、「解答」はテストの答えなのです。
で、質問者は「回答」を提示する場所で、「解答」を求めている。

ただ、「解答」が欲しいなら、それはタダでは無い。

# ちょっと、書いてているいろ考えが増えて滅裂になりそうなので終わり。
# (時間さいてるわけにも行かんし。)
・ツリー全体表示

【5947】Re:テーブル間で四則計算したい
回答  たん  - 05/8/22(月) 10:30 -

引用なし
パスワード
   >テーブル内のデータベースで四則計算をしたいのです

悪いけど、考え方が最初の時点で間違っている。
テーブルはデータを保存する場所であって、計算を行なわせる場所では
ありません。

既にかみちゃんさんがかかれていますが、クエリ(もしくはフォーム上)で
計算式を用意し、計算させます。

通常、こうやって得る結果については、テーブルには保存しないのですが、
どうしても保存が必要であれば、作成したクエリを追加クエリや更新クエリに
変更する、又はVBAによるテーブル操作で書き込む等の形になります。

テーブルを直接開いて、そこで値を入れたら自動的に他のフィールドに
計算結果を入れるという形を考えていたのであれば、それは無理です。

クエリを使うか、入力・計算用フォームを用意するべきです。
・ツリー全体表示

【5946】Re:時間の計算について
回答  小僧  - 05/8/22(月) 9:51 -

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

>If DCount("*", "選手1", "Left(入団日, 4) = '" & Me.コンボ年 & "'") = 0 Then
>   MsgBox "そんな入団年ないよ"
>  ElseIf DCount("*", "選手1", "mid(入団日,6,2) = '" & Me.コンボ月 & "'") = 0 Then
>   MsgBox "そんな入団月ないですよ〜"
>  ElseIf DCount("*", "選手1", "ポジション = '" & Me.テキストポジション & "'") = 0 Then
>   MsgBox "そんなポジションないってば"
>  Else

DCount関数の第3引数の条件式は「AND」条件でつなげる事ができるので、

DCount("*", "選手1", "ポジション = '" & Me.テキストポジション & "' AND " _
         & "Left(入団日,7) = '" & Me.コンボ年 & "/" & Me.コンボ月 & "'")

でフィルタを掛ける前に件数を求めることができます。

また、Filterの後に「Me.Recordset.RecordCount」で結果が何件かを調べる事ができるので、

If Me.Recordset.RecordCount = 0 Then
    Msgbox "結果0件ですね"
    Me.FilterOn = False
End If

なんていうのもありかと思います。

>最下部のレコードの操作ではなく、フォーム上にコマンドボタンか何かのコントロールで
>検索できるようにすることは可能なのでしょうか?

[表示] → [ツールバー] → [ツールボックス] でツールボックスを表示させると、
テキストボックスやコンボボックスなどと共に
「コントロールウィザード」というアイコンが出現します。

これを押した状態でコマンドボタンを配置すると、
Accessのウィザードでレコードの移動ボタンが作れます。

クリック時のイベントを見ると変なエラー処理がついていますが、

DoCmd.GoToRecord , , acNext
DoCmd.GoToRecord , , acPrevious

こんな記述ができていると思います。
・ツリー全体表示

【5944】Re:たんさんにお聞きしたいことが・・・。
発言  わん  - 05/8/22(月) 8:02 -

引用なし
パスワード
   こういうことは、石鹸箱でお聞きすればよかったんですかね?

お聞きする場所を間違えてしまったようです。
申し訳ありまません。
・ツリー全体表示

【5943】たんさんにお聞きしたいことが・・・。
質問  わん  - 05/8/22(月) 0:18 -

引用なし
パスワード
   私は、安易に答えを教えて頂こうとは思っていませんが、
調べて考えた挙句、どうしても解らない事を教えて頂いているつもりです。
他の投稿に聞くこともしません。

しかしながら、他の投稿者に対する答えを見ると、
かなり、手厳しいことを書かれているのを見かけます。

また、ヘルプを見ろと言ってもヘルプの表示の仕方も考えながらしています。
それで、どうしても解らないからここに聞きにくるのです。
実は、半年ほど前にエクセルVBAで質問したところ基本がわからないなら質問するなというような返信をされたことがありますし、相手によって返信の内容及び書き方が違っているように感じます。

正直いつもビクビクしながらお伺いをたてております。

今の時代常識などはヒトそれぞれだと思いますが、
質問するに当ってしてはいけないことはナンですか?
勿論、投稿前に必要事項は読んでいますが。
私が理解しているのは、

 ・バージョンとOSくらいは明記しろ。
 ・2重投稿するな。
 ・答えを求めてヒトに作らせるな。
 ・基本をマスターしてから聞きに来い。

このように感じています。
たんさんの発言や答えの仕方を聞くとこのように受け取れるのですが
このサイトは何のためにあるのですか?

どこまで聞いて良くてどこからがダメなのか。是非、明確に教えて頂きたいと思います。

可笑しな質問かもしれませんが真剣に質問している私としては気がかりでなりません。

また、
現在私の質問に対し、
真剣にお答えして下さっている方にも申し訳ないような気がしてなりません。

お答え宜しくお願い申し上げます。
・ツリー全体表示

【5942】Re:時間の計算について
質問  わん  - 05/8/21(日) 22:00 -

引用なし
パスワード
   小僧さん:
こんばんわ。

自分なりに考えてみました。

>検索ボタンクリック
>↓
>NULLチェック

ここまでは、今まで教えて頂いたやり方でOKですね。
問題は次ですね。↓のようにしてみました。

If DCount("*", "選手1", "Left(入団日, 4) = '" & Me.コンボ年 & "'") = 0 Then
   MsgBox "そんな入団年ないよ"
  ElseIf DCount("*", "選手1", "mid(入団日,6,2) = '" & Me.コンボ月 & "'") = 0 Then
   MsgBox "そんな入団月ないですよ〜"
  ElseIf DCount("*", "選手1", "ポジション = '" & Me.テキストポジション & "'") = 0 Then
   MsgBox "そんなポジションないってば"
  Else
   Me.Filter = "Left(入団日, 4) = '" & Me.コンボ年 & "' AND mid(入団日,6,2) = " & Me.コンボ月 & "AND ポジション = '" & Me.テキストポジション & "'"
   Me.FilterOn = True
   Me.テキスト人数 = Me.Recordset.RecordCount

これで上手くいくのですが、検索結果が“0”のときにMsgBoxが表示されません。
表示させたいのですがどのようにすれば良いのでしょうか?

あと、違った質問になってしまうのですが、
仮に全く同じ条件の人が2人いたとしたら当然検索結果は2となります。
その時に、最下部のレコードの操作ではなく、フォーム上にコマンドボタンか何かのコントロールで
検索できるようにすることは可能なのでしょうか?
もし、できるならどのようにすれば良いのでしょうか?

極力、使用する側がAccessについて知らなくても使用できるように
完成させたいと思っています。

何卒、どうかどうか宜しくお願い致します。

追伸、
前回の処理速度は、コピー&ペーストを実施後、直ぐのために時間がかかったようですが、
その後は立ち上がりも処理も問題なく瞬時に行われていました。
・ツリー全体表示

【5941】Re:テーブル間で四則計算したい
発言  かみちゃん  - 05/8/21(日) 17:13 -

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

>テーブル内のデータベースで四則計算をしたいのです
>
>単価  税抜価格  消費税  送料 販売金額
>4200  4000    200    850  5050

消費税率が5%とした場合
税抜価格は、単価/1.05
消費税は、税抜価格*0.05
販売金額は、単価+送料
でいいのでは?

ただ、これらをひとつのテーブルで管理するのですか?
テーブルには、単価と送料だけ管理しておき、クエリーで計算させればいいと思うのですが・・・
あと、端数処理は、どうしたいのでしょうか?

>エクセルならできるのですがアクセスだと関数が別のものになってくるようなので・・・

「まったく別」というわけではありません。
どういう関数を使おうとして、そのようなことをおっしゃっていのでしょうか?
・ツリー全体表示

【5940】テーブル間で四則計算したい
質問  こばやん E-MAIL  - 05/8/21(日) 11:06 -

引用なし
パスワード
   テーブル内のデータベースで四則計算をしたいのです

単価  税抜価格  消費税  送料 販売金額
4200  4000    200    850  5050

単価、送料を入力すると税抜価格、消費税、販売金額が自動で算出できるしくみをつくりたいのです。
エクセルならできるのですがアクセスだと関数が別のものになってくるようなので・・・
ちなみにソフトは2000です

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

【5939】Re:時間の計算について
発言  小僧  - 05/8/21(日) 8:05 -

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

業務が忙しくなってしまい返信が遅くなってしまいました。
すみません。

>If DCount("*", "選手1", "ポジション = '" & Me.テキストポジション & "'") = 0 Then

その通りです。0と比較しなきゃいけなかったですね。

>後、最終的に検索結果が0件の時、若しくは3つの条件が揃っていない時に
>MsgBoxが表示されるようにはできないでしょうか?

これは順々で良いのではないでしょうか。

検索ボタンクリック

NULLチェック

結果0件チェック

フィルタ処理


>約2秒程です。(これが長いのか短いのかは私には判断できませんが)

当方でしたら…一度フォームが立ち上がれば後は軽ければ気になりませんし、
何を操作するにも2秒ずつ時間がかかるのでしたら改善しようと考えますね。
(ちょっと気が短いですかね…)
・ツリー全体表示

【5938】Re:編集不可
発言  ちゅう吉  - 05/8/20(土) 23:45 -

引用なし
パスワード
   え〜と・・・
この元の質問者は「su」さんですが・・・


>→97の書式プロパティを見てみましたが、「区切り線」という項目がありませんでした。「フォーム自体」とのことなので、フォームを閉じて右クリ→プロパティを開くと、タブが無い表示になります。ヘッダ、詳細、フッダのプロパティは書式タブはありますが、「区切り線」というのはありません。

回答も端折ってた部分があるので、もっと詳しく書きましょう。
1)対象となるフィームを「デザイン」で開きます。
2)そのまま、メニューバーより [表示(V)]-[プロパティ(P)]で
 プロパティのダイアログが表示されます。
 (逆に元々表示されていれば消えます)
 これを、フォーム自体のプロパティと表現していました。
 わかりにくくて、すみませんでした。
3)このプロパティの「書式」タブの上から7番目に「区切り線」プロパティがあります。
4)これを「いいえ」にしてください。

>>*** Ex.2 ***
>>フォームを開く時に
>>
>>Private Sub Form_Open(Cancel As Integer)
>>DoCmd.GoToRecord acActiveDataObject, , acNewRec
>>End Sub
>>
>>として、新規レコードに飛ばす。
>>
>
>→EX2の方法にしたいのですが、このマクロをどこに入れればいいのでしょうか?
>コードビルダから入ると、別のマクロの下に表示されて、この作業が動きません。
>二つ目以降のマクロを一つのオブジェクト(今はフォーム)に組み込む場合は
>どうすればよいのでしょうか?
>アクセスに関して1.マクロとモジュール2.ビルダ(式ビルダは関数を入れるのはわかるのですが、マクロビルダとコードビルダが?です)理解できてません。excelのようにモジュール別にマクロを管理できるのでしょうか?
>初歩的なことで申し訳ありませんが、この点についても教えていただけませんか?

マクロビルダがマクロを記述作成し、
コードビルダがVBAを記述します。

このBBSのタイトルが「Access VBA質問箱 IV」となっていたのでVBAで表記しています。
マクロではありません。
詳細は・・・
1)フィームを「デザイン」で開きます。
2)そのまま、メニューバーより [表示(V)]-[プロパティ(P)]で
 プロパティのダイアログが表示されます。
 (逆に元々表示されていれば消えます)
3)このプロパティの「イベント」タブの上から9番目に「開く時」プロパティがあります。
4)コードビルダを選択しすると、このフォームのクラスモジュールというウィンドウが表示され、勝手に

Private Sub Form_Open(Cancel As Integer)
←この位置でカーソルが点滅
End Sub

と表示されるので、カーソルが点滅に

DoCmd.GoToRecord acActiveDataObject, , acNewRec

の1文を入力します。

これの意味はよろしいですか?
ちなみに
「現在の使用中のオブジェクト(ここでは自フォーム)で新しいレコードへ
 レコード移動する命令を実行します」
です。


PS.
逆に自分はExcelが詳しくないので、内容をExcelに例えられても分かりかねます。
申し訳ありません。
・ツリー全体表示

【5937】Re:バックアップについて
回答  Gin_II  - 05/8/20(土) 14:56 -

引用なし
パスワード
   >ACCESSに、エクセルのような瞬時にバックファイルを作成できる設定はないのでしょうか?

お望みの機能かどうかは分かりませんが、Access2003だとバックアップ機能が
追加されていると思います。


[ACC2003] Office Access 2003 の新機能および新たに強化された機能の使用方法
http://support.microsoft.com/default.aspx?scid=kb;ja;823089

データベース ファイル (.mdb) をバックアップおよび復元する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;881398

ということで、バージョンにより回答も変わりますので、次回質問時には、
バージョンを明記してくださいね (^^ゞ
・ツリー全体表示

【5936】Re:バックアップについて
お礼    - 05/8/20(土) 10:36 -

引用なし
パスワード
   リンクありがとうございます。
VBScriptとかバッチファイルになると私もわかりかねるので、
地道にエクセルにエクスポートすることにします。
ありがとうございました。


>それでは、この「Access VBA質問箱」の「検索」より
>「バックアップ」
>というキーワードで、一度検索されてみてはいかがでしょうか?
>↓
>http://www.vbalab.net/vbaqa/c-board.cgi?word=%83o%83b%83N%83A%83b%83v&way=0&target=all&view=0&id=access&cmd=src&x=27&y=5
・ツリー全体表示

【5935】Re:編集不可
質問    - 05/8/20(土) 10:18 -

引用なし
パスワード
   ちゅう吉さん

何度も申し訳ありません。

>A2.ACCESS2000では、フォーム自体の書式プロパティの
>「区切り線」を「いいえ」にします。
>ACCESS97でもOKのようです。

→97の書式プロパティを見てみましたが、「区切り線」という項目がありませんでした。「フォーム自体」とのことなので、フォームを閉じて右クリ→プロパティを開くと、タブが無い表示になります。ヘッダ、詳細、フッダのプロパティは書式タブはありますが、「区切り線」というのはありません。


>[A.1]
>>コンボボックスの編集不可と言うよりは正しくはレコードの編集不可です。
>>入力用のフォームを開いたときに一応新規レコードに切り替えるトグルボタンは入れてるのですが、最初にこのフォームを開いたときに通常、1番目のレコードが表示されますよね?その内容を書き変えられないようにしたいのです。
>
>*** Ex.2 ***
>フォームを開く時に
>
>Private Sub Form_Open(Cancel As Integer)
>DoCmd.GoToRecord acActiveDataObject, , acNewRec
>End Sub
>
>として、新規レコードに飛ばす。
>

→EX2の方法にしたいのですが、このマクロをどこに入れればいいのでしょうか?
コードビルダから入ると、別のマクロの下に表示されて、この作業が動きません。
二つ目以降のマクロを一つのオブジェクト(今はフォーム)に組み込む場合は
どうすればよいのでしょうか?
アクセスに関して1.マクロとモジュール2.ビルダ(式ビルダは関数を入れるのはわかるのですが、マクロビルダとコードビルダが?です)理解できてません。excelのようにモジュール別にマクロを管理できるのでしょうか?
初歩的なことで申し訳ありませんが、この点についても教えていただけませんか?
・ツリー全体表示

【5934】Re:ACCESS2000がxpでうまく動きません。
発言  Chou  - 05/8/20(土) 0:02 -

引用なし
パスワード
   横から失礼します。
間違っておれば申し訳有りませんが、以前、同じ様な思いをした
記憶があります。
確か、アンチウイルスソフトを削除して対処したと思います。
もし、アンチウイルスソフトがInstallされておれば
働かないようにしてからもう一度、試されては如何でしょうか?。
・ツリー全体表示

【5933】Re:変わった出力の仕方
回答  Gin_II  - 05/8/19(金) 18:26 -

引用なし
パスワード
   >テーブル名"銀行出力テーブル"
>フィールド名
>"出力"
>AAA123
>AAA123
>
>のように出力されるように設定したいのです。(VBAで)

バージョンは記載しましょう。

Dim lngCnt As Long

For lngCnt = 1 To Me!銀行数
  CurrentDb.Execute "INSERT INTO 銀行出力テーブル(出力) " _
           & "VALUES('" & Me!総合 & "') "
Next lngCnt

とかでは?
・ツリー全体表示

【5932】変わった出力の仕方
質問  さとこ  - 05/8/19(金) 18:10 -

引用なし
パスワード
   こんにちは。いつもお世話になっています。
宜しくお願いします。

フォーム−銀行−テキストボックス−"本店ID"、"支店ID"、"総合"、"銀行数"
テーブル−"銀行出力テーブル"、フィールド"出力"
コマンドボタン−登録

テキストボックス"総合"には本店IDと支店IDを組み合わせた英数字(テキスト型)を自動表示させるようにしてあります。
ここからが本題なのですが、コマンドボタン"登録"をクリックすることにより"銀行数"(一応テキスト型にしてありますが数値のみ)に入力した数値分だけ、"総合"の値を"銀行出力テーブル"に出力されるようにしたいのです。
"銀行出力テーブル"はエクセル"表示.xls"にエクスポートされるように設定はできています。

例)"総合"の値がAAA123 、 "銀行数"の値が2
            ↓
テーブル名"銀行出力テーブル"
フィールド名
"出力"
AAA123
AAA123


のように出力されるように設定したいのです。(VBAで)


お願いします。m(__)m
・ツリー全体表示

【5931】Re:該当するのがあるかは不明。
回答  クロ  - 05/8/19(金) 16:46 -

引用なし
パスワード
   取りあえず、空のmdbを作成して、各オブジェクト等をインポートしてみては
どうでしょうか?
・ツリー全体表示

【5930】Re:該当するのがあるかは不明。
お礼  ueno  - 05/8/19(金) 16:31 -

引用なし
パスワード
   たん さん

たびたび申し訳ございません。
解決にはいたりませんでした・・・・

悲しい週末になりそうで、こころが重いです。

ありがとうございました。
・ツリー全体表示

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