Access VBA質問箱 IV

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

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


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

【11522】データシート形式でのフォームについて
質問  pon  - 10/3/11(木) 16:01 -

引用なし
パスワード
   こんにちは

よろしくお願いいたします

フォームにデータシート形式のサブフォームコンとロールを貼って使用しています

参照している サブフォームのテーブル、クエリの入れ替えは
サブフォームSBF01、SBF02等を
Forms("MAINF1").Controls("CNT01").SourceObject = "SBF02"
とかすれば、入れ替えできるのですが

Set Forms("SBF01").Form.Recordset = rs
みたいにしてRecordsetの入れ替えだけでデータシート形式のフォームが更新出来ないかと
思っています


ただ、サブフォームをデザインでみれば
フィールドのコントロールが必ず貼ってあるので(表示させるためには当然かと思いますが)
Recordsetの入れ替えだけでは無理な希望かなとも思えます


ググッてはみましたが
Recordsetの入れ替えの記述は見かけるのですが
データシート表示部分 についての 記載のあるものは見つけられませんでした

データシートを表示させるサブフォームコンとロールの部分はどう処理すればいいのでしょうか
あるいは、こんなことは不可能なのでしょうか

わかり難いと思いますが、アドバイスよろしくお願いいたします
・ツリー全体表示

【11521】Re:残業時間計算
発言  Nao  - 10/3/8(月) 15:20 -

引用なし
パスワード
   >=DateDiff("時間単位",[終業時間],[始業時間])のような感じになってしまい、
>例えば、=DateDiff("時間単位",[終業時間],([始業時間]+8.5))にしても
>駄目なんですよね?

何がダメなのかな?
独りよがりに質問されても意味がわかりません。

>で時間単位も00:00と表示させたいのですが・・・。

これも同様です。
DateDiff には 時間とか分とかしかないです。
結果が 0:00 にしたければ整形すればいいだけです。
(勤怠計算には、ものすごく使い辛いと思いますが・・・)
・ツリー全体表示

【11520】Re:残業時間計算
お礼  hiro  - 10/3/8(月) 10:02 -

引用なし
パスワード
   ▼Nao さん:
ありがとうございます。

=DateDiff("時間単位",[終業時間],[始業時間])のような感じになってしまい、
例えば、=DateDiff("時間単位",[終業時間],([始業時間]+8.5))にしても
駄目なんですよね?

で時間単位も00:00と表示させたいのですが・・・。
・ツリー全体表示

【11518】Re:残業時間計算
回答  Nao  - 10/3/6(土) 14:07 -

引用なし
パスワード
   >ACCESSで勤務票の管理をしてるのですが、
>終業時間−始業時間−8.5(←労働時間)<=0たら、空白、
>>0たら、残業時間を表記したいのですが。
>こんな関数を教えて下さい。

>終業時間−始業時間
この部分はDateDiff関数

><=0たら、空白、>0たら、残業時間
この部分はIfまたはIIf関数

>あと、残業は、一ヶ月、四半期と集計したいです。
集計クエリー
・ツリー全体表示

【11517】Re:フィールド間の計算ができない場合
お礼  A-C  - 10/3/5(金) 15:34 -

引用なし
パスワード
   ▼超初心者 さん:

ご指摘いただいた通り、片方がNullの場合があるデータです・・・!
アドバイスありがとうございます、試してみます。
・ツリー全体表示

【11516】Re:フィールド間の計算ができない場合
発言  超初心者  - 10/3/5(金) 15:02 -

引用なし
パスワード
   ▼A-C さん:
もしかしたら、、、、

クエリ名(1).フィールド名(4)
テーブル名.フィールド名(5)

どちらかがあるいは両方が
空白またはNullなのでは?

IIF(Nz(クエリ名(1).フィールド名(4),"")="",0,クエリ名(1).フィールド名(4)) +
IIF(Nz(テーブル名.フィールド名(5),"")="",0,テーブル名.フィールド名(5))
とすると出てくるかも!?

違ったらゴメンなさい。
・ツリー全体表示

【11515】フィールド間の計算ができない場合
質問  A-C  - 10/3/5(金) 14:02 -

引用なし
パスワード
   SELECT
 テーブル名.フィールド名(1)
 クエリ名(1).フィールド名(3)
 クエリ名(1).フィールド名(4) + テーブル名.フィールド名(5) AS フィールド名(6)

(ここで、テーブル名(1).フィールド名(1)とクエリ名(1).フィールド名(2)はりレーションシップの設定を行なってあります)
(クエリ名(1)は、.txtデータを読み込んで作業コード別に表示分けした結果で、テーブル名とは別データです)

この状態で、計算結果の、フィールド名(6)が表示できません。
同じテーブル/クエリに表示されているフィールドでしか、フィールド間の演算はできないので、ここはそれだけでは必要なくとも、クエリ名(1).フィールド名(4)、テーブル名.フィールド名(5)のフィールドを作って一旦表示させる、とかだったりするのでしょうか・・・?


この問題の解決手段が分かる方、ここが悪いのではないか?という心当たりのある方いらっしゃいましたら、ご助言お願い致します。
周囲にACCESSに詳しい方が居ないという状態で、職場で使うので独学で習得する必要があるのですが、行き詰って悪戦苦闘してまして・・・(汗
・ツリー全体表示

【11514】Re:クエリ抽出条件について
回答  小僧  - 10/3/5(金) 11:42 -

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

> 【品番】にあって【品番2】にないものを抽出したいと考えています

SELECT T1.品番
FROM テーブル名 AS T1
WHERE T1.品番 Not In
(SELECT T2.品番2 FROM テーブル名 AS T2);

こんな感じでしょうか。
・ツリー全体表示

【11513】Re:エクセル出力について
発言  小僧  - 10/3/5(金) 11:30 -

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

> あれから、CopyFrom Recordsetについていろいろと調べてみましたが、
> いまいち、どう作成したらよいのかわかんなくて悩んでます

こういったWeb上の掲示板でのやり取りですので
上記の様な事を仰られても
たつ さんがどの様な箇所で悩まれていて
何がうまくいかないのかが解りかねます。

以下は以前にこちらの掲示板で
当方が回答したものです。

h tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=6597;id=access


プロシジャ名に「20行毎」とあるとおり、
たつ さんの仕様とは違いますが
指定した行ずつExcelに吐き出すサンプルになるかと思われます。

後は別シートへの吐き出しの指定の処理を加えれば
お望みの様な動作になるかと思われます。


> アクセスのクエリデータが6万件以上ありますが、
> それをエクセルへ5万件毎にシートを替えたいとおもっています

まずは600件程度のデータを500件ごとに吐き出すサンプルを
作ってみて、その後件数を増やすと良さそうですね。
・ツリー全体表示

【11512】クエリ集計(電話番号で)
質問  hiro  - 10/3/5(金) 11:30 -

引用なし
パスワード
   またまた教えて下さい。

テーブルに電話番号フィールドありまして、
で、クエリで左から4ケタが、0761、0762なら、○○県と表示して、集計しています。
3県分のクエリを作成しているのですが、この3県分を総計する事できますか?
説明下手ですが、宜しくお願いします。

ピボットテーブルで集計しようと思ったら、グループ化にしたら、
エクセルには、反映されないんですよね?
・ツリー全体表示

【11511】残業時間計算
質問  hiro  - 10/3/5(金) 10:05 -

引用なし
パスワード
   皆さん、教えて下さい。

ACCESSで勤務票の管理をしてるのですが、
終業時間−始業時間−8.5(←労働時間)<=0たら、空白、
>0たら、残業時間を表記したいのですが。
こんな関数を教えて下さい。

あと、残業は、一ヶ月、四半期と集計したいです。

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

【11510】クエリ抽出条件について
質問  まな  - 10/3/5(金) 9:55 -

引用なし
パスワード
   一つのテーブルで
項目が【品番】と【品番2】があります
この二つの項目(フィールド)には同じ品番が多々存在しますが、
その二つの項目を比べて、
【品番】にあって【品番2】にないものを抽出したいと考えています

クエリで抽出条件したいのですが、どのように条件式を書けばよいのかが思いつかなくて悩んでます

アドバイスお願いします
・ツリー全体表示

【11509】Re:エクセル出力について
発言  たつ  - 10/3/3(水) 12:35 -

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

アドバイスありがとうございます

あれから、CopyFrom Recordsetについていろいろと調べてみましたが、
いまいち、どう作成したらよいのかわかんなくて悩んでます

もしよろしければ、もう少し詳しく教えていただけるとうれしいです

アクセスのクエリデータが6万件以上ありますが、
それをエクセルへ5万件毎にシートを替えたいとおもっています

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

【11508】Re:「ファイルを開く」ダイアログのモー...
お礼  yoco  - 10/3/1(月) 13:50 -

引用なし
パスワード
   ▼YU-TANG さん:
こんにちわ。
度々のご回答、ありがとうございます。

>  .hwndOwner = Application.hWndAccessApp
>
>これをどこに書いています?
>もしかして、ダイアログモードで開いているフォームのクラスモジュール
>でしょうか。
>もしそうなら、下記のように修正してみてください。
>
>  .hwndOwner = Me.Hwnd

ありがとうございます(*・ω・)*_ _)ペコリ

ご指摘通り、ダイアログモードで開いているフォームの
クラスモジュールに書いておりましたので、早速試してみました!

実現できました!!!

本当にありがとうございました☆

YU-TANGさん、小僧さん。
説明不足でご迷惑をおかけしましたが、懲りずにお付き合いいただき
ありがとうございました。

おかげさまで助かりました(*・ω・)*_ _)ペコリ
・ツリー全体表示

【11507】Re:「ファイルを開く」ダイアログのモー...
回答  YU-TANG  - 10/3/1(月) 13:43 -

引用なし
パスワード
   yoco さん、こんにちは。

>  .hwndOwner = Application.hWndAccessApp

これをどこに書いています?
もしかして、ダイアログモードで開いているフォームのクラスモジュール
でしょうか。
もしそうなら、下記のように修正してみてください。

  .hwndOwner = Me.Hwnd

それでは。

# 横取ってすまん>小僧さん
・ツリー全体表示

【11506】Re:「ファイルを開く」ダイアログのモー...
お礼  yoco  - 10/3/1(月) 13:33 -

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

>オブジェクト名.hWndOwner = Application.hWndAccessApp
>
>の様に、アプリケーションのウィンドウハンドルを渡してみて下さい。

ご丁寧にありがとうございます(*・ω・)*_ _)ペコリ

YU-TANGさんにご指摘いただいたように、実行コードを提示しておりませんで
ご迷惑おかけしています。

OPENFILENAME構造体の定義内容は↓の通りです。

Dim LTag As OPENFILENAME

With LTag
  .lpstrTitle = "タイトル"
  .lStructSize = Len(LTag)
  .hwndOwner = Application.hWndAccessApp
  .lpstrFile = String$(5120, Chr$(0))
  .nMaxFile = 5120
  .lpstrFilter = "圧縮(zip形式)ファイル (*.zip)" & vbNullChar & "*.zip"
  .nFilterIndex = 1
  .Flags = &H4
End With

hWndOwner = Application.hWndAccessApp と設定しているのですが
うまくいきませんでした。

YU-TANGさんに提示していただいたURLを参考に、自分なりに
もう少し調べてみます。

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

【11505】Re:「ファイルを開く」ダイアログのモー...
回答  yoco  - 10/3/1(月) 13:26 -

引用なし
パスワード
   ▼YU-TANG さん:

こんにちは。
ご指摘ありがとうございます。

>API を意味が分からないままコピペで使うほうがよほど危険な気が
>しますが…。
>WizHook は Access の内部クラスですから、Office のバージョン
>アップに伴って MS がメンテナンスしています。ですから
>WizHook.GetFileName は Unicode に対応していますし、今後の
>新しい OS 上でも (Office がそれをサポートするのであれば)
>問題なく動作するようメンテされることが期待できます。
>一方で、yoko さんがお使いの API は ANSI 版の方ですよね。
>cp932 にマッピングされない Unicode 文字がファイル名に混入した
>場合の対応は、yoko さんが行わなければ他の誰も行ってくれません。
>これも一種のリスクに値するのではないかと思いますが、いかが
>でしょうか。

確かにそうです。。。
上司が作成した関数をただ使用していただけなので
内部については理解しようとしていませんでした…。


>どこで何を調べましたか?
>MSDN で MS の公式な解説は確認済みでしょうか?
>
>GetOpenFileName 関数
>ht tp://msdn.microsoft.com/ja-jp/library/cc364716.aspx
>
>OPENFILENAME Structure ()
>ht tp://msdn.microsoft.com/en-us/library/ms646839(VS.85).aspx
>
>非公式の解説は山のようにあります。そちらも確認済みですか?
>一例。
>
>OPENFILENAME構造体
>ht tp://hp.vector.co.jp/authors/VA023539/tips/dialog/004.htm
>
>上記はすべて「msdn GetOpenFileName」で Google 検索すると、
>最初の 1 ページ目に出てくるものです (というか、1 位と 2 位を
>拾っただけ)。

私は「VBA GetOpenFileName モーダル」で Yahoo 検索していました…。
なかなかヒットするものがなく質問に至りました。

>で、それを読むと「hwndOwner」の指定がちゃんとされているのかが
>最初の確認ポイントになることが分かると思うのですが、指定は
>どうなっていますか。
>
>それから、宣言だけ書かれても、実行コードの提示が無いとほとんど
>意味がありません。「文字列変換がうまくいかないのですが、何が
>いけないのでしょうか」という質問で「Dim s As String」しか書いて
>いないのと一緒です。問題点を指摘しようがないので、できれば
>実行コードも提示してください。
>

With LTag
  .lpstrTitle = "タイトル"
  .lStructSize = Len(LTag)
  .hwndOwner = Application.hWndAccessApp
  .lpstrFile = String$(5120, Chr$(0))
  .nMaxFile = 5120
  .lpstrFilter = "圧縮(zip形式)ファイル (*.zip)" & vbNullChar & "*.zip"
  .nFilterIndex = 1
  .Flags = &H4
End With

If GetOpenFileName(LTag) Then
    ' ---* 正常時の処理
Else
  ' ---* キャンセル時の処理
End If

すみません。説明不足でした。
↑実行コードは上記の通りです。


># 老婆心ながら、メールアドレスは非表示に修正した方がいいです。
># スパムが殺到しますよ。

気づきませんでした!
ありがとうございます。

提示していただいたURLを参考に自力でがんばってみます!
ありがとうございました(*・ω・)*_ _)ペコリ
・ツリー全体表示

【11504】Re:「ファイルを開く」ダイアログのモー...
回答  小僧  - 10/3/1(月) 13:14 -

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

>Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
>  "GetOpenFileNameA" (pOpenFileName As OPENFILENAME) As Boolean

Windows API を使われてる様ですので、
OPENFILENAME構造体 を定義している箇所で設定できそうです。

オブジェクト名.hWndOwner = Application.hWndAccessApp

の様に、アプリケーションのウィンドウハンドルを渡してみて下さい。
・ツリー全体表示

【11503】Re:「ファイルを開く」ダイアログのモー...
発言  YU-TANG  - 10/3/1(月) 13:11 -

引用なし
パスワード
   こんにちは、YU-TANG です。

> Access初心者なので、動作の保障がないものを使用するのは
> ちょっと気が引けています。。。

API を意味が分からないままコピペで使うほうがよほど危険な気が
しますが…。
WizHook は Access の内部クラスですから、Office のバージョン
アップに伴って MS がメンテナンスしています。ですから
WizHook.GetFileName は Unicode に対応していますし、今後の
新しい OS 上でも (Office がそれをサポートするのであれば)
問題なく動作するようメンテされることが期待できます。
一方で、yoko さんがお使いの API は ANSI 版の方ですよね。
cp932 にマッピングされない Unicode 文字がファイル名に混入した
場合の対応は、yoko さんが行わなければ他の誰も行ってくれません。
これも一種のリスクに値するのではないかと思いますが、いかが
でしょうか。

> 上記コード内の「OPENFILENAME」にて設定ができないものか
> 調べてみましたが、分かりませんでした…。

どこで何を調べましたか?
MSDN で MS の公式な解説は確認済みでしょうか?

GetOpenFileName 関数
ht tp://msdn.microsoft.com/ja-jp/library/cc364716.aspx

OPENFILENAME Structure ()
ht tp://msdn.microsoft.com/en-us/library/ms646839(VS.85).aspx

非公式の解説は山のようにあります。そちらも確認済みですか?
一例。

OPENFILENAME構造体
ht tp://hp.vector.co.jp/authors/VA023539/tips/dialog/004.htm

上記はすべて「msdn GetOpenFileName」で Google 検索すると、
最初の 1 ページ目に出てくるものです (というか、1 位と 2 位を
拾っただけ)。

で、それを読むと「hwndOwner」の指定がちゃんとされているのかが
最初の確認ポイントになることが分かると思うのですが、指定は
どうなっていますか。

それから、宣言だけ書かれても、実行コードの提示が無いとほとんど
意味がありません。「文字列変換がうまくいかないのですが、何が
いけないのでしょうか」という質問で「Dim s As String」しか書いて
いないのと一緒です。問題点を指摘しようがないので、できれば
実行コードも提示してください。

# 老婆心ながら、メールアドレスは非表示に修正した方がいいです。
# スパムが殺到しますよ。

それでは。
・ツリー全体表示

【11502】Re:Accessからメールの送信
発言  小僧  - 10/3/1(月) 13:07 -

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

> Web上サンプルのURLを教えていただけませんか?

そのものずばり、BASP21の配布サイトで
基本的なコード例が記載されていますね。

h tp://www.hi-ho.ne.jp/babaq/basp21.html

また、「Access」「BASP21」のキーワードでWeb検索をすると
様々なコード例が見つかるかと思われます。
・ツリー全体表示

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