Access VBA質問箱 IV

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

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


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

【6494】Re:複数テーブルのデータ集計
回答  てっちゃん  - 05/10/14(金) 17:03 -

引用なし
パスワード
   ▼チリ子 さん:
失礼しました。
見やすくするつもりで、入れたスペースが全角になっていたようです。
半角にする、または、削除すればOKです。

以下に半角にしたものを載せよう、かと思って何度か試したけど、
全角に変わってしまうようですね。

ちょっと見難いですが、スペースを取りました。これでいけると思います。

SELECT UQ2.[No], UQ2.区分, Count(UQ2.区分) AS カウント
FROM (SELECT UQ.*
FROM (SELECT [No], "0504" AS TB, 区分 FROM [0504]
UNION
SELECT [No], "0505" AS TB, 区分 FROM [0505]
UNION
SELECT [No], "0506" AS TB, 区分 FROM [0506]
) AS UQ
ORDER BY [No], TB) AS UQ2
GROUP BY UQ2.[No], UQ2.区分, fxMakeGroup([No],[TB],[区分]);


>このクエリはユニオンクエリというものなのでしょうか?
はい。ユニオンクエリです。
ユニオンクエリ UQ を並べ替えたものを UQ2 とし、
それに、グループ化する自作関数を加味させました。
・ツリー全体表示

【6493】Re:桁数指定の抽出
回答  Gin_II  - 05/10/14(金) 16:55 -

引用なし
パスワード
   >万という文字とその右側に、4桁の数字のデータを抽出したいのですが、

クエリの抽出条件欄に、

Like "万????"
では、どうでしょうか?

ただし、4桁の数値かどうかは判別できませんけど ^^;
・ツリー全体表示

【6490】Re:複数テーブルのデータ集計
質問  チリ子  - 05/10/14(金) 16:25 -

引用なし
パスワード
   ▼てっちゃん さん:
お返事ありがとうございます。
早速試してみましたが、
   FROM (SELECT [No], "0504" AS TB, 区分 FROM [0504]
      UNION
      SELECT [No], "0505" AS TB, 区分 FROM [0505]
      UNION
      SELECT [No], "0506" AS TB, 区分 FROM [0506]
の構文エラーになってしまいます。
どうしてでしょうか?
このクエリはユニオンクエリというものなのでしょうか?

>(ちなみに、フィールド[No]と[区分]は、数値型と想定しています。)
数値型です。
・ツリー全体表示

【6489】Re:文字の置き換えについて
お礼  初心者  - 05/10/14(金) 15:10 -

引用なし
パスワード
   ありがとうございます。
・ツリー全体表示

【6488】Re:複数テーブルのデータ集計
回答  てっちゃん  - 05/10/14(金) 15:06 -

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

まず、標準モジュールに次のコードをコピペして下さい。
'-----------------------------------------------------------
Function fxMakeGroup(ByVal inNo As Long, inTB As String, ByVal in区分 As Long) As String
  Static myGname As String
  Static myNum As Long
  Static myKUBUN As Long
  
  If myNum <> inNo Or myKUBUN <> in区分 Then
    myGname = CStr(inNo) & inTB
  End If
  
  myNum = inNo
  myKUBUN = in区分
  
  fxMakeGroup = myGname
End Function
'-----------------------------------------------------------

次にクエリーにて、以下をSQLにコピペして下さい。
SELECT UQ2.[No], UQ2.区分, Count(UQ2.区分) AS カウント
FROM (SELECT UQ.*
   FROM (SELECT [No], "0504" AS TB, 区分 FROM [0504]
      UNION
      SELECT [No], "0505" AS TB, 区分 FROM [0505]
      UNION
      SELECT [No], "0506" AS TB, 区分 FROM [0506]
      ) AS UQ
   ORDER BY [No], TB) AS UQ2
GROUP BY UQ2.[No], UQ2.区分, fxMakeGroup([No],[TB],[区分]);

(ちなみに、フィールド[No]と[区分]は、数値型と想定しています。)

クエリーを実行してみてください。

以上です。


もうちょっと簡単な方法があるかもしれませんが、
とりあえず、参考までに。
・ツリー全体表示

【6487】桁数指定の抽出
質問  初心者  - 05/10/14(金) 14:43 -

引用なし
パスワード
   万という文字とその右側に、4桁の数字のデータを抽出したいのですが、

WHERE 金額 = "万" & '____' ;

では抽出できませんでした。
知っている方教えてください。

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

【6486】Re:文字の置き換えについて
回答  初心者  - 05/10/14(金) 14:37 -

引用なし
パスワード
   >↑では、できないでしょう ^^;
Gin_II さんの言うとおりです。勘違いでした。

2つのもできました。ありがとうございます。
・ツリー全体表示

【6485】複数テーブルのデータ集計
質問  チリ子  - 05/10/14(金) 13:40 -

引用なし
パスワード
   こんにちは。
非常にややこしい依頼があり、困っています。
内容は、、、、

以下のようなテーブル複数あります。
テーブル名:0504     テーブル名:0505     テーブル名:0506
No    区分       No    区分       No    区分  
1000   1        1000    2       1000   2
1001   2        1001    2       1001   1
1003   2        1003    1       1003   2

このテーブルのNo別に区分の同じ数字のものをカウントして表示させたいのです。
No1003の場合は2−1−2と区分が変わっています。その変わった段階で区切りたい
のです。
結果は、、、、
No=1000       No=1001       No=1003
区分  カウント   区分  カウント   区分  カウント 
1    1      2    2      2    1
2    2      1    1      1    1
                      2    1
結果の表示方法は何でもかまいません。
このような依頼を受けて、どうやっていいものかピンとこず、困っています。
何かよい方法をご存知の方はご教授お願致します。
・ツリー全体表示

【6484】Re:文字の置き換えについて
回答  Gin_II  - 05/10/14(金) 12:33 -

引用なし
パスワード
   > 企業DBの金額というレコードに対し、
> 万→0000
> ,→空白
> のように置き換えをしたいのです。
>
>1つであれば、
>SELECT 企業([金額],'万','0000' ))AS 金額変換
>FROM 企業;
>で可能ですが、同時に2つ以上の置き換えの構文の書き方がわかりません。

↑では、できないでしょう ^^;

Replace(Replace([金額],"万","0000"),",","") AS 金額変換
とかでは?
・ツリー全体表示

【6483】文字の置き換えについて
質問  初心者  - 05/10/14(金) 11:38 -

引用なし
パスワード
   SQLで文字の変換をしようと思っていますが、1つのレコードに対して2つ以上の置き換えを行いたい場合がわかりません。ご教授願います。
例)
 企業DBの金額というレコードに対し、
 万→0000
 ,→空白
 のように置き換えをしたいのです。

1つであれば、
SELECT 企業([金額],'万','0000' ))AS 金額変換
FROM 企業;
で可能ですが、同時に2つ以上の置き換えの構文の書き方がわかりません。

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

【6482】Re:レコードは削除されているエラー
お礼  山田  - 05/10/14(金) 11:06 -

引用なし
パスワード
   rsW.MoveFirstでできました。
ありがとうございます!
・ツリー全体表示

【6481】Re:IEオブジェクトでWebページ取得で不満
発言  小僧  - 05/10/14(金) 8:59 -

引用なし
パスワード
   ▼bossa777 さん、 かみちゃん さん:
おはようございます。

>HTMLを解析

ここが何をされているかがご提示されていませんが、
文字列操作しかされていないのであれば、こんな方法も可能です。

Sub PrintHttpDocSimply()
Dim oHttp As Object
Set oHttp = CreateObject("MSXML2.XMLHTTP")
oHttp.Open "GET", _
"http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=6477;id=access", False
oHttp.Send
Debug.Print oHttp.responseText
End Sub

元ネタは YU-TANG さんのサイトに載っておりますので
参考にされてみてはいかがでしょうか?

http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html
・ツリー全体表示

【6480】Re:クロス集計で累計を出すには
発言  小僧  - 05/10/14(金) 8:54 -

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

>管理番号をグループ化して行見出しにし、
>列見出しを発生年月日(5年分)にして、
>各数量の合計を集計するクロス集計クエリは作れるのですが、
>数量を累計にしたい場合どのようにすれば良いでしょうか?

クロス集計クエリの縦計を出したい、という事でしょうか?

もしそのようでしたら…。

まず、クエリに縦計を持たす必要があるかどうかです。
そのクロス集計クエリを基にフォームやレポートを作成するのであれば、
フォームやレポートの方で計算させた方がスマートに処理できると思います。

もしどうしてもクエリで縦計まで合わせたものが必要なのでしたら、
年、月ごとの合計だけを表示するクエリを作成して、
基のクエリとユニオンクエリを使って結合する手もありかと思います。

まったく見当外れの話でしたら申し訳ないです。
・ツリー全体表示

【6479】Re:ではサンプルをまた一つ
発言  小僧  - 05/10/14(金) 8:46 -

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

>>リストボックス: lstフィールド名
>もう少し説明していただけないでしょうか?

そのものずばり、リストボックスを作って、
名前を「lstフィールド名」として下さい。

その後、プロパティの「その他」タブにある「複数選択」を
「標準」または「拡張」にして下さい。
・ツリー全体表示

【6478】Re:IEオブジェクトでWebページ取得で不満
発言  かみちゃん  - 05/10/14(金) 2:12 -

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

>Webサイトを参考にし、複数のURL(100件程度)へ次々にジャンプしてHTMLを解析
>し、抜き取ったデータをテーブルに登録するACCESSプログラムを作りました。
>しかし・・・処理が遅いです。

検証もしていないので、1つの案ですが、WebBrowserコンポーネントを使うことも
できるかと思います。
(私はWebBrowserコンポーネントでデータを取得したことがあります。)
具体的には、下記URLを参照してみてください。
http://www.tsware.jp/tips/tips_207.htm
http://www.tsware.jp/tips/tips_267.htm
・ツリー全体表示

【6477】IEオブジェクトでWebページ取得で不満
質問  bossa777  - 05/10/14(金) 1:12 -

引用なし
パスワード
   はじめまして。
Webサイトを参考にし、複数のURL(100件程度)へ次々にジャンプしてHTMLを解析
し、抜き取ったデータをテーブルに登録するACCESSプログラムを作りました。
しかし・・・処理が遅いです。
処理が遅いのはしょうがないとして、これを実行中に他のウインドウで
作業していると、フォーカスをACCESSにとられてしまい作業できません。
この問題を解決する方法を教えていただけないでしょうか。
HTMLを取得するコードは下記の通りです。宜しくお願いします。

Declare Function GetInputState Lib "USER32" () As Long

Public Function GetHTML(ByVal strURL As String, ByRef varHTML As Variant) _
As Boolean
 
 Dim objIE As Object ' IEオブジェクト参照用
 Dim datTimeLimit As Date
 Dim tmpHTML As String

 GetHTML = False
 varHTML = ""
 ' インターネットエクスプローラーのオブジェクトを作る
 Set objIE = CreateObject("InternetExplorer.application")
 objIE.Visible = False

 ' 指定したURLに飛ぶ
 objIE.Navigate strURL

 ' 完了するまで待ち、n秒後にエラーを判断する
 datTimeLimit = DateAdd("s", cTimeOut, Now()) ' 現在からn秒後を計算
 Do While objIE.ReadyState <> 4
  If GetInputState() Then DoEvents
  If datTimeLimit < Now() Then  'n秒経過したか?
   GoTo EXIT_GetHTML
  End If
 Loop

 ' HTMLソースを取出す
 tmpHTML = objIE.Document.body.innerHTML '変数に代入
' 改行コードで分割
 varHTML = Split(tmpHTML, vbCrLf)
 GetHTML = True

EXIT_GetHTML:

 Set objIE = Nothing
 Exit Function

End Function
・ツリー全体表示

【6476】クロス集計で累計を出すには
質問  うっち  - 05/10/13(木) 22:46 -

引用なし
パスワード
   Access初心者です。よろしくお願いします。

テーブル1に下の項目でデータが5年分65000000件程あります。
管理番号 発生年月日 数量
管理番号をグループ化して行見出しにし、列見出しを発生年月日(5年分)にして、各数量の合計を集計するクロス集計クエリは作れるのですが、数量を累計にしたい場合どのようにすれば良いでしょうか?

色々調べたのですが、良い方法が分らず、クロス集計クエリを元に新しいクエリを作成して、5年分の累計列見出しを作り関数で加算するように作ったのですが、途中に数量の無い場合、それ以降の累計が空白になってしまいました。
クロス集計にもどりNZ関数でNull値を「0」と表示させて作りましたが、
2001/01  2001/02  2001/03  2001/01累計 2001/02累計 2001/03累計
   7     0     0       7     70     700
と表示されてしまいます。
仕方なく新しいクエリでIIF関数を使い。IsNullの場合は0に置き換えて計算するようにしました。
もっと良い方法があるのではと思うのですが、どなたかご存知でしたらご指導をお願い致します。
分りづらい説明でも申し訳ありません。
・ツリー全体表示

【6475】Re:ではサンプルをまた一つ
質問  Saiyama  - 05/10/13(木) 18:13 -

引用なし
パスワード
   ▼小僧 さん:
>▼Saiyamaさん、たん さん:
>こんにちは。
>
>>VBAで動的にSQL文の方法をお願いいたします。
>
>これでは回答する方も回答しにくいですよ ^^;
>動的にフィールドを選ぶ方法まで回答者に考えさせてはだめですよ。
大変失礼しました。
>
>今回はどのフィールドを選択するかをユーザがリストボックスから選んで
>実行ボタンを押すとクエリが作成される例です。
>
>適当なフォームを作成し、
できました。
>
>リストボックス: lstフィールド名
もう少し説明していただけないでしょうか?

>コマンドボタン: クエリ作成
作成できました。
・ツリー全体表示

【6474】Re:時刻型を日付型に変更する方法を教えて...
発言    - 05/10/13(木) 13:12 -

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

この辺がかなり使えるかと...
http://www.moug.net/boards/
http://vb.acty-net.ne.jp/ml/vb/
http://support.microsoft.com/search/?adv=1

海外ですが
http://www.planetsourcecode.com/
http://www.programmersheaven.com/
http://www.codeproject.com/


MLに参加されるのもお勧めです
http://www.users.gr.jp/ml/access.aspx

老婆心ですいません...
・ツリー全体表示

【6473】Re:時刻型を日付型に変更する方法を教えて...
回答  小僧  - 05/10/13(木) 12:46 -

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

既に解決されていますが…。

Int(#2005/09/01 15:00:11#)

なんていうのもありかと思います。
・ツリー全体表示

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