Access VBA質問箱 IV

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

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


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

【7712】Excelインポートで日付フィールドがテキス...
質問  ゆーたん  - 06/4/18(火) 19:39 -

引用なし
パスワード
   今回、新規部門が追加になるということで、既存のインポート処理をコピーし
、新規部門用に処理を追加しました。
インポートデータも新規部門用に作成されております。
そのExcelファイルをインポート(先頭行をフィールド名、新規テーブル作成
)したところ、日付のフィールドが作成されたテーブルではテキスト型になっ
てしまいます。
Excel上、日付の列には大半が日付が入っていますが、一部、文字列(合計)
等が入力されているセルがあります。
しかし、既存部門のデータは作成されたテーブルのフィールドは日付/時刻型
になっています。
新規部門用が日付/時刻型にならないのはなぜでしょうか?

ちなみに、今回はAccess97、Excel97からのバージョンアップも行っておりま
す。
・ツリー全体表示

【7709】Re:開いたフォームから戻ってくるまでVB...
お礼  nik  - 06/4/18(火) 18:44 -

引用なし
パスワード
   Do Events を使った手法は、また別の問題の解決のヒントにもなりました。
SysCmd 関係は、調べてみます。

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

【7708】Re:開いたフォームから戻ってくるまでVB...
発言  たぬき  - 06/4/18(火) 17:48 -

引用なし
パスワード
   他にも

SysCmd(acSysCmdGetObjectState, acForm, "hoge")=0
を使ってフォームが閉じたか判断する方法

WaitForSingleObjectを使う方法などがあると思います。
・ツリー全体表示

【7707】Re:開いたフォームから戻ってくるまでVB...
回答  丹後のトムキャット  - 06/4/18(火) 17:27 -

引用なし
パスワード
   共有変数を作成する、例の場合は「Pub_Flg」
共通変数用モジュール
Public Pub_Flg As Boolean

>〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
>Public NAME As String
>
>Form_A:
>Private Sub txt_1_click()
>
>  NAME = ""
>  Docmd.OpenForm "Form_B" ・・・1.


    Pub_Flg = True
    Do Until Pub_検索中Flg = False
      '----- 検索画面が閉じるまでループ
      DoEvents
    Loop

>                    ←←←←←A
>  txt_1.Value = NAME   ・・・3.
>
>End Sub
>
>Form_B:
>Private Sub btn_INPUT_Click()
>
>  NAME = InputBox("名前をいれてください。") ・・・2.
>  Docmd.OpenForm "Form_A"
>  '

   Pub_Flg=False

>  Docmd.Close acForm,"Form_B"
>
>End Sub
>
>〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

上記の様にすれば、止まるはずです。
但し、同じ画面を幾つも開くようなシステム設計であれば
変数名に注意が必要です。
・ツリー全体表示

【7706】Re:開いたフォームから戻ってくるまでVB...
発言  小僧  - 06/4/18(火) 9:49 -

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

>かなり困っています。

かなり困っているのは解りますが、
ルールを守らないのはもっと困り者だと思いますよ。

あちらの掲示板のルールより
http://www.accessclub.jp/akira/025.html
複数のBBSに同一の投稿をすることは厳禁です。
(これをマルチポストと呼びます)

どちらかに一本化しましょうね。
・ツリー全体表示

【7705】アクセスでできる?
質問  だい E-MAILWEB  - 06/4/17(月) 22:37 -

引用なし
パスワード
   http://www.joy.hi-ho.ne.jp/taku-w/riha.xls
のエクセルファイルをアクセス化できないでしょうか?

個別の管理表ですが
個別のIDで入力・修正・表示を行いたいのです。

たぶんできるのでしょうが・・・
アクセスには手をつけたことがないので全然分かりません。
簡単なサンプルを作成して頂けると大変助かります。

ベースを作って頂ければなんとか手がつけられると思いますので、
どなたかよろしくお願いします。
・ツリー全体表示

【7704】Re:テキストボックスが半角カタカナ
お礼  ひろのしま  - 06/4/17(月) 22:12 -

引用なし
パスワード
   ▼小僧 さん:
>▼ひろのしま さん:
>こんばんは。
>
>>仕方なくテキストボックス名を
>>全角に変更したらエラーは起きませんでした。
>
>Access のコントロールの命名については Mionaさんのサイトが
>非常に良くまとまっていると思われますので参考になさって下さい。
>
>Miona's Square さんより
>フィールド、コントロール、オブジェクトや変数などに付ける「名前」について
>
>http://ww3.tiki.ne.jp/~kaya/Ac_tips.html#Tips0_001
>
>
>上記サイトにも書かれていますが、例えば
>
>  Me.[サービス種別].Value
>  Me.Controls("サービス種別").Value
>
>のように記述する事でエラーの一時的な回避は可能ですが、
>潜在的なトラブルになる可能性もあるので、
>半角カナの使用はできるだけ避けた方が無難かと思われます。

よきアドバイスありがとうございます。
半角カタカナは自作のツールでは使ったことがないのですが、業務で使用している際に初めて出てきました。
 半角カタカナは使わないようにします。
・ツリー全体表示

【7703】開いたフォームから戻ってくるまでVBA...
質問  nik  - 06/4/17(月) 20:57 -

引用なし
パスワード
   かなり困っています。

あるフォームでのイベントプロシージャから別のフォームを開き、そのフォームを閉じて帰ってくるまで、呼び出し元のプロシージャのVBAの実行を止めておくことって可能なんでしょうか?

たとえば、

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
Public NAME As String

Form_A:
Private Sub txt_1_click()

  NAME = ""
  Docmd.OpenForm "Form_B" ・・・1.
                    ←←←←←A
  txt_1.Value = NAME   ・・・3.

End Sub

Form_B:
Private Sub btn_INPUT_Click()

  NAME = InputBox("名前をいれてください。") ・・・2.
  Docmd.OpenForm "Form_A"
  '
  Docmd.Close acForm,"Form_B"

End Sub

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

上の例で言えば、普通1.→2.と行き、インプットボックスが表示されますが、
そのまま3.が実行されて、Form_A のtxt_1 には空も度列が表示されてしまい
ます。
なんとういうか、私的には、フォーカスかアクティブ?かなにかわからない
けど、Form_Bに移って、Form_Bが閉じられて再びForm_Aに戻ってくるまで、
Aで待機しててくれる方法はないのかの調べてるんですが皆目わかりません。

どなたがお助けください。
  
・ツリー全体表示

【7702】Re:テキストボックスが半角カタカナ
発言  小僧  - 06/4/17(月) 20:14 -

引用なし
パスワード
   ▼ひろのしま さん:
こんばんは。

>仕方なくテキストボックス名を
>全角に変更したらエラーは起きませんでした。

Access のコントロールの命名については Mionaさんのサイトが
非常に良くまとまっていると思われますので参考になさって下さい。

Miona's Square さんより
フィールド、コントロール、オブジェクトや変数などに付ける「名前」について

http://ww3.tiki.ne.jp/~kaya/Ac_tips.html#Tips0_001


上記サイトにも書かれていますが、例えば

  Me.[サービス種別].Value
  Me.Controls("サービス種別").Value

のように記述する事でエラーの一時的な回避は可能ですが、
潜在的なトラブルになる可能性もあるので、
半角カナの使用はできるだけ避けた方が無難かと思われます。
・ツリー全体表示

【7701】Re:テキストボックスが半角カタカナ
質問  ひろのしま  - 06/4/17(月) 17:40 -

引用なし
パスワード
   ▼ひろのしま さん:
>質問します。
>テキストボックスで半角カタカナを使用し、そこに登録された値を
>参照してステートメントを記入しているのですが。
>
>If Not Isnull(Me.サービス種別.value) and Me.サービス種別.value Then
>というステートメントを記入しようとすると、どうしても
>If Not Isnull(Me.サービス種別.value) and Me.サービス種別.value Then
>と、全角に戻ってしまいます。それだけならいいのですが、
>コンパイルエラーが出てしまいます。なので、仕方なくテキストボックス名を
>全角に変更したらエラーは起きませんでした。ちなみに、チェック等の文字ではエラーが起きません。
>
>半角カタカナ全角カタカナについて何か問題があるのでしょうか。
>よきお答えをお願いします。


すみません
下記ステートメントは間違いです。
If Not Isnull(Me.サービス種別.value) and Me.サービス種別.value Then
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
If Not Isnull(Me.サービス種別.value) and Me.サービス種別.value<>"" Then
です。よろしくお願いします。
・ツリー全体表示

【7700】テキストボックスが半角カタカナ
質問  ひろのしま  - 06/4/17(月) 17:22 -

引用なし
パスワード
   質問します。
テキストボックスで半角カタカナを使用し、そこに登録された値を
参照してステートメントを記入しているのですが。

If Not Isnull(Me.サービス種別.value) and Me.サービス種別.value Then
というステートメントを記入しようとすると、どうしても
If Not Isnull(Me.サービス種別.value) and Me.サービス種別.value Then
と、全角に戻ってしまいます。それだけならいいのですが、
コンパイルエラーが出てしまいます。なので、仕方なくテキストボックス名を
全角に変更したらエラーは起きませんでした。ちなみに、チェック等の文字ではエラーが起きません。

半角カタカナ全角カタカナについて何か問題があるのでしょうか。
よきお答えをお願いします。
・ツリー全体表示

【7699】Re:JOIN書き方について
お礼  タロ  - 06/4/17(月) 9:19 -

引用なし
パスワード
   データの仕様は変更できないので、
B) IIF関数を使う方法で対処していきます。
ありがとうございました。
・ツリー全体表示

【7698】Re:レポート作成について
お礼  SINO  - 06/4/14(金) 17:07 -

引用なし
パスワード
   ミオナさんありがとうございます!
上手くいきました。

ミオナさんが仰っている設定は全部していたのですが、グループフッターの設定で、
「可視」を「いいえ」にすると出来ました。

本当にありがとうございます。
助かりました。
・ツリー全体表示

【7697】Re:JOIN書き方について
回答  小僧  - 06/4/14(金) 15:47 -

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

>予約番号 種別 ホテル名 交通費
>1    2   ホテルA
>1    3        300
>2    2   ホテルB
>3    3        1200
>のようにデータにしたいのです。

クエリとして不可能な訳ではありませんが、
データの持ち方としては余り良くないですよね。

A) ユニオンクエリを使う方法

SELECT P.予約番号, P.種別, P.ホテル名, P.交通費
FROM [
SELECT 種類_T.予約番号,種類_T.種別, ホテルT.ホテル名, '' AS 交通費
FROM 種類_T LEFT JOIN ホテルT ON 種類_T.予約番号 = ホテルT.予約番号
WHERE 種類_T.種別=2
UNION ALL
SELECT 種類_T.予約番号, 種類_T.種別, '' AS ホテル名, 電車T.交通費
FROM 種類_T INNER JOIN 電車T ON 種類_T.予約番号 = 電車T.予約番号
WHERE 種類_T.種別=3
]. AS P
ORDER BY P.予約番号, P.種別;


B) IIF関数を使う方法

SELECT 種類_T.予約番号,
    種類_T.種別,
    IIf([種別]=2,[ホテルT].[ホテル名],Null) AS ホテル名,
    IIf([種別]=3,[電車T].[交通費],Null) AS 交通費
FROM (種類_T
   LEFT JOIN 電車T ON 種類_T.予約番号 = 電車T.予約番号)
   LEFT JOIN ホテルT ON 種類_T.予約番号 = ホテルT.予約番号
ORDER BY 種類_T.予約番号, 種類_T.種別;
・ツリー全体表示

【7696】Re:JOIN書き方について
発言  タロ  - 06/4/14(金) 15:00 -

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

説明不足で申し訳ありません。
テーブル:種類_T
 予約番号 種別 ・・・
 1     2
 1     3
 2     2
 3     3
テーブル:ホテル_T
 予約番号 ホテル名 ・・・
 1     ホテルA
 2     ホテルB
テーブル:電車_T
 予約番号 交通費 ・・・
 1    300
 3    1200

仮に上記のようなテーブルの中身の場合、
予約番号 種別 ホテル名 交通費
1    2   ホテルA
1    3        300
2    2   ホテルB
3    3        1200
のようにデータにしたいのです。
WHERE 種類_T.種別=3としてしまうと
電車のみの結果になってしまいますよね。
・ツリー全体表示

【7695】Re:期間の引き算
お礼  ムーン  - 06/4/14(金) 14:52 -

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

説明足りなくてすみません。
レコードセットに埋め込みでした。
実際○ヶ月でやってみましたら、結果OKでした。
想像いただき、すみません。有難うございました。


▼小僧 さん:
>▼ムーン さん:
>こんにちは。
>
>>説明が少なすぎてすみません。
>
>今回も情報が少なくて、ムーンさんのやりたい事が不明確なのですが…。
>
>まず、求めたいのは
>
>・○ヶ月
>・○日
>・○ヶ月○日
>
>のどれなのでしょうか。
>(もしくはどれでもない?)
>
>
>>以上を今回ご教示頂いたVBに反映させたいのです。
>
>VBに反映させるとはどういった事でしょうか。
>
>
>前回の投稿 [#7679] を拝見させて頂きましたが、
>レコードセットに納めたいのでしょうかね。
>(期間はテキスト型として…)
>
>Do Until rs.EOF
>  rs.Edit
>  rs![期間].Value = DateDiff("d", rs![開始日], rs![終了日]) & "日"
>  rs.Update
>  rs.MoveNext
>Loop
>
>
>※ 質問される方の情報が少ないと、
>  回答する側は色々と想像しながら回答をする事になります。
>  「実は…なんですけど」とならない様にご自分がやりたい事を詳しく提示して下さいね。
・ツリー全体表示

【7694】Re:JOIN書き方について
発言  小僧  - 06/4/14(金) 14:21 -

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

>AccessでのJOINの書き方について質問です。

SQL文からだけで判断しているので外しているかもしれませんが、


SELECT 種類_T.予約番号,
    ホテルT.ホテル名,
    電車T.交通費,
    種類_T.種別
FROM (種類_T
   LEFT JOIN ホテルT ON 種類_T.予約番号 = ホテルT.予約番号)
      LEFT JOIN 電車T ON 種類_T.予約番号 = 電車T.予約番号
WHERE 種類_T.種別=3

という様な事でしょうか。
・ツリー全体表示

【7693】Re:期間の引き算
回答  小僧  - 06/4/14(金) 14:09 -

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

>説明が少なすぎてすみません。

今回も情報が少なくて、ムーンさんのやりたい事が不明確なのですが…。

まず、求めたいのは

・○ヶ月
・○日
・○ヶ月○日

のどれなのでしょうか。
(もしくはどれでもない?)


>以上を今回ご教示頂いたVBに反映させたいのです。

VBに反映させるとはどういった事でしょうか。


前回の投稿 [#7679] を拝見させて頂きましたが、
レコードセットに納めたいのでしょうかね。
(期間はテキスト型として…)

Do Until rs.EOF
  rs.Edit
  rs![期間].Value = DateDiff("d", rs![開始日], rs![終了日]) & "日"
  rs.Update
  rs.MoveNext
Loop


※ 質問される方の情報が少ないと、
  回答する側は色々と想像しながら回答をする事になります。
  「実は…なんですけど」とならない様にご自分がやりたい事を詳しく提示して下さいね。
・ツリー全体表示

【7692】JOIN書き方について
質問  タロ  - 06/4/14(金) 11:25 -

引用なし
パスワード
   AccessでのJOINの書き方について質問です。

種類テーブル:種類_T(ホテルや電車等をまとめたテーブル)
ホテルテーブル:ホテルT(ホテル情報のテーブル)
電車テーブル:電車T(電車情報のテーブル)

テーブル:種類_T
 予約番号 種別 ・・・
 1     2
 1     3

SQLServerでは、
SELECT
    種類_T.予約番号,
    ホテルT.ホテル名,
    電車T.交通費,
    種類_T.種別
FROM 種類_T
    LEFT OUTER JOIN ホテルT ON
        ホテルT.予約番号 = 種類_T.予約番号
        AND 種類_T.種別 = 2
    LEFT OUTER JOIN 電車T ON
        電車T.予約番号 = 種類_T.予約番号
        AND 電車T.種別 = 3
で、問題ないのですが、クエリではどのように書けば良いのでしょうか?
「AND 種類_T.種別 = 」の箇所が出来ません。
宜しくお願い致します。
・ツリー全体表示

【7691】Re:期間の引き算
発言  ムーン  - 06/4/14(金) 9:21 -

引用なし
パスワード
   小僧さん、ありがとうございます。
イミディエートウィンドウにて確認できました。

説明が少なすぎてすみません。
今回は
SDayに相当するDATAは[開始日]にyyyy/mm/dd形式で入力し
EDayに相当するDATAは[終了日]にyyyy/mm/dd形式で入力します。
求めたいFDayに相当するDATAは[期間]としています。

以上を今回ご教示頂いたVBに反映させたいのです。

宜しくお願い致します。

▼小僧 さん:
>▼ムーン さん:
>こんにちは。
>
>>ムーンと申します。
>>
>>早速ですが、期間の引き算につきまして、どなたかご教授願えませんでしょうか?
>
>Datediff関数を使うと、結果が導きだせると思われます。
>
>
>>2004/04/01〜2004/10/31
>>
>>この間が何ヶ月経過しているかを計算させたいのです。
>
>求めたい結果は○ヶ月○日、という様な結果でなく、
>○ヶ月だけで良いのでしょうか。
>
>また日数までも求めたい場合、
>例えば2006年4月13日〜2006年4月14日までを1日経過と見るのでしたら、
>
>Sub 日付の差を求める()
>Const SDay As Date = #4/1/2004#
>Const EDay As Date = #10/31/2004#
>Dim FDay As Date
>
>  FDay = CDate(Format(EDay, "yyyy/mm") & "/1")
>
>   Debug.Print DateDiff("m", SDay, EDay) & "ヶ月"
>   Debug.Print DateDiff("d", SDay, EDay) & "日"
>   Debug.Print DateDiff("m", SDay, EDay) & "ヶ月" _
>        & DateDiff("d", FDay, EDay) & "日"
>  
>End Sub
>
>
>上記コードをモジュールに記載し、
>結果をイミディエトウィンドウにて確認されてみてください。
・ツリー全体表示

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