Access VBA質問箱 IV

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

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


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

【4268】2つのテーブルのデータ上で合致したもの...
質問  ココア  - 05/1/26(水) 15:17 -

引用なし
パスワード
   (例)
名簿テーブル
 氏名   〒   住所  電話番号
 田中 000-0000 埼玉県 000-000-0000 
 佐藤 111-1111 千葉県 111-111-1111


受注テーブル
 氏名   〒   住所  電話番号
             111-111-1111
             222-222-2222


     ↓


確認テーブル
 氏名   〒   住所  電話番号
 佐藤 111-1111 千葉県 111-111-1111


上記のように受注テーブル「電話番号」を名簿テーブル「電話番号」で検索させ、
合致しているものだけを確認テーブルに反映させる方法を教えて下さい。
(受注テーブルには氏名等の情報は入力されていません)
宜しくお願いします。
・ツリー全体表示

【4267】クロス集計クエリ
質問  水無月  - 05/1/26(水) 14:38 -

引用なし
パスワード
   教えてください。

現在、クロス集計クエリを使ってデータを集計しようとしています。
行見出しに「品名」を、列見出しに「月」を設定しました。
次に、パラメータを設定し、クエリを実行するたびに開始年月日と終了年月日を入力してデータの抽出を行うようにしました。
ここまでは上手くいきました。
次に行いたいのが、月の後ろと品名の後ろにさらに合計を表示したいのです。つまり、パラメータで抽出した期間内の分を品名ごと月ごとに総合計を表示したいのです。
私の作りたいのは下記のような表です。

    1月  2月  3月  4月 ・・・  合計
品名1  1   3   10   5  ・・・   19
品名2  5   15   0   8  ・・・   28
品名3  0   20   12   6  ・・・   38
 ・  
 ・
合計   6   38   22  19

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

【4266】Re:InputBoxについて
回答  MJM  - 05/1/26(水) 12:00 -

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

InputBox には、そのような機能はないでしょう。

新たにフォームを作成して、テキストボックスで行うべきでは?

定型入力プロパティに
PassWord
もしくは、
パスワード
・ツリー全体表示

【4265】Re:テーブルとかクエリーの有無
発言  MJM  - 05/1/26(水) 11:47 -

引用なし
パスワード
   以下でも可能ですよ。

Dim OB As Object

For Each OB In CurrentData.AllTables
  If Left(OB.Name, 4) <> "MSys" And OB.Name = TBL_Keyword Then
    TBL_HIT = 1
  End If
Next
・ツリー全体表示

【4264】メール送信時の本文の内容について
質問  た〜に  - 05/1/26(水) 11:47 -

引用なし
パスワード
   どなたか教えてください。
過去の投稿で下記のサンプルを見つけてメール送信の機能を作成しました。
メール起動や送信も問題なく動いたのですが、メールの本文に複数行コメント入れて
送りたいのですが、上手く出来ません。どのようにすれば宜しいでしょうか?

*******メールの本文イメージ********

下記の通り報告致しますのでご確認願います。

顧客名:

物件名:

mdbが置いてあるURLを表示

以上

**********************************

元の投稿記事は下記のアドレスにありました。
http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=ntr;tree=2056;id=Access

使用ソフト:Access2000


OUTLOOKで送付する場合のサンプルです。

参照設定で、Microsoft Outolook 9.0 Object Library を有効にしておいてください。
ケースにより、コメントで書いた方法を併用してくださいね。

Sub メール送信()
  Dim myOlApp As Object
  Dim myItem As Object
  Dim myRecipient As Object
  
  Set myOlApp = CreateObject("Outlook.Application")
  Set myItem = myOlApp.CreateItem(0) 'olMailItem
  
  
  'あて先アドレス(アドレスは変更してくださいね、変数でもOKですよ)
  Set myRecipient = myItem.Recipients.Add("Address1@hotmail.com")
  
  '単純にアドレスのみ設定するなら
  'myItem.Recipients.Add("Address1@hotmail.com")だけでもOKです
  'ccを設定する場合
  'Set myRecipient = myItem.Recipients.Add("AddressCC@hotmail.com")
  'myRecipient.Type = 2 'BCCの場合は3
  '参考:本来Toを設定する場合は
  'myRecipient.Type = 1
  
  'タイトルと本文を設定します。(変更してくださいね)
  myItem.Subject = "メールタイトル"
  myItem.body = "本文"
  
  '重要度の設定、不要なら削除してください。
  myItem.importance = 2
  
  '添付ファイル(フルパスで指定、ファイル名は変更してね)
  'ファイルが存在しないとエラーになりますので注意。
  myItem.attachments.Add "C:\test5.txt"
  
  'OUTLOOKを表示します。
  myItem.Display

  '表示せずに直接送付はSendメソッドを使います。
  'myItem.Send

  Set myRecipient = Nothing
  Set myItem = Nothing
  Set myOlApp = Nothing

End Sub
・ツリー全体表示

【4263】InputBoxについて
質問  ROMI  - 05/1/26(水) 10:48 -

引用なし
パスワード
   パスワードをInputboxに入力したいと考えているのですが、Inputboxを表示して、入力するときに入力項目を"****"で表示したいのですが、それは可能なのでしょうか?ヘルプを見ても載っていなかったように思われたので、投稿します。
よろしくお願いします。
・ツリー全体表示

【4262】Re:テーブルとかクエリーの有無
お礼  ひろのしま  - 05/1/26(水) 9:33 -

引用なし
パスワード
   ▼MJM さん:
>以下の方法でも可能かと…
>
>TablDefあるいはRecordsetオブジェクト変数に対して、
>調べたいテーブル名を代入し、エラーになるか否かを
>エラートラップして判定する。

とりあえず、自分は以下のようにしました。


'アクセスのテーブルを数える変数
Public TBL_Cnt As Integer 'テーブルカウント
Public TBL_Sum As Integer 'テーブル合計
Public TBL_Keyword As String '検索テーブル名保存
Public TBL_HIT As Integer '検索出来た時に1を入れる。

Public Sub Moju_テーブル確認 ( )
TBL_HIT=0
TBL_Keyword="検索テーブル名"
TBL_Sum = CurrentData.AllTables.Count
For TBL_Cnt = 0 To TBL_Sum - 1
    msgbox CurrentData.AllTables(TBL_Cnt).Name
  If CurrentData.AllTables(TBL_Cnt).Name = TBL_Keyword Then
    TBL_HIT = 1
  End If
Next
    msgbox TBL_HIT
End Sub

すると、
MSysAccessObject
MSysAccessXML
MSysACEs
MSysObjects
MSysQueries
MSysRelationships

と6つの隠しオブジェクトの名前が出た後に実際に使用しているテーブル名
が出てきました。これを出さず、数えないようにするのは別に難しくはないの
ですが、少々不便に出来ているとは思いました。

良きアドバイスをありがとうございます。
・ツリー全体表示

【4261】Re:テーブルとかクエリーの有無
発言  MJM  - 05/1/25(火) 17:05 -

引用なし
パスワード
   以下の方法でも可能かと…

TablDefあるいはRecordsetオブジェクト変数に対して、
調べたいテーブル名を代入し、エラーになるか否かを
エラートラップして判定する。
・ツリー全体表示

【4260】Re:テーブルとかクエリーの有無
発言  クロ  - 05/1/25(火) 16:41 -

引用なし
パスワード
   興味があったので...
隠しオブジェクト「MSysObjects」を使用したオブジェクトの有無判定を考えてみました

M_Objectsというテーブルを用意してください。
Typeをオブジェクト名に変更するために使用します。
詳細は以下の通り


Type(数値型)/ObjectsName(テキスト型)
1/テーブル
4/他リンクテーブル
6/リンクテーブル
5/クエリ
-32768/フォーム
-32764/レポート
-32761/モジュール


ユーザー関数を作成

Function GetObjects(strObj As String)
Dim ct As ADODB.Connection
Dim rs As ADODB.Recordset
Dim myObj As String, strSQL As String
myObj = strObj
strSQL = "SELECT M_Objects.ObjectsName, MSysObjects.Name" & _
       " FROM M_Objects INNER JOIN MSysObjects ON M_Objects.typa = MSysObjects.Type" & _
       " WHERE [Name]='" & myObj & "'"
Set ct = Application.CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open strSQL, ct
If rs.EOF Then
  MsgBox "同名のオブジェクトはありません"
Else
  MsgBox rs.GetString
End If
rs.Close
ct.Close
End Function

イミディエイトウィンドウで
?GetObjects("存在するオブジェクト名")
オブジェクトタイプ/オブジェクト名がメッセージされると思います。

同様に"存在しないオブジェクト名"で「ないよ」とメッセージしてくれる
と思います。
・ツリー全体表示

【4259】ありがとうございます。
お礼  Aiz  - 05/1/25(火) 13:40 -

引用なし
パスワード
   ▼MJMさん、クロさん:

ありがとうございます。おかげさまで解決しました。
今思えばすごい初歩的な質問で申し訳なかったです^^;
・ツリー全体表示

【4258】Re:DBと連結していないものでselectしたい...
回答  クロ  - 05/1/25(火) 13:33 -

引用なし
パスワード
   Select Case Me.CMBマスタ選択.Column (1)
  
    Case "マスタ1"
      'マスタ1の処理へ飛ぶ
    
    Case "マスタ2"
      'マスタ2の処理へ飛ぶ
    
    Case "マスタ3"
      'マスタ3の処理へ飛ぶ

end Select

カラムプロパティで列を指定してください。
※カラムは1列目は「0」から指定しますので
 2列目は「1」となります。
・ツリー全体表示

【4257】Re:DBと連結していないものでselectしたい...
回答  MJM  - 05/1/25(火) 13:33 -

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

>Select Case Me.CMBマスタ選択

「テーブル名」フィールドが2番目なら、

Select Case Me.CMBマスタ選択.Column(1)

では、如何でしょうか。
・ツリー全体表示

【4256】Re:テーブルとかクエリーの有無
お礼  ひろのしま  - 05/1/25(火) 13:06 -

引用なし
パスワード
   ▼MJM さん:
>こんにちは。
>
>CurrentData オブジェクトに
>AllTables と AllQueries コレクションがありますので、
>こちらを用いては如何でしょうか。
>
>因みに、IsLoaded プロパティは、
>ロードされているか(開かれているか)否かを示すもので、
>存在しているか否かを示すものではありません。
フォームに関しては確かにそうですね。わかりました。
良きバスガイド、否アドバイスをありがとうございます。
・ツリー全体表示

【4255】DBと連結していないものでselectしたい。
質問  Aiz  - 05/1/25(火) 11:53 -

引用なし
パスワード
   毎度お世話になります。
フォームの初期処理時にコンボボックスの中に指定されたテーブルから出力対象となるデータを出力条件に従ってセットする処理を以前聞きました。

キー:CDテーブル、テーブル名
出力条件:出力対象フラグが"1"
表示順:昇順

テーブルの中身はこんな感じです。
テーブル名:管理テーブル

CDテーブル  テーブル名   出力対象    表示順
  1        マスタ1      1       1
  2        マスタ2      1       2
  3        マスタ3      1       3
  :
  :
という感じで、CDテーブルとテーブル名をキーに出力対象が1のもので昇順にして、コンボボックスに表示するという質問をしました。
おかげさまで、コンボボックスに表示することはできたのですが、その後の処理で疑問ができまして質問します。

コンボボックスには表示されるのはテーブル名で、DBと連結しているのはCDテーブルの値でして、その後ボタンをクリックするとコンボボックスの値に従って処理が分岐するという処理を作ることになりました。

Select Case Me.CMBマスタ選択  ’<------- CDテーブルの値が入っている
  
    Case "マスタ1"
      'マスタ1の処理へ飛ぶ
    
    Case "マスタ2"
      'マスタ2の処理へ飛ぶ
    
    Case "マスタ3"
      'マスタ3の処理へ飛ぶ

end Select

上記のCMBマスタ選択には、CDテーブルの値が入っていまして、ここをテーブル名にしたいのです。
お手数かけますが、よろしくお願いします。
・ツリー全体表示

【4254】Re:存在チェック
お礼  Aiz  - 05/1/25(火) 11:18 -

引用なし
パスワード
   ▼Gin_II さん:
>If DCount("*","仕上種別","仕上CD=" & Me!TXT仕上コード) = 0 Then
>  Me!TXT仕上コード.SetFocus
>  MsgBox "該当する仕上コードは存在しません。"
>End If
>
>でもいいかと (^^ゞ

レスありがとうございます。こんな簡単にできるとは...むむむ^^;
・ツリー全体表示

【4253】Accessプロジェクトのフォームの更新(?)...
質問  のり  - 05/1/25(火) 11:07 -

引用なし
パスワード
   OS:WIN2000 Access:2000,2002 SQLServer:2000
Accessプロジェクトについて皆様のお知恵をお貸しください。

<状況>
・SQLサーバーをバックエンドとしたAccessプロジェクトで作成された
 製造工程実績入力プログラムです(Ac2kで作成)
・当初はmdbファイルでしたが情報量の増加によってテーブルはSQLサーバーへ移行し
 プログラムはmdbからプロジェクトへ移行しています。
・実績入力プログラムにはユーザーが実績情報を登録するフォームがあります。
・そのフォームにはいくつかのテキストボックスと一つのサブフォームがあります。
・作業時間等の情報はメインのテキストボックスに、個々の実績(歩留)情報はサブフォームに
 入力するようになっております。
・基本的にAc2kでしか動作保証しておりませんがPCによってはAc2002が入ってます。
 これはファイルを2種類用意することで対応しました。

<問題>
・コントロールに数式を設定してあるのですが"Error"と表示される(まったく計算されない)
・サブフォームとはLinkの親子フィールドで接続。条件が変わっても表示更新されない

<前提>
・数式、入力値には問題ありません。
・Requery、Repaint、Refresh、DB再接続等を行っても効果なし
・使用する工場内でのみ発生しています。開発している建物とはLANでつながっていますが
 開発環境下では発生したことがありません。また、実際の動作環境と同じテスト環境も
 構築してみましたが問題は発生しませんでした。

今までは全てSQLサーバー上にフィールドを用意してVBを使って計算結果を入れる方法で
対処してきました。サブフォルダに関しては毎回RecordSourceを入れなおして強引に更新しています。
最近情報量も増えてきた上、今までは1工程のみで使用していたものを全社(5工場)に水平展開
することになってしまい現状の対応策では満足できる結果を出せなくなってきました。
mdbのように自動で集計される何か良い手立てはありますでしょうか?

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

【4252】Re:テーブルとかクエリーの有無
回答  MJM  - 05/1/25(火) 10:21 -

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

CurrentData オブジェクトに
AllTables と AllQueries コレクションがありますので、
こちらを用いては如何でしょうか。

因みに、IsLoaded プロパティは、
ロードされているか(開かれているか)否かを示すもので、
存在しているか否かを示すものではありません。
・ツリー全体表示

【4251】テーブルとかクエリーの有無
発言  ひろのしま  - 05/1/25(火) 9:09 -

引用なし
パスワード
   すみません。質問致します。
フォームの有無を確認するコマンドで、
If currentProject.allforms("該当フォーム名").isloaded=true Then
    msgbox"該当フォームは存在してます。"
end if
という記述がありますが、これと同じような役割をするもので
テーブルやクエリの有無を確認する記述はありませんでしょうか。
教えてください。お願いします。
・ツリー全体表示

【4250】Re:Accessから起動したExcelの終了について
回答  Gin_II  - 05/1/24(月) 16:37 -

引用なし
パスワード
   >プロセスには残ったままになります。
>この場合、どのように対処したらいいでしょうか?

>  [実処理]

この中に問題があるのでは?
・ツリー全体表示

【4249】Accessから起動したExcelの終了について
質問  kana  - 05/1/24(月) 16:18 -

引用なし
パスワード
   こんにちは。AccessよりExcelを起動して、
AccessのデータをExcelに貼り付けるという処理を行いました。
その後、以下のようにExcelアプリケーションの終了を行い、
見た目はExcelが起動していない状態になっていますが、
プロセスには残ったままになります。
この場合、どのように対処したらいいでしょうか?
よろしくお願いします。

Set objApp = CreateObject("Excel.Application")

With objapp
  .DisplayAlerts = False
  .Workbooks.Open
  [実処理]
  .DisplayAlerts = True
  .Quit
End With

Set objApp = Nothing
・ツリー全体表示

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