Access VBA質問箱 IV

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

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


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

【12172】Re:Access重複クエリに関するご質問
回答  かるびの  - 12/10/15(月) 2:50 -

引用なし
パスワード
    もう日にちが経っているから、見てないかもしれませんが。

>Access重複クエリを用いて、以下のような結果を出したいのですが
>可能でしょうか?

 クエリ結果1のような結果を返すには、次の方法で可能だと思います。

 まず、クエリ1を作ります。
これは、「テーブル」テーブルについて、「日本語」フィールドでグループ化し、
レコード数を数えるという集計クエリです。
なお、レコード数を返すフィールドの名前を仮に「日本語数」とします。

 次に、クエリ2を作ります。
こちらは「英語」フィールドでグループ化して、あとはクエリ1と同様です。
レコード数を返すフィールドの名前を仮に「英語数」とします。

 次に、クエリ3を作ります。
これは、「テーブル」テーブルとクエリ1とを、
「日本語」フィールドで結合させ、
さらに、クエリ2と「英語」フィールドで結合させます。
そして、WHERE句は、日本語数は2以上、かつ、英語数が2以上
とします。

 これでクエリ結果1のような結果が返るはずです。


 クエリ結果2のような結果を返すには、

 クエリ3をベースにして、「日本語」「英語」「判定」の各フィールドでグループ化し、
レコード数を数えるという集計クエリ(クエリ4)を作ります。
なお、レコード数を返すフィールドの名前を仮に「判定数」とします。

 次に、クエリ4と「テーブル」テーブルとを、
「日本語」「英語」「判定」の3フィールドで結合させ、
WHERE句を、判定数が2以上とします。

 これでクエリ結果2のような結果が返ると思います。

 以上、実際に試してはいないので、うまくいかなかったら、ごめんなさい。
・ツリー全体表示

【12171】Re:チェックボックスでテキストボックス...
回答  かるびの  - 12/10/15(月) 2:07 -

引用なし
パスワード
    作成しているフォームは、帳票フォームですか、データシートですか。

 帳票フォームなら、次の方法が考えられます。 

 テキストボックス5〜8を配置します。
 テキストボックス5は、テキストボックス1と同じ大きさにし、
テキストボックス1の上に、テキストボックス1と重なるように配置します。
 テキストボックス6〜8についても、同様に
テキストボックス2〜4の上に重ねて配置します。
 テキストボックス5〜8は、VisibleプロパティをFalseにしておきます。

 イベントプロシージャを使って、
チェックボックス1をTrueにしたら、
テキストボックス5〜8のVisibleプロパティをTrueに設定し、
テキストボックス5〜8のValueプロパティに「欠席」を代入します。
チェックボックス1をFalseにしたら、
テキストボックス5〜8のVisibleプロパティをFalseに設定します。

 チェックボックス2についても、チェックボックス1と同様に操作します。 


 データシートだと、この方法はとれませんね。
 帳票フォームを使い、縦横にコントロールをくっつけ、
データシートみたいな見た目にするよりなさそうです。
・ツリー全体表示

【12170】チェックボックスでテキストボックスに文...
質問  初心 E-MAIL  - 12/10/14(日) 23:28 -

引用なし
パスワード
   すでにテキストボックスのコントロールに関数が入っている場合に、さらに別の関数を入れる方法はありますか?
この度はよろしくお願い致します。 ACCESS2000「表形式」でフォームを作成しており、チェックボックス1(欠席)とチェックボックス2(失格)と
テキストボックス1(実技得点),テキストボックス2(実技合否)、テキストボックス3(学科得点)テキストボックス4(学科合否)を配置しており、チェックボックス1にチェックを入れた場合にはテキストボック ス1〜4に「欠席」という文字を チェックボックス2にチェックを入れた場合、テキストボックス1〜4に「失格」 という文字を出したいのです。 「失格」と「欠席」は同時に起こり得ないので、選択した方でテキストボックス4 つが埋まる形になります。
ただ、テキストボックス1、3の得点のコントロールには入力した得点をテーブルに保存するために「得点」のフィールドが参照されており、テキストボックス2、4の合否コントロールには得点テキストボックスからIIF関数を使用し合否を出し た、クエリフィールドが指定されており、既に使用されております。
このテキストボックスに「欠席」「失格」を表記させるには、このコントロール部分の既にある関数に「&」か「+」にて、新たな関数を後ろに追加しなければなら ないのでしょう?それともチェックボックスだけで完結できるものなのでしょうか ?是非、ご指導をお願い申し上げます。 なお、表形式なのでVBAはプロパティが一つしかない関係上使用は難しいと思いま す。
ほかに、このような代替え案があると言う回答も受け付けておりますので、よろし
くお願い致します
・ツリー全体表示

【12169】Re:ナビゲーションウィンドを非表示した...
回答  chibafsk  - 12/10/4(木) 16:33 -

引用なし
パスワード
   ▼hatena さん:
>直後に非表示にするコードを挿入したらどうでしょうか。
>
>
>  DoCmd.TransferText acLinkDelim,,"XX","XX","C:\XX.txt"
>  'ナビゲーションウィンドウを非表示にする
>  DoCmd.SelectObject acForm, "", True
>  DoCmd.RunCommand acCmdWindowHide
ご回答ありがとうございます。
DoCmd.TransferText acLinkDelim,,"XX","XX","C:\XX.txt"
の直後には聞きませんでした。
次のフォームをOPEN時、以下のソースでナビゲーションを消しました。
DoCmd.SelectObject acForm, "", True
DoCmd.RunCommand acCmdWindowHide
本当にありがとう御座いました。
・ツリー全体表示

【12168】3048:これ以上データベースを開くことは...
質問  kou  - 12/10/3(水) 10:05 -

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

標題の通りのエラーが起こり、原因がわからず質問させて頂きます。

状況ですが、A.mdbからB.mdbのパラメータクエリをパススルーで呼び出し、パラメータを与える行でエラーが起こりました。

Dim qdf As DAO.QueryDef

Set qdf = CurrentDb.CreateQueryDef(クエリ名,パススルーのSQL文)
qdf.Parameters(パラメータ名1) = パラメータ1 ←ここでエラー
qdf.Parameters(パラメータ名2) = パラメータ2

パススルーは、
FROM [;DATABASE=MDBパス;].テーブル名
でMDBとテーブルを指定して行っています。

そのパラメータクエリですが、B.mdbを開いて直接実行すると、ちゃんと結果が表示されます。

怪しい点としましては、そのパラメータクエリが、更に別のパラメータクエリを呼び出している所でしょうか。

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

【12167】Access重複クエリに関するご質問
質問  momo  - 12/9/28(金) 14:39 -

引用なし
パスワード
   Access重複クエリを用いて、以下のような結果を出したいのですが
可能でしょうか?
ご指導の程よろしくお願いいたします。

(例)
<テーブル>
ID  判定  日本語   英語
1   o   テスト   test
2   o   赤     red
3   x   油     apple
4   o   愛     love
5   x   りんご   apple
6   o   日本    Japan
7   o   テスト   test
8   o   りんご   apple
9   x   赤     blue
10   o   テスト   test

<クエリ結果1>
・日本語重複、かつ、英語重複のレコードを、重複単位に並べ替えて抽出したい。
※ID「3」の英語は重複しているが、日本語が重複していないので抽出しない。
※ID「9」の日本語は重複しているが、英語が重複していないので抽出しない。

ID  判定  日本語   英語
1   o   テスト   test
7   o   テスト   test
10   o   テスト   test
5   x   りんご   apple
8   o   りんご   apple

<クエリ結果2>
・クエリ結果1に加えて、判定が「o」、「x」どちらも含まれるレコードだけを抽出したい
※ID「1、7、10」は、判定がすべて「o」の為、抽出しない。


ID  判定  日本語   英語
5   x   りんご   apple
8   o   りんご   apple


以上ご教授の程よろしくお願いいたします。
・ツリー全体表示

【12166】Re:ナビゲーションウィンドを非表示した...
回答  hatena  - 12/9/22(土) 1:07 -

引用なし
パスワード
   直後に非表示にするコードを挿入したらどうでしょうか。


  DoCmd.TransferText acLinkDelim,,"XX","XX","C:\XX.txt"
  'ナビゲーションウィンドウを非表示にする
  DoCmd.SelectObject acForm, "", True
  DoCmd.RunCommand acCmdWindowHide
・ツリー全体表示

【12165】ナビゲーションウィンドを非表示したい。
質問  chibafsk  - 12/9/21(金) 15:42 -

引用なし
パスワード
   Access2010を起動するときに、オプションの選択でナビゲーションウィンドウを非表示しました。
ソースの中にdocmd.tansfertext acLinkdelim,"XX","XX","C:\XX.txtがあります。

上記のソースを実行するとナビゲーションウィンドウが表示してしまいます。

表示しない方法がありませんか?
・ツリー全体表示

【12164】sendobject実行時エラー
質問  佐藤  - 12/9/2(日) 15:36 -

引用なし
パスワード
   お世話になります。初めて質問させて頂きます。

フォーム上のボタンクリック時、イベントプロシジャ内で
Docmd.SendObject acSendNoObjectを実行すると
コマンドまたはアクション'オブジェクトの送信'は無効です
とエラーメッセージが出ます。

環境はWindows7、Access2010ですが
データベースはAccess2000時代に作成したもの(mdb)です。

不思議なのは事務所の5台あるPCのうち1台だけがエラーになります

VBA自体の問題ではないのかもしれませんが、
よろしくお願いいたします
・ツリー全体表示

【12163】Re:数値型フィールドに計算機能が欲しい
回答  hatena  - 12/9/2(日) 8:22 -

引用なし
パスワード
   亀レスご容赦。

下記のようにエラー時 イベントで処理すれば、
テキストボックスで数式を入力して計算結果を表示できます。


Private Sub Form_Error(DataErr As Integer, Response As Integer)
Dim v As Currency
  If DataErr = 2113 And Me.ActiveControl.Name = "マーケット" Then
    Response = acDataErrContinue 'エラーメッセージ抑止
    On Error GoTo E
    v = Eval(Me.マーケット.Text)
    Me.マーケット.Text = v
  End If
  Exit Sub
E:
  Select Case Err
  Case 13, 2431, 2482
    MsgBox "数値または計算式を入力してください。"
  Case 2115
    Resume Next
  Case Else
    MsgBox Err & ": " & Err.Description
  End Select
End Sub
・ツリー全体表示

【12162】Re:数値型フィールドに計算機能が欲しい
お礼  あきやま兄弟 E-MAIL  - 12/8/28(火) 18:50 -

引用なし
パスワード
   ▼pirorin さん:
ご教授ありがとうございました。
返事が遅くなって大変失礼しました。
20日から27日まで夏季休暇で、娘とふたりで旅行に行っておりました。

こんなに簡単な方法があったとは、とても嬉しいです。
なるべく、マウスを使いたくないので、フォーカス取得後にも下記のように組み込みました。

Private Sub マーケット_Click()
Dim ret As Variant
ret = InputBox("式を入力")
Me!マーケット = Eval(ret)

End Sub

Private Sub マーケット_GotFocus()
If Me.マーケット = 0 Then
Dim ret As Variant
ret = InputBox("式を入力", vbOKCancel)
If ret = vbOK Then
Me.運賃.SetFocus
Me!マーケット = Eval(ret)

End If
End If
End Sub

最終目標はカーソル内での四則演算でしたが、お陰様でほぼ目的は達成できたと思います(この質問は、弊社の事務員からの要望で、当初は電卓を組み込みましたが、使いづらいと簡単に却下されてしまいました。今回は自信を持っていきたいと思います)

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

【12161】Re:数値型フィールドに計算機能が欲しい
回答  pirorin  - 12/8/21(火) 0:55 -

引用なし
パスワード
   日にちが経っているので解決されたかもしれませんが、
ややこしい方法ではなく簡単にしようと思えば、


Private Sub 対象フィールド_Click()
Dim ret As Variant

ret = InputBox("式を入力")
Me!対象フィールド = Eval(ret)

End Sub

というのはどうでしょう。エラー処理はしていませんが。
・ツリー全体表示

【12160】数値型フィールドに計算機能が欲しい
質問  あきやま兄弟 E-MAIL  - 12/8/14(火) 14:18 -

引用なし
パスワード
   こんにちは
フォーム上での、数値型(サイズ:長整数型)フィールドで、計算をして結果を格納したい。
入力例)1+2 ENTER キーで3が格納される。
テキスト型であれば、EVAL関数でできますが、数値型でやりたいです。

過去ログのデータ型の変更を試みましたが、どうもうまくできません。
文字列が入力された、というエラーが出ます。

先生方
宜しくお願い申し上げます。
・ツリー全体表示

【12159】コンボボックスについて
質問  MTM  - 12/8/10(金) 19:11 -

引用なし
パスワード
   お世話になります。

Access初心者で色々困っております。
お力添えお願いいたします。

現在コンボボックスを利用したいと考えております。
コンボボックスの設定方法はわかるのですが、
当方考えておりますのは、「入力1」で入力したものを条件に
”SELECT 〜 FROM 〜 WHERE ○○ = 入力1”のSELECT文の結果を
「入力2」にコンボボックス表示したいと考えております。

上記はACCESSだけで実施することは可能なのでしょうか。

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

【12158】エクセルエクスポートについて
質問  ザックス  - 12/7/18(水) 15:37 -

引用なし
パスワード
   Access2003のフォームにボタンを作成し、
クリック時のイベントプロシージャへ下記モジュールを登録し、
エクセルデータでエクスポートしております。

DoCmd Output To acOutputQuery, "クエリ名", acFormatXLS,_
\保存先パス\保存ファイル名.xls

WindowsXP及び、Windows7 Home Premiumでは問題ないのですが、
Windows7 Proではエクスポートできません。※エラー表示はなく、ボタンをクリックしてもなんの動作もしません。
どんな原因が考えられますでしょうか?
・ツリー全体表示

【12157】Re:クエリについて
発言  およよ  - 12/7/13(金) 17:36 -

引用なし
パスワード
   ▼桐野 さん:
> 次のようなテーブル2つがあります。
><テーブル1>
>ID1 氏名
> 1 ああああ
> 2 いいいい
> 3 うううう
> 4 ええええ
> 5 おおおお
>
><テーブル2>
>ID2
>
>テーブル1とテーブル2を使って、クエリで、
>ID2 氏名

テーブル2のフィールドが不足してます。
<テーブル2>
ID2フィールドの他にID1フィールドを作成が必要です。
リレーションシップは参照整合性にチェックを入れ、結合の種類は両方同じ・・・で、そこまで行けば後は分かるでしょう。
・ツリー全体表示

【12156】クエリーの時間計算でVBAを使いたい
質問  たなばた  - 12/7/10(火) 15:49 -

引用なし
パスワード
   フォームで着時刻と終時刻の入力をし、日報テーブルに格納します。その作業日報テーブルを基にクエリで時間計算をしたいと思っています。クエリーの着時刻と終時刻を分で表し(たとえば午前10時着手なら600)そこで終時刻から着時刻を引いて作業時間を計算するものです。作業時間を計算するにあたり休憩時間を考慮するので条件が複雑になります。
例をあげると
 11時40分着手 16:00終了の場合   ≪着時刻<=720 終時刻 >765 AND <=1015≫ならばという条件に当てはまり、計算式が≪終時刻-着時刻-45≫ という式に代入する(45は昼休憩)という方法で215という答えを導き出したいのですが・・・・・
このような条件が15種類あります。
ACESSは少々扱えますがVBAとなるとどこでどういう風にVBAを作成して挿入すればいいのか、さっぱりわかりません。どうかご教示をお願いいたします。
・ツリー全体表示

【12155】Accessフォーム
質問  きり  - 12/7/4(水) 15:19 -

引用なし
パスワード
   Accessでフォーム機能を使って新規レコードを追加する時、入力途中でフォームを閉じる『×』ボタンを押下すると、
必須入力項目が未入力でない限り、レコードの追加がされない方法を教えてください

Accessでフォーム機能を使って新規レコードを追加する時、入力途中でフォームを閉じる『×』ボタンを押下すると、
必須入力項目が未入力でない限り、レコードの追加がされてしまいます。

例えば、

1.質問.accdbの質問用フォームの新規レコードを表示し、右上の『×』ボタンを押下する。
2.質問.accdbの質問用フォームの新規レコードを表示し、いずれかのテキストボックスに入力する。
オートナンバーを表示するIDのテキストボックスに数値が自動挿入された状態を作り、右上の『×』ボタンを押下する。

の場合、1では新規レコードがテーブルに追加されることなくフォームが閉じられます。しかし、2の場合はレコードが追加
されてしまいます。2のような場面で『×』ボタンを押下した時に、レコードの追加をしないようにする方法はありますか?

『×』ボタンが使えないようにして、VBA(コマンドボタン)からフォームを閉じる記述に変更しても、フォームを閉じる行為
がレコード追加の発生根拠なのか、思い通りにいきませんでした。次に、Form_AfterInsert()メソッド内にCanselプロパティ
を使用し、更新処理前に新規レコードの追加をキャンセルしようとしましたが、効果がありませんでした。
現在は、同メソッド内に直前に登録したレコードを削除する「DoCmd.RunCommand acCmdUndo」を記述し、とりあえずの対応を
していますが、いちいち確認ダイアログボックスが表示されるのでストレスフリーには程遠い状態です。
・ツリー全体表示

【12154】サブフォームの初期表示について
質問  Aceess一年生  - 12/6/19(火) 22:51 -

引用なし
パスワード
   サブフォーム上でDBから取得した情報をリスト一覧として
表示したいと考えております。

画面表示は、5行とする予定です。
初期表示は、入力日の昇順(最新の情報が一番下に表示される)
と考えております。
5行目に空白行(入力項目)を表示させる。
5件以上の情報がある場合は、スクロールバーで
閲覧することを考えております。


イメージ(10件ある場合)
-------------------------------------
No|入力日 |商品名|価格|購入日|
-------------------------------------
7 |2012/1/1|A   |10 |2012/4/1
-------------------------------------
8 |2012/1/2|B   |10 |2012/4/1
-----------------------------------
9 |2012/1/3|C   |10 |2012/4/1
-------------------------------------
10|2012/1/4|D   |10 |2012/4/1
-------------------------------------
 |    |   |  |
-------------------------------------
・ツリー全体表示

【12153】データ追加について
質問  亜矢  - 12/6/17(日) 17:20 -

引用なし
パスワード
   よろしくお願いします。
 テーブル名・・品目名
 ID 品目 開始1 終了1 開始2 終了2・・・・開始5 終了5
   ABC  3001  3010  2001  2001     1001 1000
となっています。
 いま コンボ37にデータ(品目)を入れてクリックしたとき
 品目を追加して、開始1から終了5までに”0”を入れるプログラムを
 下記に作りましてが、品目の追加以下ができません。
 どのように書いたらよいか教えて頂きたいと思います。
 Sub コンボ37_Click()
Dim db As Database, rst As Recordset
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim ipt As String
Dim NN, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N0, Nmax

  テキスト55.Value = ""
  テキスト58.Value = ""
 If チェック51.Value = True Then '追加のチェックボックス
  MsgBox コンボ37.Value & "を追加します"
  Set db = CurrentDb
  Set rst = db.OpenRecordset("品目名", dbOpenTable, dbAppendOnly)
   With rst
    .AddNew
     ![品目] = コンボ37.Value
     ![開始1] = 0
     ![終了1] = 0
     ![開始2] = 0
     ![終了2] = 0
     ![開始3] = 0
     ![終了3] = 0
     ![開始4] = 0
     ![終了4] = 0
     ![開始5] = 0
     ![終了5] = 0
     
    .Update
   End With
   rst.Close
   db.Close 
   ・・・
・ツリー全体表示

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