Access VBA質問箱 IV

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

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


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

【3409】テーブルに格納されているファイルの開き方
質問  taka-pon  - 04/9/5(日) 23:43 -

引用なし
パスワード
   初めまして。VBA初心者です。

質問なのですが、

OLE Object型でテーブルに格納したExcelのファイルを
VBAで開く方法をどなたかご存知ですか?

ご存知の方いらっしゃいましたら、よろしくお願いします。
・ツリー全体表示

【3408】Re:ACCESS2002重複削除について
回答  deaiamx E-MAIL  - 04/9/4(土) 22:53 -

引用なし
パスワード
   どうすればよいのですか?TBLコピー作って主キーを作成する
とHELPにありましたがそのやり方でいいのでしょうか?


▼よろずや さん:
>▼deaimax さん:
>>YU-TANG様
>>重複クエリ抽出してそのレコードをテーブルから削除する方法
>>がいまいちわかりません。おしえていただけないでしょうか?
>削除するという考えを一度捨てましょう。
>重複のあるテーブルを元にして、
>重複のない別テーブルを新規作成するのです。
・ツリー全体表示

【3407】Re:ACCESS2002重複削除について
回答  よろずや  - 04/9/4(土) 22:44 -

引用なし
パスワード
   ▼deaimax さん:
>YU-TANG様
>重複クエリ抽出してそのレコードをテーブルから削除する方法
>がいまいちわかりません。おしえていただけないでしょうか?
削除するという考えを一度捨てましょう。
重複のあるテーブルを元にして、
重複のない別テーブルを新規作成するのです。
・ツリー全体表示

【3406】Re:ACCESS2002重複削除について
回答  deaimax E-MAIL  - 04/9/4(土) 22:17 -

引用なし
パスワード
   YU-TANG様
重複クエリ抽出してそのレコードをテーブルから削除する方法
がいまいちわかりません。おしえていただけないでしょうか?
・ツリー全体表示

【3405】Re:ACCESS2002重複削除について
回答  YU-TANG WEB  - 04/9/4(土) 18:37 -

引用なし
パスワード
   > データはまだTXTの状態です。

であれば、データを 1 個のテキストファイルにまとめてしまって、
そのテキストファイルからリンクテーブルを作成し、[固有の値]
プロパティを「はい」に設定したテーブル作成クエリを 1 回実行
すれば、重複レコード無しのテーブルが作成されます。
VBA は 1 行も必要有りません。
全部 Access の基本操作のみで可能です。

繰り返しになりますが、リンクテーブルやテーブル作成クエリの
作成方法については、M$ のサイトやヘルプ、マニュアル等に山の
ように解説があります。

> 高速処理できるようマクロをふくたいのですが....

申し訳ありませんが、文章の意味がよく理解できませんでした。
このていどの処理は手動であれば数分で済みますが、VBA で組もうと
すると逆に数十分、運悪くハマると数時間はつぶれます。
いずれにしても、手動で処理するフローが確定しないと VBA も組み
ようがないのでは。

一度 基本操作で実際にやってみて、フローを確認なさってはいかが
でしょうか。
その上で、必要であれば VBA に逐次移植してみて、何か問題が発生
した時点で個別の質問を具体的に挙げると、具体的な回答が付きやすい
と思います。

# 蛇足ですが、引用は最小限に留めることをお奨めします。
・ツリー全体表示

【3404】Re:ACCESS2002重複削除について
回答  deaiamx E-MAIL  - 04/9/4(土) 16:30 -

引用なし
パスワード
   ▼YU-TANG さん:
>こんにちは、YU-TANG です。
>
>重複クエリを作成して、削除クエリに変更すれば良いと思います。
>クエリの作成方法については M$ のサイトやヘルプ、マニュアル等に
>山のように解説があります。
>
>ただ、VBA 質問箱に挙げていらっしゃるので、VBA の質問だと思うの
>ですが、ご質問からではどの辺が VBA なのか読み取れませんでした。
>
>> あまりACCESSには詳しくない初心者ものですがよろしくお願いします。
>
>VB には詳しいのでしょうか?
>とりあえず Access の(VBA 以外の)一般機能内で実現できるかどうかを
>先に確認されてはいかがでしょうか。


ありがとうございます。ACCESSはよくわからずVBならわかります。
高速処理できるようマクロをふくたいのですが....
データはまだTXTの状態です。
・ツリー全体表示

【3403】Re:ラベル表示の切替
回答  YU-TANG WEB  - 04/9/4(土) 10:59 -

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

>    Next
>  End If

For...Next ループと If 文が絡まっている上に、End If が足りませんよ。
下記が正解。

      End If
    Next
  End If

ただし Gin_II さんのアドバイスに妥当性があります。
これだけ見ると VBA を使う必要性はありません。
どこか 1 個のテキストボックスの [コントロールソース] に

=IIf(Month(Now()) Between 4 And 9,"4月〜9月","10〜3月")

…と記述して、残りのテキストボックスにそのテキストボックスを
参照させれば済む話に見えます。
・ツリー全体表示

【3402】Re:ACCESS2002重複削除について
回答  YU-TANG WEB  - 04/9/4(土) 10:58 -

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

重複クエリを作成して、削除クエリに変更すれば良いと思います。
クエリの作成方法については M$ のサイトやヘルプ、マニュアル等に
山のように解説があります。

ただ、VBA 質問箱に挙げていらっしゃるので、VBA の質問だと思うの
ですが、ご質問からではどの辺が VBA なのか読み取れませんでした。

> あまりACCESSには詳しくない初心者ものですがよろしくお願いします。

VB には詳しいのでしょうか?
とりあえず Access の(VBA 以外の)一般機能内で実現できるかどうかを
先に確認されてはいかがでしょうか。
・ツリー全体表示

【3401】Re:「愛」が足りない
回答  クロ  - 04/9/4(土) 0:06 -

引用なし
パスワード
   というのは冗談で...
Next i ではないでしょうか? (2カ所)
・ツリー全体表示

【3400】ACCESS2002重複削除について
質問  deaiamx E-MAIL  - 04/9/3(金) 23:25 -

引用なし
パスワード
   はじめまして。アクセスで100万から200万件大量データをファイル内重複(テーブル内)、ファイル間重複(他テーブル)とチェックする方法ありませんか?大量なので一時ファイルやダンプ出力してもかまいません。SQLコマンドにて抽出もよいかと思います。PCはP4 1.6G 512Mです。
ACCESS2002です。あまりACCESSには詳しくない初心者ものですがよろしくお願いします。
・ツリー全体表示

【3399】Re:ラベル表示の切替
回答  Gin_II  - 04/9/3(金) 17:43 -

引用なし
パスワード
   >『フォームを開いている月が4〜9月中ならばラベル1〜6が4月〜9月の表示になり、
>10〜3月中なら10〜3月の表示に・・ということは可能でしょうか?』

ラベルではなく、テキストボックスを使えばVBAを使う必要もないと思います。

たとえば、4月用であれば、
=IIF(Month(DateAdd("m", -3, Now())<=6),4,10)
のように。
・ツリー全体表示

【3398】Re:メイン&サブフォームの非保存終了
発言  mako  - 04/9/3(金) 17:19 -

引用なし
パスワード
   クロさま、ありがとうございました。

クロさま、YU-TANGさまへ
私は、会社でしかパソコンをさわることができないので、
平日の5時以降と土・日曜日は、試すことができません。
早速のアドバイスをいただきながら、大変失礼ですが
月曜日(といっても来週は少ししか時間をさけないのです。。。)に
教えていただいたことを実行してみます。
楽しみです。

どうもありがとうございました。
また月曜日に報告させていただきます。
・ツリー全体表示

【3397】ラベル表示の切替
質問  nana  - 04/9/3(金) 17:09 -

引用なし
パスワード
   ルール違反なのかもしれませんが、質問させてください。
別のサイトで下記の質問をしました。

『フォームを開いている月が4〜9月中ならばラベル1〜6が4月〜9月の表示になり、
10〜3月中なら10〜3月の表示に・・ということは可能でしょうか?』
と質問し、下記を教えていただきましたが、
Nextに対するForがありません。と、エラーになってしまいます。
どこをどのようにすればうまく動いてくれるのでしょうか?
どなたか、教えてください。

Private Sub Form_Open(Cancel As Integer)
Dim i As Long

  If Month(Date) >= 4 And Month(Date) < 10 Then
    For i = 1 To 6   
      Me.Controls("ラベル" & i).Caption = i + 3 & "月"   
    Next 
  Else
    For i = 1 To 6 
  If i < 4 Then   
      Me.Controls("ラベル" & i).Caption = i + 9 & "月"   
  Else    
      Me.Controls("ラベル" & i).Caption = i - 3 & "月"   
    Next 
  End If
End Sub
・ツリー全体表示

【3396】Re:メイン&サブフォームの非保存終了
回答  クロ  - 04/9/3(金) 16:25 -

引用なし
パスワード
   横レス失礼します。

メインと各サブは「レシピ番号」でリンクされているのでしょうか?

リレーションシップを使ってはどうてしょうか?
F料理名のレコードソースのテーブルをデザインビューで開き「レシピ番号」
フィールドを主キーにしてください。(テーブル名を仮にT_料理名とします)

F材料のレコードソースとなるテーブル名を仮に「T_材料」、F手順のレコー
ドソースとなるテーブル名を仮に「T_手順」とします。

メニュー>ツール>リレーションシップを開くとウィンドウが開きます。
既に何かある場合は無視してください。(システム上のものなので)
メニュー>リレーションシップ>テーブルの表示で「テーブルの表示」がでま
すので、ここで「T_料理名」「T_材料」「T_手順」を選択して追加してくだ
さい。

主キーのある「T_料理名」の「レシピ番号」フィールドをドラッグアンドド
ロップで「T_材料」の「レシピ番号」フィールドに落とすと「リレーション
シップ」ダイアログが開きますので、「参照整合性」にチェックを入れて、
「レコードの連鎖削除」にもチェックを入れて作成ボタンを押してください。

「T_料理名」の「レシピ番号」フィールド側に「1」、「T_材料」の「レシ
ピ番号」フィールド側に「∞」が付きます。同様に「T_手順」の「レシピ番
号」フィールドのほうも作成して、リレーションシップウィンドウを閉じて
保存してください。

これで「T_料理名」の「レシピ番号」フィールドが削除されると自動的に
「T_材料」「T_手順」の「レシピ番号」フィールドの同じ値のレコードが
削除されます。

よって「2」メッセージをオフにする処理を追加すると以下のようになります。

Private Sub キャンセル_Click()
On Error Resume Next
DoCmd.SetWarnings False
  Echo False
  RunCommand acCmdUndo
  Echo True
DoCmd.SetWarnings True
End Sub

以下の部分は先程のリレーションの「連鎖削除」で補えますので
要らないかと思います。

  Me!F材料.SetFocus
  RunCommand acCmdUndo
  Me!F手順.SetFocus
  RunCommand acCmdUndo
  Me!キャンセル.SetFocus
・ツリー全体表示

【3395】Re:メイン&サブフォームの非保存終了
質問  mako  - 04/9/3(金) 15:50 -

引用なし
パスワード
   YU-TANGさま、お返事ありがとうございました。
早速してみましたところ、2点教えていただきたいことが
できてしまいました。質問が的確でなくて本当にすみません。

1.どちらのサブフォームも、ひとつの レシピ番号 に対して
 複数のデータ(レコード?)を入力します。
 F材料はにんじん、じゃがいも、ピーマン
 F手順は洗う、切る、炒めるみたいにです。
 でも、どちらのサブフォームも最後に入力したデータしか消えてくれません。
 ひとつのレシピ番号に関連するデータは全部消したいと思っています。

2.キャンセルボタンをクリックすると、各フォームごとに
 1件のレコードが削除されます。はい、いいえ。のメッセージが出てきます。
 できれば、クリックしたらメッセージなしで閉じたいのです。

最後になりましたが、教えていただいた最後の2行は
私の知識不足で(本当にすみません)、語句の意味を調べたりしたのですが
試すことができませんでした。↓

>状況によってはトランザクションを使ったり、SendMessage API で
>WM_UNDO をポストする方が良い場合も有り得ます。

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

【3394】Re:メイン&サブフォームの非保存終了
回答  YU-TANG WEB  - 04/9/3(金) 14:40 -

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

>  Private Sub キャンセル_Click()
>  Me.Undo
>  End Sub

あくまで基本的な例ですが。

Private Sub キャンセル_Click()
On Error Resume Next

  Echo False
  Me!F材料.SetFocus
  RunCommand acCmdUndo
  Me!F手順.SetFocus
  RunCommand acCmdUndo
  Me!キャンセル.SetFocus
  RunCommand acCmdUndo
  Echo True

End Sub

状況によってはトランザクションを使ったり、SendMessage API で
WM_UNDO をポストする方が良い場合も有り得ます。
・ツリー全体表示

【3393】メイン&サブフォームの非保存終了
質問  mako  - 04/9/3(金) 11:20 -

引用なし
パスワード
   こんにちは、access超初心者です。
質問自体がうまくできていないかもしれませんが、
どうかよろしくお願いいたします。
OS:XP
access2000

メインフォーム(F料理名)にサブフォームを2つ(F材料とF手順)設け、
3つのテーブルを レシピ番号 というフィールドで関連付けました。
入力途中で終了した時に、途中までしか入力していないデータを
保存せずに終了したいのです。

具体的には、
1.入力途中で終了(右上の×)すると、入力途中のデータが
 各テーブルに保存されてしまいます。
2.なのでメインフォームに キャンセル という名前の
 コマンドボタンを作成し、
  Private Sub キャンセル_Click()
  Me.Undo
  End Sub
 といれました。
 が、これだと一度でもカーソルがサブフォームに
 移動してしまうとメイン・サブフォーム共に途中のデータを
 保存してしまいます。

最後の項目まで入力していても、キャンセルボタンをクリックすると
データが保存されないようにしたいです。

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

【3392】Re:リストボックスについて
お礼  saikoro  - 04/9/2(木) 16:13 -

引用なし
パスワード
   Gin_II様、phoo様、返信ありがとうございます。

>私の知る限りでは、リストボックスを選んで、
>直接入力できなかったと思います。
ありがとうございます。直接入力は、できないですか。。

そうするとお二方が言うように、プロパティで設定するしかなさそうですね。

そして、可変にしたかったら、リストボックス外で操作するしかなさそうですね。

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

【3391】Re:リストボックスについて
回答  phoo  - 04/9/2(木) 15:20 -

引用なし
パスワード
   >リストボックスを選んでそのまま書き込める事ができるのでしょうか?

なんか、的を外していたみたいです。

私の知る限りでは、リストボックスを選んで、
直接入力できなかったと思います。
・ツリー全体表示

【3390】Re:リストボックスについて
回答  Gin_II  - 04/9/2(木) 15:04 -

引用なし
パスワード
   こちらが参考になるかな?

Microsoft Access でのコンボ ボックス コントロールとリスト ボックス コントロールのプログラミング、第 1 部
http://www.microsoft.com/japan/msdn/library/ja/jpdnofftalk/htm/office03022000.asp
・ツリー全体表示

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