Access VBA質問箱 IV

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

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


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

【3692】Re:カレント インデックスヲ指定してくだ...
発言  こもれび  - 04/10/13(水) 15:36 -

引用なし
パスワード
   こもれびです

状況が今ひとつ掴めないのですが、修復を試みてはいかがでしょうか

「ツール」メニュー --> 「データベースユーティリティ」-->「最適化 修復」
・ツリー全体表示

【3691】Re:フォームの背景について
回答  こもれび  - 04/10/13(水) 15:31 -

引用なし
パスワード
   こもれびです

>自分の希望通りのフォームにするにはVBAのやり方のようなのですが
>どこに下記のような記述をすれば良いのでしょうか?

フォームが起動するとき(開く時)に希望の背景色で開きたいのであれば

・フォームのデザインにて
「フォーム」のプロパティシートで「イベント」タブの「開く時」に
イベントプロシージャを記述します。

Private Sub Form_Open(Cancel As Integer)

' ここに記述

End Sub

>「詳細」・「フォームヘッダー」および「フォームフッター」の
>名前まで変更可能なのですか?

デザインモードで参照できるプロパティシートのドロップダウンボックス
で選択できるコントロールに「詳細」・「フォームヘッダー」および
「フォームフッター」があります。
それらを選択して「その他」タブを見てみましょう。
「名前」がありますのでここを変更します。
・ツリー全体表示

【3690】購入実績を検索するACCESSを作りたい
質問  えなりん  - 04/10/13(水) 14:30 -

引用なし
パスワード
   こんにちは。
是非みなさまのお知恵をお貸しください。

次のようなACCESS(Ver.2000)を作りたいと考えています。
1.取引先cd、品名(部分一致)、仕様(部分一致)で検索し、
 該当レコードを一覧で表示する。
2.該当レコードの品名をクリックすると、その詳細データを表示する。
 購入実績の詳細は常に画面上に開いていて、検索結果の品名をクリックする度に
 その内容が変わるようにしたい。
 さらには、検索結果の品名に条件付書式をつけて、「この品名を選択してるよ」と
 わかるようにしたい。
3.該当データがない場合は、空の詳細を表示し、新規に入力できるようにする。

自分なりに考えて次のように作ってみたのですが。
1.検索用フォーム(帳票)を作り、入力した検索の条件をつなげwhereとし、
 ApplyFilterを使ってみました。
2.詳細用フォーム(単票)を作り、検索用フォームのCurrentイベントで詳細フォームを
 openformするようにしてみました。
3.該当データがない場合として、検索用フォームのCurrentイベント時に
  stDocName = "詳細用フォーム"  
  If IsNull(Forms![検索用フォーム]![一覧オートNO]) Then
     MsgBox "実績ありません", vbQuestion + vbOKOnly
     DoCmd.SelectObject acForm, stDocName
    DoCmd.OpenForm stDocName, , , , acFormAdd
    Else
     stLinkCriteria = "[オートno]=" & Forms![検索用フォーム]![一覧オートNO]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
  End If
 という文を入れてみました。

でも、詳細用フォームがacformaddで開かないのです。gotorecored 〜acnextでもダメでした。

根本的な考え方の変換も含め、どのような処理がいいのか教えてください。
・ツリー全体表示

【3689】Re:データベースオブジェクトの削除方法
回答  Gin_II  - 04/10/13(水) 13:11 -

引用なし
パスワード
   つづりが間違ってますね。。(^^ゞ

SELECT Switch([Type]=1,"Table",
       [Type]=4,"Link_Table",
       [Type]=5,"Query",
       [Type]=6,"Link_Table",
       [Type]=-32761,"Module",
       [Type]=-32764,"Report",
       [Type]=-32766,"Macro",
       [Type]=-32768,"Form") AS OjbType,
    MsysObjects.Name
FROM MsysObjects
WHERE (((Left$([Name],1))<>"~"))
ORDER BY MsysObjects.Name;
・ツリー全体表示

【3688】Re:データベースオブジェクトの削除方法
質問  山田  - 04/10/13(水) 13:01 -

引用なし
パスワード
   ▼Gin_II さん:
>>For Each 〜 Next を用いたフォーム、レポート、マクロ、モジュールの
>>削除方法をご教授ください。宜しくお願いします。
>
>マクロの取得方法はよく分かりません。
>ので、システムテーブルを参照する方法を。
>
>SELECT Swith(MsysObjects.Type=1,"Table",
>       MsysObjects.Type=4,"Link_Table",
>       MsysObjects.Type=5,"Query",
>       MsysObjects.Type=6,"Link_Table",
>       MsysObjects.Type=-32761,"Module",
>       MsysObjects.Type=-32764,"Report",
>       MsysObjects.Type=-32766,"Macro",
>       MsysObjects.Type=-32768,"Form"),
>    MsysObjects.Name
>FROM MsysObjects
>WHERE Left$([Name],1)<>"~"
>ORDER BY MsysObjects.Type, MsysObjects.Name;
>
>上記を、クエリのSQLビューで貼り付けてみてください。

実行しましたが、
「構文エラー、演算子がありませんと出ます。」
ところで、この方法でIF文を用いて、選択した以外の全ての
オブジェクトを削除できるのでしょうか?
・ツリー全体表示

【3687】Re:フォームの背景について
質問  miya  - 04/10/13(水) 11:46 -

引用なし
パスワード
   ▼こもれび さん:
早速の回答ありがとうございます。
       
>こもれびです
>
>フォームの背景色を変更するときは、「フォーム」のプロパティではなく
>フォームの「ヘッダー」・「詳細」・「フッター」各々のプロパティの
>背景色を変更します。
>
>規定値では(恐らく)灰色になっているかと思います。
自分の希望通りのフォームにするにはVBAのやり方のようなのですが
どこに下記のような記述をすれば良いのでしょうか?

>ひょっとしてこのような回答ではなくてVBAで変更するということでしょうか?
>
>例)
>
>  詳細.BackColor = 255 ' 詳細の背景色=赤
>  フォームヘッダー.BackColor = 0 ' フォームヘッダーの背景色=黒
>  フォームフッター.BackColor = 65535 ' フォームフッターの背景色=黄色
>
「詳細」・「フォームヘッダー」および「フォームフッター」の
名前まで変更可能なのですか?
どのようにするのでしょうか?よろしかったら回答願います。
>蛇足ですが、「詳細」・「フォームヘッダー」および「フォームフッター」
>はそれぞれ名前を変更できます。
・ツリー全体表示

【3686】Re:フォームの背景について
回答  こもれび  - 04/10/13(水) 11:32 -

引用なし
パスワード
   こもれびです

フォームの背景色を変更するときは、「フォーム」のプロパティではなく
フォームの「ヘッダー」・「詳細」・「フッター」各々のプロパティの
背景色を変更します。

規定値では(恐らく)灰色になっているかと思います。

ひょっとしてこのような回答ではなくてVBAで変更するということでしょうか?

例)

  詳細.BackColor = 255 ' 詳細の背景色=赤
  フォームヘッダー.BackColor = 0 ' フォームヘッダーの背景色=黒
  フォームフッター.BackColor = 65535 ' フォームフッターの背景色=黄色

蛇足ですが、「詳細」・「フォームヘッダー」および「フォームフッター」
はそれぞれ名前を変更できます。
・ツリー全体表示

【3685】フォームの背景について
質問  miya  - 04/10/13(水) 9:52 -

引用なし
パスワード
   おはようございます。
Access2002を使用しています。
フォームの背景色を変更したいのですが・・・
それぞれフォームの背景色を変えたいのですが
例えば、
1.のフォーム背景色は水色
2.のフォーム背景色は薄緑色
のようにしたいのですが
過去レスも探してはみたのですが初心者なので
わかりません。
回答を頂けたらありがたいです。宜しくお願いします。
・ツリー全体表示

【3684】カレント インデックスヲ指定してくださ...
質問  キヨ  - 04/10/13(水) 9:48 -

引用なし
パスワード
   初心者質問ですみません。Access97で昨日までデータ構築していたのですが、本日続きをやろうと思ったらテーブルに何もデータが見えず、テーブルのタグを指定すると「カレント インデックスを指定してください」と出てしまいます。これってデータが壊れたということなのでしょうか?通常のテーブルに戻す方法を教えてください。
・ツリー全体表示

【3683】Re:ACCESSからDOS命令の実行について
お礼  morik  - 04/10/13(水) 9:31 -

引用なし
パスワード
   ▼Gin_II さん:
返信ありがとうございました。
早速、RunメソッドとGin_IIさんから教えていただいたサイトを拝見して以下のような
コードを書きましたら複数の命令を一つ一つ終了した後に実行することができました。

どうもありがとうございました。

Dim oShell As Object
Set oShell = CreateObject("WScript.Shell")
oShell.Run "" & STR & "", , True
Set oShell = Nothing
・ツリー全体表示

【3682】Re:レポートにて
お礼  チャラ  - 04/10/13(水) 8:19 -

引用なし
パスワード
   ご回答ありがとうございます。

グループ化ですか。
その方向で少し考えます。
本当に、ありがとうございます。
別の考え方がありましたら、引き続き宜しくお願いします。
・ツリー全体表示

【3681】Re:ACCESSからDOS命令の実行について
回答  Gin_II  - 04/10/12(火) 20:22 -

引用なし
パスワード
   >100命令を飛ばしても1つしか結果が返ってこない状態です。

1命令ごとに同期をとる必要があるかと。

>【3650】番のDOSのトピックスを拝見したのですが、
このトピックの参照先に、
----------------------------------------------------------------------
Run メソッドの第 3 引数 WaitOnReturn に True を指定することによって、
同期実行(プロセスの完了を待機)になります。
----------------------------------------------------------------------
とあります。

あとは、どのような処理を、どのようなコードでやろうとしているのかが
分からないと。。。
・ツリー全体表示

【3680】ACCESSからDOS命令の実行について
質問  morik  - 04/10/12(火) 20:07 -

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

いつも初歩的な質問で申し訳ございません。

現在、ACCESS2000でDOSのコマンドをループで連続(100程度)で実行しているのですが、
DOSの命令が完了する前に次の命令が実行されてしまい、100命令を飛ばしても1つしか結果が返ってこない状態です。

【3650】番のDOSのトピックスを拝見したのですが、知識不足のため理解することができませんでした。

DOSの命令を連続で実行し、1つの命令が終わって次の命令に飛ぶような方法は有るのでしょうか?

対処法をご存知の方ご教授お願い致します。
・ツリー全体表示

【3679】Re:レポートにて
発言  こもれび  - 04/10/12(火) 18:09 -

引用なし
パスワード
   こもれびです

1枚の用紙に収める以上限界はあります。
そこで工夫が必要となるのですが、次のことを考えてみましょう
一つはレポートは「デザイン次第」であるということ。
例えば、ページヘッダーに並べるフィールド名も詳細に並べるレコードデータも
必ずしも1行でなければだめということはありません。
試しにフィールド名ラベルを2行に配置換えし、レコードデータも2行に配置換え
してみてください。
ちゃんとその通りに出力されるはずです。
レポートはフォームのような「ビュー」がありませんので、「同じ列」であるとか
「同じ行」ということは考えないほうがいいです。

もう一つは、レポート出力するデータを見直して「グループ」を作れないかどうか
を検討してみることです。

出力するものの内容がよく掴めませんが、例えば続けて出力されるレコードに
必ず同じ「製番」が出るとすれば製番でグループを作り、レポートでは
グループヘッダーを設けて製番以外の項目が1行に収まるようにするなどの
工夫ができるかもしれません。
・ツリー全体表示

【3678】Re:データベースオブジェクトの削除方法
回答  Gin_II  - 04/10/12(火) 17:56 -

引用なし
パスワード
   >For Each 〜 Next を用いたフォーム、レポート、マクロ、モジュールの
>削除方法をご教授ください。宜しくお願いします。

マクロの取得方法はよく分かりません。
ので、システムテーブルを参照する方法を。

SELECT Swith(MsysObjects.Type=1,"Table",
       MsysObjects.Type=4,"Link_Table",
       MsysObjects.Type=5,"Query",
       MsysObjects.Type=6,"Link_Table",
       MsysObjects.Type=-32761,"Module",
       MsysObjects.Type=-32764,"Report",
       MsysObjects.Type=-32766,"Macro",
       MsysObjects.Type=-32768,"Form"),
    MsysObjects.Name
FROM MsysObjects
WHERE Left$([Name],1)<>"~"
ORDER BY MsysObjects.Type, MsysObjects.Name;

上記を、クエリのSQLビューで貼り付けてみてください。
・ツリー全体表示

【3677】レポートにて
質問  チャラ  - 04/10/12(火) 15:22 -

引用なし
パスワード
   MA0401_S(テーブル)
製番
客先名
品名
受注日
受注数
客先納期

PL0401_S(テーブル)
製番
品目コード
品目名
工程コード
仕入先名
予定数
完成数
作業指示番号

日程計画書(クエリ)
製番(抽出条件として、PL0401_Sの製番とMA0401_Sの製番
と同じもの)
品名
受注日
受注数
客先納期
品目コード
品目名
工程コード
仕入先コード
仕入先名
予定数
完成数
作業指示番号

ST0212_S(テーブル)
出庫指示番号
製品コード
作業指示番号
製番

日程計画書(出庫)(クエリ)
日程計画書の作業指示番号とST0212_Sの作業指示番号を
関連付けをし、
製番
品名
受注日
受注数
客先納期
品目コード
品目名
工程コード1:
IIf([工程コード] Is Null,[仕入先コード],[工程コード])
仕入先名
予定数
完成数
作業指示番号
出庫番号
製品コード

として、日程計画書(出庫)のクエリより、レポートを作成
していました。

項目数の関係で、
品目コードと同じ欄に、出庫番号
工程コードと同じ欄に、製品コードを表示させたいと
思っています。

レポートのイメージとしては。
製番 品名 受注日・・品目コード  工程コード
XXXXX QQQ 04/10/01 AAAAAAAAA   DDDDD
           BBBBBBBBB   CCCCC
           12345(出庫番号)444(製品コード)

という感じのイメージです。

クエリ及びレポートにて、このようにすることは可能
でしょうか?

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

【3676】Re:データベースオブジェクトの削除方法
質問  山田  - 04/10/12(火) 7:42 -

引用なし
パスワード
   ▼Gin_II さん:
>>Accessに作成したフォーム、レポート、マクロ、モジュールを
>>すべて削除する方法を教えてください。
>
>テーブル一覧 とか、フォーム一覧 とかなら、For Each 〜 Next で
>できると思いますが、全部となると、システムテーブルを参照した方が
>簡単ですね。
>
>ただ、全部削除するのなら、新規ファイルを作った方が簡単だと思いますが、
>テーブル・クエリだけを残すということなのでしょうか??

回答有難うございます。
下記のコーディングで、テーブルとクエリーの削除は出来たのですが
フォーム、レポート、マクロ、モジュールは同じように出来ません。
formdefsとかreportdefs・・・とかは無いようなので?
なお、実際にはこの中にIF文をいれて、削除しないものは
選択するようにしたいと思っています。

Set db = CurrentDb
For Each tb In db.tabledefs
   DoCmd.DeleteObject acTable, tb.Name
Next
For Each qr In db.querydefs
   DoCmd.DeleteObject acQuery, qr.Name
Next

For Each 〜 Next を用いたフォーム、レポート、マクロ、モジュールの
削除方法をご教授ください。宜しくお願いします。
・ツリー全体表示

【3675】Re:SQL文の内容を変数に・・・
お礼  初心者  - 04/10/11(月) 21:52 -

引用なし
パスワード
   すいません。
rs.MoveNextを使い、解決できました。
ありがとうございました。
また質問の際は、宜しくお願いいたします。

▼こもれび さん:
>こもれびです
>
>SELECT文の結果とはレコードセットをさしているのでしょうか?
>
>例)
>
>Dim cnn as New ADODB.Connection
>Dim rs as New ADODB.Recordset
>Dim mySQL as String
>
>Dim HENSU as String ' <--- 結果を入れる変数
>
>  Set cnn = currentproject.connection
>
>  mySQL = "select tblSample.shimei,tblSample.b,tblSample.c " _
>     & "from tblSample " _
>     & "where ((tblSample.age) = 30);"
>
>  rs.open mySQL,cnn,adOpenkeyset,adLockReadonly
>
>  HENSU = rs!shimei ' 若しくは HENSU = rs.fields("shimei").value
>  
>  rs.close : Set rs = Nothing
>  cnn.close : Set cnn =Nothing
>
>上の例では名簿(を想定)のテーブルから年齢が30歳の方を選択
>(30歳の方が1名しか居ないということを想定)し、その方の名前
>(テーブルのフィールド名:shimei)を変数:HENSUに入れています。
>レコードが複数になるときは Do until 〜 loop を用いて配列に
>入れることもできます。
>
>こんなところでしょうか。
>
>▼初心者 さん:
>>SQLのSELECT文の結果を、VBAの変数の中に入れる方法がわかりません。
>>(実際、テーブルの内容を操作する(insertinto文などで)方法はわかるのですが・・・)
>>こちら初心者ですので、上記質問が可能かもわかりません。
>>可能であれば、ぜひ教えていただきたいです。
>>宜しくお願いします。
・ツリー全体表示

【3674】Re:SQL文の内容を変数に・・・
質問  初心者  - 04/10/11(月) 21:44 -

引用なし
パスワード
   お礼を入れたのに、質問がありました。

>レコードが複数になるときは Do until 〜 loop を用いて配列に
>入れることもできます。
とありましたが、どこにDo until 〜 loop を入れればいいのでしょうか?
私は、下記(こもれびさんの返信を引用させて頂きました)の場所に、入れてみましたが、一件目のデータが繰り返し表示されました。
申し訳ありませんが、教えていただけると助かります。
宜しくお願いいたします。


Dim cnn as New ADODB.Connection
Dim rs as New ADODB.Recordset
Dim mySQL as String

Dim HENSU as String ' <--- 結果を入れる変数

  Set cnn = currentproject.connection

  mySQL = "select tblSample.shimei,tblSample.b,tblSample.c " _
     & "from tblSample " _
    & "where ((tblSample.age) = 30);"

  rs.open mySQL,cnn,adOpenkeyset,adLockReadonly

do until条件

  HENSU = rs!shimei ' 若しくは HENSU = rs.fields("shimei").value

loop  
  rs.close : Set rs = Nothing
  cnn.close : Set cnn =Nothing


▼こもれび さん:
>こもれびです
>
>SELECT文の結果とはレコードセットをさしているのでしょうか?
>
>例)
>
>Dim cnn as New ADODB.Connection
>Dim rs as New ADODB.Recordset
>Dim mySQL as String
>
>Dim HENSU as String ' <--- 結果を入れる変数
>
>  Set cnn = currentproject.connection
>
>  mySQL = "select tblSample.shimei,tblSample.b,tblSample.c " _
>     & "from tblSample " _
>     & "where ((tblSample.age) = 30);"
>
>  rs.open mySQL,cnn,adOpenkeyset,adLockReadonly
>
>  HENSU = rs!shimei ' 若しくは HENSU = rs.fields("shimei").value
>  
>  rs.close : Set rs = Nothing
>  cnn.close : Set cnn =Nothing
>
>上の例では名簿(を想定)のテーブルから年齢が30歳の方を選択
>(30歳の方が1名しか居ないということを想定)し、その方の名前
>(テーブルのフィールド名:shimei)を変数:HENSUに入れています。
>レコードが複数になるときは Do until 〜 loop を用いて配列に
>入れることもできます。
>
>こんなところでしょうか。
・ツリー全体表示

【3673】Re:SQL文の内容を変数に・・・
お礼  初心者  - 04/10/11(月) 21:16 -

引用なし
パスワード
   こもれびさん、Gin_IIさん
ありがとうございました。
今回、こもれびさんの方法でやったところ、目的通りの事が出来ました。
本当にありがとうございました。 
・ツリー全体表示

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