Access VBA質問箱 IV

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

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


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

【5600】Re:VBA勉強中
発言  小僧  - 05/7/12(火) 10:04 -

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

>最後、結果を表示されます。

一般的にAccessを使用してツール等を作成する場合
結果の表示はフォームやレポートに出力しますので
それであればDAOやADOで処理できますが、

クエリの様に表示させるとなると下記の様なコードで同じ事ができると思います。

Sub クエリ作成()
Dim SQLCode As String
Dim QD As DAO.QueryDef
  SQLCode = "SELECT [納品日付を入力してください] AS 納品日付, test_0513.商材コード, " _
      & "test_0513.商材名, test_0513.数量, test_0513.単価, " _
      & "test_0513.合計金額 , test_0513.備考欄 FROM test_0513"
      
  Set QD = CurrentDb.CreateQueryDef("Q_Test", SQLCode)
  Set QD = Nothing
  
  DoCmd.OpenQuery "Q_test"
End Sub
・ツリー全体表示

【5599】Re:データのリンク元を変えたい
回答  クロ  - 05/7/12(火) 8:12 -

引用なし
パスワード
   その後に「リンクテーブル マネージャ」があります。
更新したいものにチェックを付けて、最下段の「リンク先を更新するための…」に
チェックを入れて「OK」ボタンを押下してください。

××の新しい場所の選択ウィンドウで新たなサーバのmdbを選択してください。
・ツリー全体表示

【5598】Re:VBA勉強中
質問  sakaiII  - 05/7/11(月) 22:53 -

引用なし
パスワード
   ▼小僧 さん:
>▼sakaiIIさん、とっつあん さん:
>こんにちは。
>
>>下記のSQL文をVBAで実現させる場合は、どのようなVBA文になるのでしょうか?
>>
>>SELECT [納品日付を入力してください] AS 納品日付, test_0513.商材コード,  >      test_0513.商材名, test_0513.数量, test_0513.単価,
>>      test_0513.合計金額, test_0513.備考欄
>>FROM test_0513;
>
>SELECT されたレコードをどのように使うのかが解らないので
>的確な回答がつけれられません。
VBAで、上記のSQL文と同じ結果を得るため、
どんなVBAコードになるかを知りたいです。
たとえば、SQL実行する場合は、まずパラメータの入力が要求され、
最後、結果を表示されます。
・ツリー全体表示

【5597】データのリンク元を変えたい
質問  かじたに  - 05/7/11(月) 16:10 -

引用なし
パスワード
   最近、職場のサーバー移行をしました。
2つのアクセスをお互いにリンクしてデータを共有していたのですが、
サーバー移行に伴い、リンク元が旧サーバーのままになっており、
データの更新ができなくなってしまいました。

リンク元を変更するにはどうすればよいのでしょうか?
[ツール]→[データベースユーティリティー]から進めばよいのかな、と
思っているのですが、もしそうならばそれ以降の進め方が分かりません。

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

【5596】Re:VBA勉強中
発言  小僧  - 05/7/11(月) 11:56 -

引用なし
パスワード
   ▼sakaiIIさん、とっつあん さん:
こんにちは。

>下記のSQL文をVBAで実現させる場合は、どのようなVBA文になるのでしょうか?
>
>SELECT [納品日付を入力してください] AS 納品日付, test_0513.商材コード,  >      test_0513.商材名, test_0513.数量, test_0513.単価,
>      test_0513.合計金額, test_0513.備考欄
>FROM test_0513;

SELECT されたレコードをどのように使うのかが解らないので
的確な回答がつけれられません。

「目に見える形にしたい」のであれば「CreateQueryDef」メソッドで
クエリとして表示するのが一般的です。

「レコードの編集を行いたい」等の場合は、Recordset型のオブジェクトに
上記SQLの結果を Set するのが一般的ですね。

Recordset オブジェクト を使うには「DAO」「ADO」があり、
DAO 使われるのでしたら とっつあん さんのご紹介されてる
URLを参考にされるのも良いかと思われます。
・ツリー全体表示

【5595】Re:レポート出力時の背景色変更方法
回答  小僧  - 05/7/11(月) 11:06 -

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

正攻法ではありませんが…。

レポートの詳細フィールドに、フィールドと同じ大きさのテキストボックスを配置して
そのテキストボックスの条件付き書式を使うやり方です。

1) 詳細フィールドと同じ大きさのテキストボックスを「txt_背景」とでもして最背面に移動。

2) その他のコントロールの背景スタイルを透明に変更。

3) レポートのレコードソースが「Tbl_main」となっている所を「...」をクリックして
  クエリビルダを起動。

4) レポートに必要なフィールドを選択後、

  判定1: [報告予定日]<=[報告日]
  判定2: [報告予定日]<=Now()

  を追加。

5) txt_背景の条件式書式に「式」「[判定1]=False Or [判定2]=False」として
  背景色を選択。

見た目上は該当レコードだけが背景色がついている様に見えると思われます。
・ツリー全体表示

【5594】Re:全角半角を区別したクエリ
発言  小僧  - 05/7/11(月) 10:16 -

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

>StrConv 関数
>StrComp 関数
>
>あたりを使えば可能です。

T_Test
ID DATA
1  A
2  a
3  A
4  a
5  ABC
6  ABC



を作成して、

SELECT T_Test.ID, T_Test.DATA,
IIf(StrComp(T_Test.[DATA],"a",0),"なし","あり") AS 完全一致,
IIf(InStr(1,T_Test.[DATA],"a",0)>0,"あり","なし") AS 部分一致
FROM T_Test;

上記 SQL をSQLビューに貼り付けて確認してみて下さい。
・ツリー全体表示

【5593】Re:数値算出方法
回答  Gin_II  - 05/7/11(月) 7:46 -

引用なし
パスワード
   > 家賃合計の算出方法がわかりません・・・。
家賃合計: [家賃] + IIF([駐車場利用], 5000, 0)

> 寮の入居年が平成11年までは50000円、それ以降は+5000円という場合は
家賃額: IIF(Year([入居年月日])<=1999, 50000, 55000)

入居年月日フィールドが、日付/時刻型として作成してあると想定しています。
・ツリー全体表示

【5592】Re:VBA勉強中
発言  とっつあん E-MAIL  - 05/7/10(日) 21:02 -

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

http://www.accessclub.jp/dao/08.html
を参考にしてみれば良いかと思います。
・ツリー全体表示

【5591】VBA勉強中
質問  sakaiII  - 05/7/10(日) 13:23 -

引用なし
パスワード
   こんにちは、
 VBA勉強中で、質問がありますので、よろしくお願いします。
下記のSQL文をVBAで実現させる場合は、どのようなVBA文になるのでしょうか?
例、
SELECT [納品日付を入力してください] AS 納品日付, test_0513.商材コード,        test_0513.商材名, test_0513.数量, test_0513.単価,
    test_0513.合計金額, test_0513.備考欄
FROM test_0513;
・ツリー全体表示

【5590】数値算出方法
質問  かつ  - 05/7/10(日) 4:31 -

引用なし
パスワード
   たとえば寮があったとします。
家賃は50000円でそこから駐車場利用で金額が変化します。
駐車料金は5000円です。

この寮の家賃を算出できる状態にするにはどうしたらよいのでしょうか?
テーブルは作って、駐車場利用はYes/No型にしました。
しかし、肝心のYesの時は+5000円、Noの時は±0円の設定の仕方から、
家賃合計の算出方法がわかりません・・・。


あと、寮の入居年が平成11年までは50000円、それ以降は+5000円という場合はどうすればよいのでしょう?
・ツリー全体表示

【5589】レポート出力時の背景色変更方法
質問   E-MAIL  - 05/7/9(土) 23:26 -

引用なし
パスワード
   あるテーブル[Tbl_main]には[報告予定日]と[報告実施日]とういうフィールドがあります。
このテーブルの情報をレポートとして出力するのですがその際に、報告予定日と報告実施日を比較し、
比較としては、
1、報告予定日と本日の比較
2、報告予定日と報告実施日の比較
NGとするのは、
1、報告予定日が本日(レポート出力日)を過ぎている場合
2、過去遅れて報告している場合、(実績が遅れている)

以上2つの条件に当てはまる時、レコードの背景色を赤色にしたいのですが可能でしょうか?
可能な場合はどうしたらよいのでしょうか?
また、可能でない場合はどのタイミングで比較を実行しとくべきなのか教えて下さい。
・ツリー全体表示

【5588】Re:全角半角を区別したクエリ
回答  Gin_II  - 05/7/9(土) 17:10 -

引用なし
パスワード
   とりあえずヒント。

>あるテーブルについて、入力時のミス(全角・半角)を探すためのクエリを作成したいのです。

StrConv 関数
StrComp 関数

あたりを使えば可能です。
・ツリー全体表示

【5587】全角半角を区別したクエリ
質問  まさ  - 05/7/9(土) 17:04 -

引用なし
パスワード
   あるテーブルについて、入力時のミス(全角・半角)を探すためのクエリを作成したいのです。

ある文字が全角の場合のみ抽出したいのですが、SQLで 〜 LILE "*A*" を使用すると、
半角のAと全角のA両方が一致してしまいます。

OpenRecordsetでテーブルを開いて1行づつInstr関数でチェックすると処理時間がかかりすぎ
ます。(テーブルが大きいので)

クエリで簡単に実現するにはどうすればよいでしょうか?
・ツリー全体表示

【5586】Re:クエリで抽出
お礼  buti  - 05/7/9(土) 11:33 -

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

>正直なところ、やってみなければ解りません。
>テストができる環境であるのでしたら、レコードが多くなっても
>問題ない速度で処理できるかの検証をしてみてはいかがでしょうか?
>
>体感できるほどの差がなければどちらでも良い事になります(笑)

10万件のデータでテストしてみました。
取得日、起算取得日、喪失日、起算喪失日、加入月数だけのクエリでは殆ど差がありませんでした。
実際のクエリはこの他にリレーションで結んであったり、他の演算処理をしているので10万件だと5秒位かかりました。
実際のクエリの方で
>>このクエリ(A)を基にクエリ(B)を作り、
>>クエリ(B)で加入月数の抽出条件に、<12といれる
とう方法のSQL文が作れていませんので試していませんが・・

小僧さん。色々ありがとうございました。
またよろしくお願いします。
・ツリー全体表示

【5585】Re:クエリで抽出
回答  小僧  - 05/7/9(土) 0:20 -

引用なし
パスワード
   ▼buti さん:
こんばんは。

>>計算の速度までは考慮しておりませんが

例えば10万件のレコードがあったとすると、10万回 IIf の条件判断をする事になるので
時間がかかるかな?と思ったのですが、確信はありません。

またお持ちのPCの処理速度によっても変わってくると思います。

>現在はそんなにデータが多くないので
>というやり方のほうが早いのでしょうか?

正直なところ、やってみなければ解りません。
テストができる環境であるのでしたら、レコードが多くなっても
問題ない速度で処理できるかの検証をしてみてはいかがでしょうか?

現在あるデータを「コピー」「貼り付け」「コピー」「貼り付け」・・・

気のすむまでデータを増やしてクエリ実行!

体感できるほどの差がなければどちらでも良い事になります(笑)
・ツリー全体表示

【5584】Re:クエリで抽出
発言  buti  - 05/7/8(金) 18:33 -

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

>こちらでAccess97、Access2002で試してうまくいったのですが…。

その後、関数の意味を調べて原因わかりました。
取得日不明のデータがあり取得日未入力のため、CDateの因数が有効でないためでした。
調べる前に返信してしまってすいません。

>これでどうでしょうか?

こちらは出来ました。ありがとうございます。

ところで最初に

>計算の速度までは考慮しておりませんが

とありましたが、

>>このクエリ(A)を基にクエリ(B)を作り、
>>クエリ(B)で加入月数の抽出条件に、<12といれる
>
>という操作を一気に書いたのが上記SQLです。

というやり方のほうが早いのでしょうか?
現在はそんなにデータが多くないので問題ないのですが今後の参考にと思いまして・・・
・ツリー全体表示

【5583】Re:クエリで抽出
回答  小僧  - 05/7/8(金) 17:25 -

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

こちらでAccess97、Access2002で試してうまくいったのですが…。
「起算取得日」の計算を buti さんのものに戻して

SELECT Q.取得日, Q.喪失日, Q.起算取得日, Q.起算喪失日,
DateDiff("m",[起算取得日],[起算喪失日])+1 AS 加入月数
FROM [
SELECT T_buti.取得日, T_buti.喪失日,
IIf(T_buti.取得日>DateSerial(Year(DateAdd("m",-3,Now())),4,1),
T_buti.取得日,
DateSerial(Year(DateAdd("m",-3,Now())),4,1)) AS 起算取得日,
IIf(T_buti.喪失日<DateSerial(Year(DateAdd("m",9,Now())),3,31),
T_buti.喪失日,
DateSerial(Year(DateAdd("m",9,Now())),3,31)) AS 起算喪失日
FROM T_buti
]. AS Q
WHERE (((DateDiff("m",[起算取得日],[起算喪失日])+1)<=11));

これでどうでしょうか?

>このクエリ(A)を基にクエリ(B)を作り、
>クエリ(B)で加入月数の抽出条件に、<12といれる

という操作を一気に書いたのが上記SQLです。
・ツリー全体表示

【5582】Re:クエリで抽出
発言  buti  - 05/7/8(金) 17:01 -

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

すみません。言葉が足りませんでした。

>加入月数に使われていた「起算取得日」「起算喪失日」を
>そのまま式にあてはめてあります。

の方で解決は出来ました。ありがとうございます。

別方法がどんなものか見たかったので、試してみようとしたところエラーがでてしまったということです。
・ツリー全体表示

【5581】Re:クエリで抽出
質問  buti  - 05/7/8(金) 16:46 -

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

元テーブルをコピーし、T_butiとしてSQLをそのまま貼り付けてみましたが、
「抽出条件でデータ型が一致しません」というエラーが出てしまいました。

ちなみに、取得日、喪失日とも日付・時刻型です。

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

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