Access VBA質問箱 IV

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

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


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

【12316】カレンダーコントロールを複数のテキスト...
質問  くやっち  - 13/5/22(水) 11:07 -

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

フォームに年月日を手入力ができるテキストボックスを作りました。
このテキストボックスをダブルクリックすることでカレンダーが表示され、更に日付をダブルクリックすることで、該当の日にちが入力できるようにしました。

Private Sub カレンダー_DblClick()
  DoCmd.SelectObject acForm, "サービスフォーム", False
  Forms!サービスフォーム!受注日 = Me.カレンダー.Value
  DoCmd.Close acForm, "カレンダー"
End Sub


しかし、実際のフォームには4つの日付入力欄「受注日」「発注日」「入荷日」「出荷日」があり、私の頭ではカレンダーコントロールを4つ作り(例えばカレンダー1、カレンダー2・・・等)、それぞれに対応させるくらいの力量しかありません。

ひとつのカレンダーコントロールでそれぞれの日付を入力することが可能だと思いますが、簡単にできるようであればご教授ください。

尚、テキストボックスをダブルクリックするとカレンダーが表示される方法は、マクロを使用して開くようにしています。

出張のため返信は遅れますが、よろしくお願いいたします。
・ツリー全体表示

【12315】Re:フォームを開く時のデータ
お礼  くやっち  - 13/5/17(金) 10:40 -

引用なし
パスワード
   hatenaさん

お礼が遅くなり、大変申し訳ありませんでした。

クエリが不要な方法…。
私にはちんぷんかんぷんでした…(汗)

クエリは余計なことで、これが無い方がやっぱりいいということなんだと思いますが、今はまだこちらを試す勇気がありません。。。

もう少し理解してからかなって思っています。
大変貴重な構文をいただきありがとうございました。

もし、時間があったら試してみたいと思います。
・ツリー全体表示

【12314】抽出条件でデータ型が一致しません
質問  トヨタ車命 E-MAIL  - 13/5/3(金) 19:48 -

引用なし
パスワード
   初めまして。行き詰ってしまった為の教えていただきたく投稿しました。

サブフォームをダブルクリックすると、登録した内容がメインフォームの
決まったテーブルに反映?されるという形で住所録を作成しています。

ですが、表題のエラーが出て先に進めてません。
エラーは下記の書式の所で黄色く反転してしまいます。

Private Sub 名前_DblClick(Cancel As Integer)

Dim db As Database
Dim rs As DAO.Recordset
Dim stsql As String

stsql = "select * from T_住所マスター where 名前 =" & Me.名前

Set db = CurrentDb
Set rs = db.OpenRecordset(stsql, dbOpenDynaset) ←ここが黄色くなります

Forms.住所マスター.名前 = rs!名前
Forms.住所マスター.年 = rs!年
Forms.住所マスター.月 = rs!月
Forms.住所マスター.日 = rs!日
Forms.住所マスター.アドレス = rs!アドレス
Forms.住所マスター.〒 = rs!〒
Forms.住所マスター.都道府県 = rs!都道府県
Forms.住所マスター.市町村 = rs!市町村
Forms.住所マスター.住所 = rs!住所
Forms.住所マスター.建物名 = rs!建物名
Forms.住所マスター.TEL1. = rs!TEL1.
Forms.住所マスター.TEL2. = rs!TEL2.
Forms.住所マスター.FAX = rs!FAX
Forms.住所マスター.備考 = rs!備考
Forms.住所マスター.削除 = rs!削除

rs.Close: Set rs = Nothing
db.Close: Set db = Nothing


Forms.住所マスター.更新_コマンド.Visible = True
Forms.住所マスター.更新_コマンド.Enabled = True
Forms.住所マスター.追加_コマンド.Visible = False
Forms.住所マスター.追加_コマンド.Enabled = False

Forms.住所マスター.キャンセル_コマンド.Enabled = True

Forms.住所マスター.印刷_コマンド.Enabled = False

Forms.住所マスター.名前.Enabled = True
Forms.住所マスター.名前.SetFocus

End Sub

過去ログを探してみたのですが、それらしきものが見つかりませんでした。
ほかに検索などもしてみましたが難しかった為よく分かりませんでした。

自分がほぼ初心者というのもあるのですが、分けの分からない事などを
書いてしまっていていましたらすいません。

どなたかヒントなど教えていただけないでしょうか?

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

【12313】リンクテーブルの主キーの設定
質問  よっち  - 13/4/24(水) 14:13 -

引用なし
パスワード
   Access2003を使用しています。

ODBC経由でリンクテーブルを作成するvbaを作成したいのですが、
設定済みの主キーがリンクテーブルに設定されません。
どうすれば、リンク時に主キーが設定できるのでしょうか?
ご教授いただけると助かります。
・ツリー全体表示

【12312】Re:検索フォームでのチェックボックスに...
回答  hatena  - 13/4/23(火) 10:03 -

引用なし
パスワード
   対象のテーブルの名前、フィールド名、データ型等の情報を提示くだい。
・ツリー全体表示

【12311】検索フォームでのチェックボックスによる...
質問  あい  - 13/4/22(月) 5:30 -

引用なし
パスワード
   お世話になります。
先週からテキストや色々なサイトを参考に格闘しているのですが、
VBAの知識がまったくないため、苦戦しています。助けてください!お願いします。

作成したいもの:

【検索フォーム】
チェックボックスが複数あり、該当するものにチェックをして、
検索ボタンを押すと別フォームが立ち上がり、該当のものを表示する

-----------------------------------------------
タイプ
軽 ワゴン バン

メーカー
トヨタ 日産 マツダ SUZUKI 三菱
-----------------------------------------------

上の検索フォームより、タイプを選び(複数選択あり)、
メーカーを選ぶ(複数選択あり)と、
該当車種の詳細がのったフォームが別フォームでたちあがるようにしたいです。

テーブルは1つで、
チェックボックス用のフィールドはすべてYES/NO型に設定してあります。

他のサイトをみながら、クエリを作成してみたのですが、
抽出条件にIIf([forms]![F_検索フォーム]![軽]=True,[forms]![F_検索フォーム]![軽],Null)というものをいれてみたり、単純に-1といれてみたりしたのですが、
どのチェックボックスにチェックをして検索ボタンを押してみても、
すべて同じ結果になってしまいます。

抽出条件のいれかたが悪いのでしょうか、それともVBAが必要なものなのでしょうか?また、その場合、一体どうすれば良いのでしょうか。

VBAはどのような画面から入力するのかもいまいちわかっていないのですが、
うちの部長がとても乗り気で、どうやら簡単にできると思っているらしく、
なんとかしろと言われ、困っています。
(小さい部品会社なので、事務がおらず、自分以外に聞ける人がいません・・・)

月曜の朝から申し訳ありませんが、助けてください!
・ツリー全体表示

【12310】Re:フォームを開く時のデータ
回答  hatena  - 13/4/16(火) 18:24 -

引用なし
パスワード
   うまく、行ったようでなによりです。

一応、おすすめの方法を提示しておきます。

サービスレポートフォーム の「データ入力用」は「いいえ」にしておきます。


「サービスレポート」コマンドボタンのクリック時のイベントプロシージャは下記のようにします。

Private Sub サービスレポート_Click()
On Error GoTo Err_サービスレポート_Click

  Dim stDocName As String
  Dim stLinkCriteria As String

  stDocName = "サービスレポートフォーム"
  DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormAdd

Exit_サービスレポート_Click:
  Exit Sub

Err_サービスレポート_Click:
  MsgBox Err.Description
  Resume Exit_サービスレポート_Click
End Sub

DoCmd.OpenForm の引数に acFormAdd を追加しただけです。

これで、「サービスレポート」コマンドボタンをクリックすると新規レコード入力状態で開きます。

次に、
抽出用のクエリを開いて、SQLビューにします。
WHERE句の条件式をコピーします。

例えば、

SELECT ・・・・・ FROM ・・・・
WHERE フィールド名 = 値;

となっていたら、フィールド名 = 値 の部分をコピーします。

「抽出」コマンドボタンのクリック次のイベントプロシージャ

Private Sub 抽出_Click()
On Error GoTo Err_サービスレポート_Click

  Dim stDocName As String
  Dim stLinkCriteria As String

  stDocName = "サービスレポートフォーム"
  stLinkCriteria = "フィールド名 = 値"
  DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_抽出_Click:
  Exit Sub

Err_抽出_Click:
  MsgBox Err.Description
  Resume Exit_抽出_Click
End Sub

stLinkCriteria に先ほどコピーした条件式を代入してます。

これで「抽出」コマンドボタンをクリックすると指定した条件で抽出されて表示されます。

これでうまくいったらクエリはもう不必要なので削除して結構です。
・ツリー全体表示

【12309】Re:フォームを開く時のデータ
お礼  くやっち  - 13/4/16(火) 17:33 -

引用なし
パスワード
   ▼hatena さん:
ご指導いただきありがとうございました。
色々と試してみたところうまくいきました。


メニューに新しいボタンを配置し、それをマクロに関連付けしました。

マクロでは「フォームを開く」設定にして、フィルタ名に抽出用のクエリを設定したところ表示されるようになりました。

大変お騒がせをいたしました。


ちなみに、hatenaさんの二つ目の確認事項ですが、クエリのフィールド名とテーブルは同じものを使用しています。

前に駄目だったときは、クエリに無いデータ(リレーショナルには存在してますが、下部の欄にはすべてのデータを列記していませんでした)を選択すると#Name?になっていました。
・ツリー全体表示

【12308】Re:フォームを開く時のデータ
回答  hatena  - 13/4/16(火) 17:15 -

引用なし
パスワード
   > hatenaさんのおっしゃっていた、フォームのレコードソースにこのクエリを設定してフォームを開くと、新規の状態で開きます。

フォームをデザインビューで開いて、「データ入力用」プロパティが「はい」になっていると思いますので、「いいえ」にしてください。
これでフォームビューに変更して、既存のレコードが表示されるか確認ください。

> また、クエリで設定しているフォームにデータを入力しようとすると、それ以外のフォームのデータの部分は「#Name?」と表示されます。

レコードソースをクエリに変更する前は、テーブルを設定していたのですよね。
そのテーブルと、クエリのフィールド名はすべて同じになってますか。

まずは、上記の2点を確認ください。
・ツリー全体表示

【12307】Re:フォームを開く時のデータ
質問  くやっち  - 13/4/16(火) 15:00 -

引用なし
パスワード
   ▼くやっち さん:
かるびのさん、hatenaさん。
ご回答ありがとうございました。

Accessのバージョンですが、以前は2000でしたが、現在は2003を使用しています。
十年くらい前に作成したものをリニューアルしています。

メインメニューのフォームにボタンを配置し、イベントプロシージャでフォームが開くようにしていました。

その時のVBは以下のようになっています。

Private Sub サービスレポート_Click()
On Error GoTo Err_サービスレポート_Click

  Dim stDocName As String
  Dim stLinkCriteria As String

  stDocName = "サービスレポートフォーム"
  DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_サービスレポート_Click:
  Exit Sub

Err_サービスレポート_Click:
  MsgBox Err.Description
  Resume Exit_サービスレポート_Click


で、今回新たにメインメニューに「抽出」ボタンを作りました。
テーブルから実際に抽出するクエリも作成しました。
クエリのみを実行すれば、抽出したいデータが表示されます。

しかし、新しく作ったボタンにサービスレポートフォームを開く際に抽出クエリを実行して開かせたいのですが、そもそも手順自体が分かっていないのだと思うのです。

ボタンを押すことでフォームを開き、クエリを実行してそのフォーム上にデータを入れ込むという考え方ではないのでしょうか?


hatenaさんのおっしゃっていた、フォームのレコードソースにこのクエリを設定してフォームを開くと、新規の状態で開きます。
また、クエリで設定しているフォームにデータを入力しようとすると、それ以外のフォームのデータの部分は「#Name?」と表示されます。
これはフォームに含まれる全データをクエリで設定しておく必要があるということでしょうか…。
・ツリー全体表示

【12306】Re:フォームを開く時のデータ
回答  hatena  - 13/4/16(火) 13:08 -

引用なし
パスワード
   Accessのバージョンを明記してください。

>新しくデータを入力する場合に、コマンドボタンを押下し、フォームを開いてデータを入力するようにしています。
>この時、既に入力していたデータは表示されず、新規のデータのみを入れられるようにしています。

コマンドボタンにはマクロが設定してありますか。それともイベントプロシージャですか(ウィザードで作成)。


>今回新たに、ある条件で抽出するクエリを作成しました。
>別のコマンドボタンを押すことで、このクエリが実行され、抽出されたデータのみが入力された状態で、フォームを開きたいのですが、どのようにすればよいでしょうか?
>
>なお、ここで使用するフォームは新たに作るフォームではなく、新しくデータを入力する時に使用しているフォームです。

とりありずは、フォームのレコードソースにこのクエリを設定します。

この状態で、データベースウィンドウからフォームをダブルクリックして開いてみてください。それで抽出された状態で開くか、新規だけで開くか教えて下さい。
・ツリー全体表示

【12305】Re:フォームを開く時のデータ
回答  かるびの  - 13/4/16(火) 1:36 -

引用なし
パスワード
    テーブルのレコードを、フォームに配置したテキストボックスに表示しようという場合、
まずフォームとテーブルが結び付いている必要があります。
 フォームとテーブルとを結び付けるのが、フォームのレコードソース・プロパティです。
 レコードソース・プロパティには、テーブル名やクエリ名を指定します。


 これだけでは、テキストボックスにはレコードの内容は表示されません。
 さらに、フォームとテキストボックスとを結び付ける必要があります。
 この機能を担うのが、テキストボックスのコントロールソース・プロパティです。
 コントロールソース・プロパティには、レコードソースで指定したテーブルやクエリの
フィールド名を指定します。


>別のコマンドボタンを押すことで、このクエリが実行され、抽出されたデータのみが入力された状態で、フォームを開きたいのですが、どのようにすればよいでしょうか?

 したがって、コマンド・ボタンをクリックしたときに、
フォームのレコードソース・プロパティと
テキストボックスなどのコントロールのコントロールソース・プロパティを
書き替えてやればいいです。
 これにはマクロかVBAを使います。
・ツリー全体表示

【12304】フォームを開く時のデータ
質問  くやっち  - 13/4/15(月) 14:04 -

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

新しくデータを入力する場合に、コマンドボタンを押下し、フォームを開いてデータを入力するようにしています。
この時、既に入力していたデータは表示されず、新規のデータのみを入れられるようにしています。

今回新たに、ある条件で抽出するクエリを作成しました。
別のコマンドボタンを押すことで、このクエリが実行され、抽出されたデータのみが入力された状態で、フォームを開きたいのですが、どのようにすればよいでしょうか?

なお、ここで使用するフォームは新たに作るフォームではなく、新しくデータを入力する時に使用しているフォームです。


Access初心者で、右も左もわからない状態です。
よろしくお願いいたします。
・ツリー全体表示

【12303】access2013でワードに差し込みをするには
質問  まくりやよっちゃん  - 13/4/11(木) 13:52 -

引用なし
パスワード
   何年ぶりかに質問させてもらいます。
ご指導の程、よろしくお願いします。

win2000の
access2000で以下のようなVBA

Set wdApp = CreateObject("Word.Application")
      wdApp.Visible = True
    Set wdDoc = wdApp.Documents.Open(Filename:=wdFile, ReadOnly:=True)
    Set wdTable = wdDoc.Tables(1)
    Set wdSelection = wdApp.Selection
    Options.ReplaceSelection = True
    
   wdTable.Cell(Row:=1, Column:=2).Select

    With Selection
      
      .TypeText Text:=rsa!症例番号
      .MoveRight Unit:=wdCell, Count:=2
      .TypeText Text:=rsa!製品名
      .MoveRight Unit:=wdCell, Count:=2
      .TypeText Text:=rsa!販社管理番号
    End With
    wdTable.Cell(Row:=2, Column:=2).Select
    With wdSelection
      .TypeText Text:=rsa!患者イニシャル
      .MoveRight Unit:=wdCell, Count:=2
      .TypeText Text:=rsa!性別
      .MoveRight Unit:=wdCell, Count:=2
      .TypeText Text:=rsa!年齢量
      .MoveRight Unit:=wdCell, Count:=2
      .TypeText Text:=rsb!MedDRAバージョン
    End With
でワードの表の項目にそれぞれ差し込んでいました。
この度、パソコンを買い換えたためwin7、access2013、word2013にへんこうして
ためしてみると、セル(1、2)(2、2)の所にカーソルは移動していますが、
withの中の文字の挿入、セルの移動がうまくいきません。
これの解決策をお教え下さい。よろしくお願いします。
・ツリー全体表示

【12302】ランタイムで読取専用に!
質問  なかじー  - 13/4/9(火) 16:05 -

引用なし
パスワード
   すみませんが、教えて下さい。

Access2007 Rumtimeにてアプリをユーザーへ配布したのですが、
ユーザーPCのアカウント名を変更したら、読取専用で起動してしまいます。
アカウント名を元に戻すと、問題なく動作致します。

何が原因か、どう対処したらよいのかが全くわからず困っています。

どなたか、対処法についてご存じでしたら、ご教授頂けると助かります。

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

【12301】Re:クエリで複数項目の数値の合計をだし...
発言  初心 E-MAIL  - 13/4/3(水) 0:06 -

引用なし
パスワード
   ご回答ありがとうございます
ご返事遅れまして、すいませんでした。
色々立て込んでおり、直ぐに試せない状況ですが,御指導頂いた通りやってみたいと
思います。
結果をまた、御報告させて頂きます。
ありがとうございました
・ツリー全体表示

【12300】Re:レポートのグループ化でページヘッダ...
お礼  manolo  - 13/3/26(火) 6:13 -

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

まだ、最終的な形はできていないのですが、ほぼイメージ通りになりそうです。
大変参考になりました。

本当にありがとうございました。


>下記が参考になると思います。
>
>ページヘッダーに、「先頭値〜最終値」を表示する - hatena chips
>hatenachips.blog34.fc2.com/blog-entry-222.html
・ツリー全体表示

【12299】Re:クエリで複数項目の数値の合計をだし...
回答  かるびの E-MAIL  - 13/3/25(月) 3:55 -

引用なし
パスワード
   >条件を入れたら、書き方が悪いのか、科目別でグループ化されず、区分が2段になって集計されました。
>1段目(科目:国語・区分:1・受験者数:合計)
>2段目(科目:国語・区分:2・受験者数:合計)という具合です。

 ここまで出せているなら、このクエリを元にさらに集計クエリを作って、
各段の受験者数の合計を求めてやればいいのではないですか。


 ところで、2段になったのは、条件式の問題ではないですね。
 集計クエリにおけるグループ化の問題です。
 2段になったのは、科目別かつ区分別でグループ化がされてしまったからでしょう。

 これを1段にしたいなら、「区分」フィールドはグループ化させないようにします。
 私は、クエリ・デザイナはほとんど使えず、クエリは、全てSQL文を書いていますが、
SQL文で言えば、
「区分」フィールドをSQL文のSELECT句から外し、GROUP BY句からも外します。
 区分が1又は2、つまり、3未満のものを集計対象にするのですから、
WHERE句を「WHERE 区分<3」とします。そうすると、
   SELECT 科目ID,Count(受験者ID) AS 受験者計
   FROM 受験者テーブル
   WHERE 区分<3
   GROUP BY 科目ID
というクエリになります。
 クエリ・デザイナでこれがどのように表示されるのかは、
クエリをSQLビューで開き、このSQL文を貼り付けた上、
そのクエリをデザインビューで開いて確認してみてください。

 このクエリを開くと、クエリは4段(国語、数学、英語、体育)となって、
各科目について、区分が1又は2である受験者数が表示されるはずです。

 なお、1科目だけを表示したいというなら、
WHERE句に例えば「科目ID=1」という条件を加えます。
そうすると、WHERE句は「WHERE 区分<3 AND 科目ID=1」となります。
・ツリー全体表示

【12298】Re:クエリで複数項目の数値の合計をだし...
質問  初心 E-MAIL  - 13/3/25(月) 1:04 -

引用なし
パスワード
   かるびの様、いつもお世話になっております。

実は質問の前に、DCount関数でチャレンジしたのですが、おっしゃるとおり、条件式でつまずいてしまい、他の方法がないかと思い質問させて頂いておりました。
条件を入れたら、書き方が悪いのか、科目別でグループ化されず、区分が2段になって集計されました。
1段目(科目:国語・区分:1・受験者数:合計)
2段目(科目:国語・区分:2・受験者数:合計)という具合です。
希望では(科目:国語・区分:1,2・受験者数:合計)としたいのです。

質問文にも書きましたが、最終的にこのクエリを元にした、レポートを作成予定で、等級毎にページを分け、科目毎の集計を出力する予定でおります。

方法2でもやっていたのですが、やはり、任意の区分の合計が出せないと、レポートも科目が2段になってしまうので、こちらも断念したしだいです。
科目でグループ化し、かつ、任意の区分で合計する条件式を御指導いただけないでしょうか?
・ツリー全体表示

【12297】Re:レポートのグループ化でページヘッダ...
回答  hatena  - 13/3/25(月) 0:39 -

引用なし
パスワード
   下記が参考になると思います。

ページヘッダーに、「先頭値〜最終値」を表示する - hatena chips
hatenachips.blog34.fc2.com/blog-entry-222.html
・ツリー全体表示

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