Access VBA質問箱 IV

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

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


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

【11070】Re:VBAコードの意味はわからない?
発言  超初心者  - 09/4/14(火) 11:44 -

引用なし
パスワード
   ▼Akaishi さん:
> Mid関数により、文字列「s」の一番目より、一つの文字を取得して[佐]、
> それから論理判断になると思います。
> 同様になるのではないか?

その判断を一文字ずつずらしていくために
> s = Right(s, Len(s) - 1)
この処理があります。


ブレイクポイントを設定して、コードを1行ずつ実行し、
変数の内容をローカルウィンドウなどで確認しながら
見ていくと分かりやすいかもしれません。
・ツリー全体表示

【11069】VBAコードの意味はわからない?
質問  Akaishi  - 09/4/14(火) 6:54 -

引用なし
パスワード
   いつもお世話になっております。
 
 あるVBA例題を理解しようとしています。動きに関しては、なんら問題
もなく、ちゃんと動いてくれますが、そのプログラムの内部動きへの理解は
まだできていないので、この掲示板へ投稿しました。
よろしくお願いいたします。

目的:クエリの中で、テーブルの名前の文字列から、姓と名を分離して、
   それぞれ、表示させるため。
   
PG:Function Name_HiLow(s As String,fig As Integer) As String
   Dim s2 As String
              'sは姓名を格納する変数
   s2= " "       '姓名を分ける識別文字
   If fig= 0 then    '姓の取得
     Do Until StrComp(Mid(s, 1, 1), s2) = 0
     Name_HiLow=Name_HiLow & Mid(s, 1, 1)
     s = Right(s, len(s)-1)
     Loop
   Else         '名の取得
   ・
   ・
   ・
   End Function

質問:例、s = "佐々木 誠司"の場合は、
   Do・・・Loopの循環に入ってから、
   最初、StrComp(Mid(s, 1, 1), s2)の動きというのは、
   Mid関数により、文字列「s」の一番目より、一つの文字を取得して[佐]、
   それから論理判断になると思います。
   ではDo・・・Loop次の動きも、
   Mid関数により、文字列「s」の一番目より、一つの文字を取得して[佐]、
   それから論理判断になると思います。
   同様になるのではないか?
      
・ツリー全体表示

【11068】Re:平均納品数の計算方法について
お礼  Akaishi  - 09/4/10(金) 6:25 -

引用なし
パスワード
   おはようございます!
 ためしに、やってみました。やはり、Is Not Nullで制御をかける方法を
決めました。
 いろいろとおしえていただき、
ありがとうございました。
・ツリー全体表示

【11067】Re:平均納品数の計算方法について
回答    - 09/4/9(木) 9:24 -

引用なし
パスワード
   おはようございます。雅です。

>>>※3[納品数]の値には、もしNullが含まれている場合は、どのように
>>>対処すべきでしょうか?
>>
>>どのようにしたいかによります。
>
>テーブルの構造変更前に以下のことを経験しました。
>合計をだしたら、結果がおかしくて、対策としてNz関数を使うことにしました。
>
>
>商品CD 04/01 04/02 04/03 04/05 納品合計---->Nz([04/01],0)+・・・
>ABC   1   1      1   0 ----->04/03のNullの影響で結果がゼロ
>ACD   1   1   0   1   3 ----->04/03の値はゼロの為、結果が正

Nullなら無視してしまってよいということであれば
WHERE 納品数 Is Not Null
というのを付け加えるとよいです。
さらに言うとNullは不要、ということならデータも不要ということで
こういったデータが作られないようにするほうがよいと思います。

でわ。
・ツリー全体表示

【11066】Re:On Error中のフォームクローズ
お礼  カダワン  - 09/4/9(木) 9:08 -

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

おはようございます。
お疲れ様です。

色々ありがとうございました。
自己解決いたしました。

On Errorは、あるテキストボックスに
不正値が入った場合の処理でしたが、
それをフォーカス喪失時に書いていた
のが原因でした。
更新処理後にした結果問題なく処理
できました。
お騒がせしご迷惑をお掛けしました。

またどうぞ宜しくお願いいたします。
・ツリー全体表示

【11065】Re:平均納品数の計算方法について
質問  Akaishi  - 09/4/9(木) 7:00 -

引用なし
パスワード
   雅さま

おはようございます。

>そうならスペースが全角だからです。

要するに半角スペースならば、良いわけですね。

>
>>※3[納品数]の値には、もしNullが含まれている場合は、どのように
>>対処すべきでしょうか?
>
>どのようにしたいかによります。

テーブルの構造変更前に以下のことを経験しました。
合計をだしたら、結果がおかしくて、対策としてNz関数を使うことにしました。


商品CD 04/01 04/02 04/03 04/05 納品合計---->Nz([04/01],0)+・・・
ABC   1   1      1   0 ----->04/03のNullの影響で結果がゼロ
ACD   1   1   0   1   3 ----->04/03の値はゼロの為、結果が正
・ツリー全体表示

【11064】Re:平均納品数の計算方法について
回答    - 09/4/8(水) 22:42 -

引用なし
パスワード
   こんばんわ。雅です。

>※1どうして以下のような記述だと、エラーがでますか?
>---------------------------------------------------------- 
>SELECT
>  商品CD,
>  Format(日付, "yyyy/mm") As 納品月,
>  Count(*) As 納品日数,
>  Sum(納品数) As 納品累計数,
>  納品累計数/納品日数 As 平均納品数
>FROM
>  Test_TB
>GROUP BY
>  商品CD,
>  Format(日付, "yyyy/mm")
>----------------------------------------------------------

このまんま貼り付けたんですか?
そうならスペースが全角だからです。

>※2以下のように記述すると、エラーがでないのですか?

上述の通り全角スペースがないから

>※3[納品数]の値には、もしNullが含まれている場合は、どのように
>対処すべきでしょうか?

どのようにしたいかによります。

でわ。
・ツリー全体表示

【11063】Re:平均納品数の計算方法について
質問  Akaishi  - 09/4/8(水) 21:36 -

引用なし
パスワード
   こんばんは
 早速、試しにしました、見事に成功しました。
Sqlビューにて、コード記述のルールについて、再度三つの質問させていただきます。

※1どうして以下のような記述だと、エラーがでますか?
---------------------------------------------------------- 
SELECT
  商品CD,
  Format(日付, "yyyy/mm") As 納品月,
  Count(*) As 納品日数,
  Sum(納品数) As 納品累計数,
  納品累計数/納品日数 As 平均納品数
FROM
  Test_TB
GROUP BY
  商品CD,
  Format(日付, "yyyy/mm")
----------------------------------------------------------

※2以下のように記述すると、エラーがでないのですか?
**********************************************************
SELECT 商品CD,・・・・・・
FROM Test_TB
GROUP BY ・・・・・・
**********************************************************

※3[納品数]の値には、もしNullが含まれている場合は、どのように
対処すべきでしょうか?
・ツリー全体表示

【11062】Re:On Error中のフォームクローズ
質問    - 09/4/8(水) 10:39 -

引用なし
パスワード
   こんにちわ。雅です。

>何なんでしょうね?
>On Errorですかね?

どのイベントに書いてるんですか?

でわ。
・ツリー全体表示

【11061】Re:On Error中のフォームクローズ
質問  カダワン  - 09/4/8(水) 10:00 -

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

>何のイベントですか?

何なんでしょうね?
On Errorですかね?
・ツリー全体表示

【11060】Re:平均納品数の計算方法について
回答    - 09/4/8(水) 9:35 -

引用なし
パスワード
   おはようございます。雅です。

>平均納品数をだすには、どのように計算しますか?
>1.納品累計数
>2.納品日数
>
>こんな感じかなあ?
>ご指導ください!
>SELECT 商品CD,日付,SUM(納品数) AS 納品累計数,count(??) AS 納品日数
>                        -----------引数の使い方?   
>FROM  Test_TB

月平均でいいんでしょうか?
SELECT
  商品CD,
  Format(日付, "yyyy/mm") As 納品月,
  Count(*) As 納品日数,
  Sum(納品数) As 納品累計数,
  納品累計数/納品日数 As 平均納品数
FROM
  Test_TB
GROUP BY
  商品CD,
  Format(日付, "yyyy/mm")
な感じでしょうか?

でわ。
・ツリー全体表示

【11059】Re:平均納品数の計算方法について
質問  Akaishi  - 09/4/8(水) 7:00 -

引用なし
パスワード
   雅さん
 返事が遅くなりまして、申し訳ありません。
 確かにテープルの構成上では、ご指摘の通り問題があると思います。
テストのため、早速、以下のように変更しました。

Test_TB
------------------------------------
商品CD  日付  納品数
A001   03/01  1



------------------------------------

平均納品数をだすには、どのように計算しますか?
1.納品累計数
2.納品日数

こんな感じかなあ?
ご指導ください!
SELECT 商品CD,日付,SUM(納品数) AS 納品累計数,count(??) AS 納品日数
                        -----------引数の使い方?   
FROM  Test_TB
・ツリー全体表示

【11058】Re:平均納品数の計算方法について
回答    - 09/4/8(水) 0:53 -

引用なし
パスワード
   こんばんわ。雅です。

>[質問1]
>Excelの場合は、Σ関数を使えば、横方向の合計が簡単にできます。
>Accessの場合は、nz[[03/01],0]+・・・・nz[[03/07],0]
>        のよう連続に書かないと計算できないですか?ほかの方法は
>        ありませんか?
>
>[質問2]
>納品数があるところだけ、カウントする方法はありますか?
>
>
>             tableデータ           算出結果
>-------------------------------------------------------***************
>商品CD 03/01 03/02 03/03 03/04 03/05 03/06 03/07 平均納品数
>A001  1   1       2       1   1   1.2 →6/5
>A02      1   1       1          1.0 →3/3
>・
>-------------------------------------------------------***************  
テーブルの設計に問題がありますね。
Accessは表計算ではなくデータベースですから。
商品コード、日付、納品数
とかにするとよいでしょう。

でわ。
・ツリー全体表示

【11057】Re:On Error中のフォームクローズ
質問    - 09/4/8(水) 0:49 -

引用なし
パスワード
   こんばんわ。雅です。

>>OpenQueryは非同期なのでたぶんこれだと思います。
>>CurrentDb.Executeとかにしてみてはどうでしょう?
>
>CurrentDb.Executeを試す前に、単純にOpenQueryを
>カットしてみましたが、同じエラーが出ました。
>正確には
>「実行時エラー'2585’フォームイベントまたはレポート
> イベントを処理しているときは、このアクションを実行
> できません。」というメッセージです。

何のイベントですか?
・ツリー全体表示

【11056】平均納品数の計算方法について
質問  Akaishi  - 09/4/7(火) 22:00 -

引用なし
パスワード
   こんばんは
 仕事の関係で、たまに「平均納品数」を計算しています。いつも紙ベースで
計算していますが、もしAccessを使えば、もっと計算が楽になるかと思って、
試しにやってみましたが、二つの問題に直面しています。

[質問1]
Excelの場合は、Σ関数を使えば、横方向の合計が簡単にできます。
Accessの場合は、nz[[03/01],0]+・・・・nz[[03/07],0]
        のよう連続に書かないと計算できないですか?ほかの方法は
        ありませんか?

[質問2]
納品数があるところだけ、カウントする方法はありますか?


             tableデータ           算出結果
-------------------------------------------------------***************
商品CD 03/01 03/02 03/03 03/04 03/05 03/06 03/07 平均納品数
A001  1   1       2       1   1   1.2 →6/5
A02      1   1       1          1.0 →3/3

-------------------------------------------------------***************  
・ツリー全体表示

【11055】Re:On Error中のフォームクローズ
質問  カダワン  - 09/4/7(火) 18:24 -

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

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

>OpenQueryは非同期なのでたぶんこれだと思います。
>CurrentDb.Executeとかにしてみてはどうでしょう?

CurrentDb.Executeを試す前に、単純にOpenQueryを
カットしてみましたが、同じエラーが出ました。
正確には
「実行時エラー'2585’フォームイベントまたはレポート
 イベントを処理しているときは、このアクションを実行
 できません。」というメッセージです。

どうにかなるでしょうか、、
・ツリー全体表示

【11054】Re:On Error中のフォームクローズ
回答    - 09/4/7(火) 17:24 -

引用なし
パスワード
   こんにちわ。雅です。

>DoCmd.OpenQuery "エラーのため、途中になった入力を削除クエリで削除し回避"

OpenQueryは非同期なのでたぶんこれだと思います。
CurrentDb.Executeとかにしてみてはどうでしょう?

でわ。
・ツリー全体表示

【11053】On Error中のフォームクローズ
質問  カダワン  - 09/4/7(火) 9:15 -

引用なし
パスワード
   いつもお世話になっております。
今回も宜しくお願いいたします。

タイトルの通りなのですが、On Errorにより
飛ばした先で処理を行い、最後に自分(me)の
フォームを閉じたいのですがCloseの所で、
「処理中により閉じられない」というエラー
が出ます。
処理後に自分(meフォーム)を閉じる良い方法
はありますでしょうか。


On Error GoTo err
・・・
Exit Sub

err:
MsgBox "注意書き"
DoCmd.Close acForm, "エラーのため、立ち上げていた別フォームを閉じて回避"
DoCmd.SetWarnings False
DoCmd.OpenQuery "エラーのため、途中になった入力を削除クエリで削除し回避"
DoCmd.SetWarnings True
Docmd.Close acForm,"自分"
(↑ここで止まります。)
End Sub


ご教示頂ければ幸甚です。
宜しくお願いいたします。
・ツリー全体表示

【11052】Re:ドライブの内容をコピーできますか?...
お礼  NEMOTO  - 09/3/18(水) 9:27 -

引用なし
パスワード
   ▼YU-TANG さん:
ありがとうございます。
大変ためになりました。
DiskCopy で検索してみます。
・ツリー全体表示

【11051】Re:データの出現順を表示する
お礼  ぶたまん  - 09/3/15(日) 1:16 -

引用なし
パスワード
   質問したものの、ブックマーク消してしまって、
しばらくここにたどりつけませんでした、、。

これがネックで、行き詰まってました。
おかげさまで解決しました。
ありがとうございます!!
・ツリー全体表示

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