Access VBA質問箱 IV

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

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


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

【3853】Re:ACCESS 主キー情報取得方法
回答  YU-TANG WEB  - 04/11/13(土) 6:16 -

引用なし
パスワード
   おはようございます、YU-TANG です。

> 主キー情報を取得する方法をご存知の方がいらっしゃれば教えて下さい。

Index オブジェクトの Primary プロパティが True であれば、主キー
インデックスとみなせます。
主キー インデックスが特定できれば、Fields コレクションから主キー
フィールドも特定できるのでは。

DAO のヘルプに詳しい解説や使用例が載っていますので、まずはそちらを
確認してみてはいかがでしょうか。
・ツリー全体表示

【3852】ACCESS 主キー情報取得方法
質問  Wハリケーン  - 04/11/13(土) 4:18 -

引用なし
パスワード
   VBAからACCESSの各テーブルのフィールド内容を取得したいのですが、
主キー情報を取得する方法をご存知の方がいらっしゃれば教えて下さい。

参考までに・・
データ型などの各フィールド情報は下記方法で参照できるのですが、
主キー情報がどこに保存されているのか、探し出す事ができません。

 Dim dbs As Database
 Dim tdf As TableDef
 Dim fld As Field
 Dim prp As Property

 Set dbs = CurrentDb

 Set tdf = dbs.TableDefs("テーブル名")
 Set fld = tdf.Fields("フィールド名")

 On Error Resume Next '実行時エラーを無視

 For Each prp In fld.Properties
  Debug.Print prp.Name, prp.Value
 Next prp

ご存知の方がいらっしゃいましたらご教授下さい。
・ツリー全体表示

【3851】Re:印刷用紙設定
回答  Gin_II  - 04/11/12(金) 16:59 -

引用なし
パスワード
   バージョンは?

Access2002以降なら、

Microsoft Access 2002 でのプリンタ設定のプログラミング
http://www.microsoft.com/japan/msdn/officedev/officeXP/odc_acc10_printers.asp#odc_acc10_printers_introduction

こちらが使えると思いますけど。
・ツリー全体表示

【3850】Re:サブフォームへの移動
回答  ひろしま  - 04/11/12(金) 12:41 -

引用なし
パスワード
   ▼ひろしま さん:
>すみません。今会社なのでしっかりした説明ができませんので、一応例をあげておきます。
>Dim i as long'サブフォームデータ数
>i=Froms("メインフォーム")("サブフォーム").form.recordset.recordcount
>msgbox "現在サブフォームのデータ数は" & i & "件です。"
>
>サブフォーム名のあとに.formがないと、そのテキストボックスやタブには移動できません。
>今のところ説明は以上です。

すみません。回答した人からです。
Froms⇒Forms です。申し訳ありません。
・ツリー全体表示

【3849】Re:サブフォームへの移動
回答  ひろしま  - 04/11/12(金) 12:37 -

引用なし
パスワード
   すみません。今会社なのでしっかりした説明ができませんので、一応例をあげておきます。
Dim i as long'サブフォームデータ数
i=Froms("メインフォーム")("サブフォーム").form.recordset.recordcount
msgbox "現在サブフォームのデータ数は" & i & "件です。"

サブフォーム名のあとに.formがないと、そのテキストボックスやタブには移動できません。
今のところ説明は以上です。
・ツリー全体表示

【3848】Re:印刷用紙設定
回答  かみちゃん  - 04/11/12(金) 12:37 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>プリンターの機種が変わると用紙設定が初期化(A4設定になる)されてしまいます。印刷の都度用紙設定できるようにしたいのですが、どのようにすればできますか?

Access自体に用紙サイズを設定するプロパティ等はないので、プリンタやパソコンが変わると、用紙設定は既定値に戻ってしまいます。

以下のURLを参考にされてはいかがですか?
http://www.mahoutsukaino.com/ac/ac2000/monooki/insatsu2000.htm
・ツリー全体表示

【3847】印刷用紙設定
質問  PLC  - 04/11/12(金) 10:09 -

引用なし
パスワード
   プリンターの機種が変わると用紙設定が初期化(A4設定になる)されてしまいます。印刷の都度用紙設定できるようにしたいのですが、どのようにすればできますか?
・ツリー全体表示

【3846】Re:コンボボックスの設定について
回答  クロ  - 04/11/12(金) 8:41 -

引用なし
パスワード
   抽出されるリストにどのフィールドが必要なのか分かりませんが、
取りあえずSQLはこんな感じでいいのでしょうか?
※「年」フィールドはないので「発送年」としてます。
※Checkフィールドはどのテーブルにあるのか分からないので省略
 してます。

 Dim stDocName As String
 Dim strSQL As String
 Dim strWhere As String
 
 stDocName = "frm個人情報リスト"
 
 strSQL = "SELECT tbl年賀.顧客ID," & _
        " tbl個人情報.顧客名," & _
        " tbl個人情報.顧客住所," & _
        " tbl年賀.担当ID" & _
        ", tbl年賀.発送年" & _
        " FROM tbl年賀 LEFT JOIN tbl個人情報" & _
        " ON tbl年賀.顧客ID = tbl個人情報.顧客ID"

 strWhere = ""
  
 If Not IsNull(Me.担当) Then
 strWhere = strWhere & " and tbl年賀.担当ID = " & Me.担当
 End If
 
 If Not IsNull(Me.年) Then
 strWhere = strWhere & " and tbl年賀.発送年 = " & Me.年
 End If
 
 <<省略>>
・ツリー全体表示

【3845】Re:クエリを保存する方法
質問  yamada  - 04/11/11(木) 18:27 -

引用なし
パスワード
   ▼Gin_II さん:
>>VBAマクロで動的に作成したSQLクエリを保存したいのですが、
>
>ここはどうやっているのでしょうか?
>DAO の CreateQueryDef あたりをヘルプで確認してください。

素早い対応、昨日に引き続きありがとうございます。
DAOのヘルプを参照しました、とりあえず、CreateQueryDefを使ってみようかと
思います。

自分は

Dim testCon As DAO.Database
Dim testRsac As DAO.Recordset
Dim testQuery As String,param As String

/***********クエリ作成*************/
testQuery = "select....where A =" & param
Set testRs = testCon.OpenRecordset(testQuery, dbOpenSnapshot)
/*********************************/
のようにしています。やり方自体が違うのでしょうか?
この後に別のボタンを押すとExcelへエクスポートさせようとしています。
上記で作成したクエリを使えればと思ったので、
クエリ欄に'test1'のように作成できればと思い、お伺いしました。

説明不足で申し訳ありませんでした。

  
・ツリー全体表示

【3844】Re:コンボボックスの設定について
質問  Kirin  - 04/11/11(木) 17:49 -

引用なし
パスワード
   ▼クロ さん:
回答、有難うございます。

>strWhere = strWhere & " and 担当ID = " & Me.担当
に直したところ、[tbl個人情報]上の[担当]フィールドを条件に検索ができるようになりました。

ですが、今行ないたいのは、
[tbl個人情報]上の[担当]から顧客リストをひっぱってくるのではなく、
[tbl年賀]上での[担当]フィールドから、例えば「04年にA担当が年賀状を出した顧客のリスト」をひっぱってきたいと思っています。
この場合、[tbl年賀]上の[担当]は、また別に[tbl年賀担当者]とでもして、担当者リストを作った方が良いのでしょうか?
ですが、ひっぱってくる顧客の個人情報は[tbl個人情報]に入っています。

今の[tbl年賀]の組み立てを再度記載します。
-------------------------------------------------------------
[tbl年賀]テーブル([発送ID]が主キー)
[発送ID][顧客ID][担当ID][発送年]
⇒[担当ID][tbl年賀]と、[担当ID][tbl担当者]はりレーション
 [顧客ID][tbl年賀]と、[顧客ID][tbl個人情報]はりレーションを結び、[tbl年賀]を作る時にルックアップウィザードを使いました。
--------------------------------------------------------------
何度も申し訳ございませんが、どうぞ宜しくお願い致します。
・ツリー全体表示

【3843】Re:クエリを保存する方法
回答  Gin_II  - 04/11/11(木) 16:44 -

引用なし
パスワード
   >VBAマクロで動的に作成したSQLクエリを保存したいのですが、

ここはどうやっているのでしょうか?
DAO の CreateQueryDef あたりをヘルプで確認してください。
・ツリー全体表示

【3842】クエリを保存する方法
質問  yamada  - 04/11/11(木) 16:37 -

引用なし
パスワード
   いつもお世話になっておりますyamadaです。

accessを使っていてわからないことがあったので、質問したいと思います。
VBAマクロで動的に作成したSQLクエリを保存したいのですが、そのような
関数はありますか? リファレンスを調べたのですが、調べ方が甘いのか
出てきません。クエリで作成したクエリを使用する方法があるので
保存もできるのかなと疑問に思いました。

関数以外に、このような方法でクエリを保存できる等があれば教えてください。
よろしくお願いします。
・ツリー全体表示

【3841】Re:関数についてですが
お礼  yamada  - 04/11/11(木) 16:30 -

引用なし
パスワード
   ▼Gin_II さん:
>>select a,b,c と項目があったら、a,b,cの列を表示したいのですが
>>aの列しかリストには出てきませんでした。
>
>リストボックスのプロパティが間違っているのでは?
>
>Access2002からは、AddItem も使えるとは思いますけど。
>
プロパティを確認したところ、無事出力されました。
今、使用しているのは2000なんですよ><

長々とありがとうございました。とても助かりました。
・ツリー全体表示

【3840】Re:コンボボックスの設定について
回答  クロ  - 04/11/11(木) 13:15 -

引用なし
パスワード
   >>[担当]コンボボックスのプロパティで「連結列」が何か
>⇒連結列は1です。

この通りならMe.担当(コンボボックス)に表示されているものが
担当者名でも1列目を引いてくるので...

<<省略>>
If Not IsNull(Me.担当) Then
 strWhere = strWhere & " and 担当 = " & Me.担当
End If
<<省略>>

の部分は

strWhere = strWhere & " and 担当ID = " & Me.担当

では?
・ツリー全体表示

【3839】Re:コンボボックスの設定について
発言  Kirin  - 04/11/11(木) 13:09 -

引用なし
パスワード
   ▼クロ さん:
有難うございます。

>[担当]コンボボックスのプロパティで「連結列」が何か
⇒連結列は1です。
>[tbl個人情報]]テーブルにある担当関係のフィールドは
⇒「担当ID(数値型)」で設定しています。

各テーブルのリレーションを、どう生かせば欲しい条件が出てくるのかが分からず、四苦八苦しております。
どうぞ宜しくお願い致します。
・ツリー全体表示

【3838】Re:コンボボックスの設定について
発言  クロ  - 04/11/11(木) 11:46 -

引用なし
パスワード
   [担当]コンボボックスのプロパティで「連結列」が何かと
[tbl個人情報]]テーブルにある担当関係のフィールドは
「担当(氏名/テキスト型)」「担当ID(数値型)」の何れか
を教えてください。
・ツリー全体表示

【3837】Re:関数についてですが
回答  Gin_II  - 04/11/10(水) 23:58 -

引用なし
パスワード
   >select a,b,c と項目があったら、a,b,cの列を表示したいのですが
>aの列しかリストには出てきませんでした。

リストボックスのプロパティが間違っているのでは?


>addItem等があればいいのですが、無いようですので・・・

Access2002からは、AddItem も使えるとは思いますけど。
・ツリー全体表示

【3836】コンボボックスの設定について
質問  Kirin  - 04/11/10(水) 17:55 -

引用なし
パスワード
   今、顧客データベースを作成しています。
個人情報を蓄積する「tbl個人情報」と、検索の為の「frm検索」フォームと、入力の為の「frm情報入力」フォームが、メインとなっています。
これ以外に、「tbl年賀」テーブルと「tbl担当者」テーブルを持っていて、下のようなリレーションで結ばれています。

[tbl個人情報]]テーブル([顧客ID]が主キー)
[顧客ID][顧客名][顧客住所][・・・etc]

[tbl担当者]テーブル([担当ID]が主キー)
[担当ID][名前]

[tbl年賀]テーブル([発送ID]が主キー)
[発送ID][顧客ID][担当ID][発送年]
⇒[担当ID][tbl年賀]と、[担当ID][tbl担当者]はりレーション
 [顧客ID][tbl年賀]と、[顧客ID][tbl個人情報]はりレーションを結び、[tbl年賀]を作る時にルックアップウィザードを使いました。

今、[frm検索」で、[tbl年賀]から、[担当]と[発送年]をコンボボックスにし、例えば「04年に担当Aさんが発送したリスト」を[tbl個人情報]から取り出して、
[frm個人情報表示]フォームに表示させたいと思っています。

ここで、[担当]コンボボックスのプロパティの「データ」/「値集合ソース」に、
SELECT [tbl担当].[担当ID], [tbl担当].[担当] FROM [tbl担当]
とすると、コンボの値には、確かに担当の名前が表示され、選ぶことはできますが、最終的に抽出をするSQLを作った時に、何の関係もなくなってしまいそうです。

[frm検索]フォームには、最終的に選んだ条件を表示させる為の「cmd表示」コマンドボタンを置き、イベントプロシージャで以下のSQLを書きましたが、
動作させると「パラメータ」値を聞いてきてエラーになり、欲しい値が抽出されません。
下に、書いてみた文をペーストしてみます。

コンボの設定と、SQLの書き方が間違っていると思うのですが、どう間違っているのか、どう直したらいいのかが全く分かりません。
長くなってしまって申し訳ありませんが、宜しくお願い致します。
-------------------------------------------------------------
Private Sub cmd表示_Click()
On Error GoTo Err_cmd表示_Click

 Dim stDocName As String
 Dim strSQL As String
 Dim strWhere As String
 
 stDocName = "frm個人情報リスト"
 
 strSQL = "select * from tbl個人情報"
 
 strWhere = ""
  
 If Not IsNull(Me.担当) Then
 strWhere = strWhere & " and 担当 = " & Me.担当
 End If
 
 If Not IsNull(Me.年) Then
 strWhere = strWhere & " and 年 = " & Me.年
 End If
 
 If Me.Check = True Then
 strWhere = strWhere & " and Check = True "
 End If
 
 If strWhere <> "" Then
 
 strWhere = Mid(strWhere, 6)
 
 If DCount("*", "[tbl個人情報]", strWhere) = 0 Then
  MsgBox ("該当データはありません。")
  Exit Sub
 End If
 
 strSQL = strSQL & " WHERE(( " & strWhere & " ));"
 
 End If
 
 DoCmd.Echo False, "個人情報リスト準備中・・・"
 
 DoCmd.OpenForm stDocName, , , , acFormReadOnly
 DoCmd.SelectObject acForm, stDocName
 DoCmd.Minimize
 
 Forms(stDocName).RecordSource = strSQL
 DoCmd.SelectObject acForm, stDocName
 DoCmd.Maximize
 
 DoCmd.Echo True
 
Exit_cmd表示_Click:
 Exit Sub
 -----------------------------------------------------------------------

Err_cmd表示_Click:
 MsgBox Err.Description
 Resume Exit_cmd表示_Click
 
 End Sub
・ツリー全体表示

【3835】Re:関数についてですが
質問  yamada  - 04/11/10(水) 17:52 -

引用なし
パスワード
   ▼Gin_II さん:
>リンクテーブルとしてあるのなら、普通に FROM で指定できるはずです。

無事できました、テーブル名が違っていたみたいです(汗)
教えていただいたように、リストボックスにRowSourceでSQLを指定し表示させた
のですが、ひとつの列しか表示されませんでした。
select a,b,c と項目があったら、a,b,cの列を表示したいのですが
aの列しかリストには出てきませんでした。
RowSourceを仕様すると、こういうことは出来ないのでしょうか?
addItem等があればいいのですが、無いようですので・・・
よろしければ助言をいただければと思います。
・ツリー全体表示

【3834】Re:関数についてですが
回答  Gin_II  - 04/11/10(水) 14:18 -

引用なし
パスワード
   >fromで テーブルのリンクでリンクしたテーブルA,B,Cを指定できるのでしょうか?

リンクテーブルとしてあるのなら、普通に FROM で指定できるはずです。
・ツリー全体表示

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