Access VBA質問箱 IV

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

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


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

【5013】Re:クエリ内の合計をさせるには
回答  小僧  - 05/5/12(木) 13:58 -

引用なし
パスワード
   ▼sakaiII さん:
こんにちは。

合計値を作るクエリを作成して、元のクエリとユニオンクエリで結合すると
お望みの結果ができると思われます。

SELECT *
FROM クエリA
UNION ALL
SELECT '' , '', '', Sum(クエリA.金額)
FROM クエリA
GROUP BY '', '', '';

上記はクエリの中でクエリを呼び出しているため、件数によっては
非常に重たい処理になる可能性があります。

できれば合計のSQLはクエリAを呼び出さずに元テーブルから直接指定できれば
処理自体も早くなるかと思われます。
・ツリー全体表示

【5012】Re:リストからの別のフォームへの移動
発言  小僧  - 05/5/12(木) 13:40 -

引用なし
パスワード
   ▼H,T さん:
こんにちは。

ご提示された内容ですと当方には理解し難いので、少し整理させて下さい。

>別のフォームに…

現在「フォーム2」の他に別のフォームが同時に開いていると
いう事で宜しいでしょうか?
もしそうであれば、別のフォーム名もご提示して下さい。

>リストの結果10と20という値を
1つのリストボックスから選択できる値は1つだけだと思うのですが…。

もし2つのリストボックスが存在して、それぞれの値をという事でしたら
2つのリストボックス名のご提示をお願いします。

>別のテキストボックスに移動できるようにしたいのですが・・・・・
どのタイミングで値の移動を行うのでしょうか?
例えば… 1)リストボックスから値が選択された時
       2)別にコマンドボタンを設けて、それが押された時
などなど…
・ツリー全体表示

【5011】クエリ内の合計をさせるには
質問  sakaiII  - 05/5/12(木) 13:20 -

引用なし
パスワード
   お世話になります
 以下のクエリAがあります。
 仕入代金の合計結果を計算させたいのですが、
どうすれば可能になるのでしょうか?

クエリA
製造番号     数量    単価     金額
SKLA-2360     5     300      1500
SMKO-4628     10     620      6200 
XBDF-7906     7     385      2695
                      10395 
⇒上の3レコードはクエリAの結果です。
 10395は合計した値です。クエリの中に合計させる方法は
 わかりませんので、よろしくお願いします。
・ツリー全体表示

【5010】リストからの別のフォームへの移動
質問  H,T  - 05/5/12(木) 10:34 -

引用なし
パスワード
   フォーム2でリストボックスを作りそのデータの結果を別のフォームのテキストボックスにいれたいのですが、複数ありやり方がわかりません。
 例えば、リストの結果10と20という値をそれぞれ別のテキストボックスに移動できるようにしたいのですが・・・・・
 
・ツリー全体表示

【5009】ありがとうございました
お礼   E-MAIL  - 05/5/11(水) 17:40 -

引用なし
パスワード
   ありがとうございました。
初心者ですので、今後も沢山質問しますのでよろしくお願いします。
・ツリー全体表示

【5008】Re:レコードの検索について
発言  小僧  - 05/5/11(水) 17:40 -

引用なし
パスワード
   ▼爺 さん:
お節介だとは思われますが、気づいた点をいくつか上げさせて頂きます。

>Dim name As String

VBAには「name」というプロパティ(ヘルプでNameで検索すると出て来ると思われます)が
存在するため、誤動作を防ぐためにも違う名前の変数にした方が良いと思われます。

>Dim no As Integer
上記と同じ理由で「Yes」「No」の「No」に間違われる可能性があります。

>name = ([Forms]![F_003Search]![コンボ5])
→ name = ([Forms]![F_003Search]![コンボ5].Value)
>moji = moji & fld & "  "
→ moji = moji & fld.Value & "  "

[コンボ5]、fld は省略された形であるので、[コンボ5]、 fld の何を使いたいのかを
明記するのを癖付けすると良いと思います。

>Set rs = New ADODB.Recordset
>rs.Open

「cn」 に対して行っているのと同様に、「rs」に対しても「Close」「Set rs = Nothing」と
オブジェクトの解放を行いましょう。
コードが終了しても自動的にオブジェクトが解放されるないものが存在する為です。
基本的には「Set」に対して「Nothing」で、「Open」に対して「Close」を行うのが良いと
思われます。

>あります。氏名(1)です。すみませんでした。

テーブルやフィールドの名前に記号をつけるのも避けたほうが無難かもしれません。
仮に「担当者」という名前のフィールドですと

>>rs.Find "[担当者] = '" & name & "'", no
>>rs.Find "担当者 = '" & name & "'", no

とどちらでも作動するコードが、氏名(1)ですと

>>rs.Find "[氏名(1)] = '" & name & "'", no
>>rs.Find "氏名(1) = '" & name & "'", no

下の方はエラーとなってしまいます。


「以下は自分だったらたこうする!」というコードです。
Find を用いずに Filter で担当者を抽出しております。

Public Sub 案件検討検索1()

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Dim namae As String
Dim moji As String

  Set cn = Application.CurrentProject.Connection
  Set rs = New ADODB.Recordset

  rs.Open "T_003案件検討", cn, adOpenStatic, adLockReadOnly
  
  namae = [Forms]![F_003Search]![コンボ5].Value

  rs.Filter = "[氏名(1)] = '" & namae & "'"
  
  Do Until rs.EOF
  moji = ""
    For Each fld In rs.Fields
      moji = moji & fld.Value & "  "
    Next
    Debug.Print moji
  rs.MoveNext
  Loop
  
  rs.Close
  cn.Close
  Set rs = Nothing
  Set cn = Nothing
End Sub
・ツリー全体表示

【5007】Re:レコードの検索について
回答  小僧  - 05/5/11(水) 17:35 -

引用なし
パスワード
   ▼爺 さん:
Visual Basicのヘルプはお持ちしょうか?
詳しくはそちらを参照してください。

Find メソッドにも2種類(?)あり、
ADO で使用する Find メソッドとなります。


今回は「T_003案件検討」の「氏名(1)」が変数 name と等しい事が条件となります。
>      氏名(1) = name

1) Find の引数は「"」で括る必要があります。
>     "氏名(1) = name"

2) 氏名(1) を[ ]で括ってフィールドである事を明示的に定義します。
>     "[氏名(1)] = name"

3) name は文字列型なので、「"」か「'」で括る必要があります。
  今回は「"」の括りの中で行うので「'」を使用します。
>     "[氏名(1)] = 'name'"

4) このままですと name は変数扱いにならないため、「"」の外に出します。
>     "[氏名(1)] = '" & name & "'"

うまく説明ができませんが、こんな感じで勘弁して下さい(笑)
・ツリー全体表示

【5006】Re:レコードの検索について
質問   E-MAIL  - 05/5/11(水) 16:49 -

引用なし
パスワード
   ありがとうございました。解決です。
ただ、Findメソッドに関して参考書をみても、この様な記述のしかたが
ありませんでした。なぜ、この様な記述でOKとなるのかまた、Findに関
して、詳しく教えていただきたいのですが・・・。
面倒でなければお願いします。
・ツリー全体表示

【5005】Re:レコードの検索について
回答  小僧  - 05/5/11(水) 16:41 -

引用なし
パスワード
   ▼爺 さん:
すみません。
おかしな所にカンマが残ってしまいました。

>>   rs.Find "担当者 = '" & name, & "'", no

→   rs.Find "[氏名(1)] = '" & name & "'", no

こちらでいかがでしょう?
・ツリー全体表示

【5004】Re:レコードの検索について
質問   E-MAIL  - 05/5/11(水) 16:33 -

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

>T_003案件検討のフィールドにおそらく名前に相当するフィールドが
>存在すると思われるのですが…。

あります。氏名(1)です。すみませんでした。

>   rs.Find "担当者 = '" & name, & "'", no

二つ目の & でコンパイルエラーとなります。どうすればよいですか?
・ツリー全体表示

【5003】Re:レコードの検索について
回答  小僧  - 05/5/11(水) 16:21 -

引用なし
パスワード
   ▼爺 さん:
こんにちは。

T_003案件検討のフィールドにおそらく名前に相当するフィールドが
存在すると思われるのですが…。

仮に「担当者」とすると

>  rs.Find name, no '←ここでエラーになります。
   rs.Find "担当者 = '" & name, & "'", no

こんな感じに変えるとうまくいくと思うのですがいかがでしょうか?
・ツリー全体表示

【5002】レコードの検索について
質問    - 05/5/11(水) 15:43 -

引用なし
パスワード
   下記のプログラムを実行するとエラーがでて困ってます。
参考書を真似て作ってるので何が悪いのか分かりません。
助けてください。

Public Sub 案件検討検索()

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Dim name As String     '担当者
Dim jyoutai As String    '案件状態(未完了 終了)
Dim datestart As Date    '設計受付日start
Dim dateend As Date     '設計受付日end
Dim no As Integer      '検索開始カレント行
Dim fld As ADODB.Field
Dim moji As String

Set cn = Application.CurrentProject.Connection
Set rs = New ADODB.Recordset
  rs.Source = "T_003案件検討"
  rs.CursorType = adOpenStatic
  rs.ActiveConnection = cn
  rs.Open "T_003案件検討", cn, adOpenStatic, adLockReadOnly
  rs.MoveFirst

name = ([Forms]![F_003Search]![コンボ5]): no = 0

Do While True
  rs.Find name, no '←ここでエラーになります。
  If rs.EOF = True Then Exit Do
  For Each fld In rs.Fields
    moji = moji & fld & "  "
  Next
  Debug.Print moji
  moji = ""
  no = no + 1
Loop

cn.Close
Set cn = Nothing
End Sub
・ツリー全体表示

【5001】Re:レコードのロックについて
お礼  こはる  - 05/5/11(水) 15:39 -

引用なし
パスワード
   ▼ひろのしま さん:
><追加>
>If Datalck=1 Then
> msgbox "現在編集中です。",vbinformation
> Cancel=true
>end if
>とか?
できました。ありがとうございました。
・ツリー全体表示

【5000】Re:メッセージボックスのボタンフォーカス
お礼  Bell  - 05/5/11(水) 15:27 -

引用なし
パスワード
   ▼ひろのしま さん:

ご教授いただきました通り、
”vbDefaultButton2 ”で指定できました。
初歩的な質問にも関わらず、敏速にご回答いただきまして、
ありがとうございました。
・ツリー全体表示

【4999】Re:メッセージボックスのボタンフォーカス
発言  ひろのしま  - 05/5/11(水) 13:02 -

引用なし
パスワード
   それなら、
a = MsgBox("フォームを開きますか?", vbOKCancel + vbQuestion, "確認")

a = MsgBox("フォームを開きますか?", vbOKCancel + vbQuestion + vbDefaultButton2, "確認")
にすればいいです。
vbDefaultButton1〜4は、選択するクリックボタンの数に比例して右に移動していきます。
・ツリー全体表示

【4998】メッセージボックスのボタンフォーカス
質問  Bell  - 05/5/11(水) 12:11 -

引用なし
パスワード
   access初心者ですので、簡単な質問で申し訳ございません。

フォームのコマンドボタンにメッセージを設定したとき、
”Cancel”にフォーカスされるようにしたいのですが可能でしょうか?
どなたかご教授ください。
よろしくお願いします。

a = MsgBox("フォームを開きますか?", vbOKCancel + vbQuestion, "確認")
If a = vbCancel Then
  Exit Sub
End If
・ツリー全体表示

【4997】Re:リンクファイルの削除
回答  あぷる  - 05/5/10(火) 20:25 -

引用なし
パスワード
   ソースが書いてあったので試したところ、
私の環境ではエラーなく削除できました

そのテーブルを開いているとかないですか?
(またはそのテーブルを使ったフォームを開いている)
・ツリー全体表示

【4996】Re:リストボックスの選択解除の線(枠)
回答  あぷる  - 05/5/10(火) 20:19 -

引用なし
パスワード
   ようやく、何のことかわかりました

線が残るのではなく、それはカーソルですよ。
Tabキーで次の項目に移ると消えませんか?

リストボックスにフォーカスが残った状態になっているので、
そう見えるんだと思います。
・ツリー全体表示

【4995】Re:レコードのロックについて
回答  ひろのしま  - 05/5/10(火) 12:46 -

引用なし
パスワード
   <追加>
If Datalck=1 Then
msgbox "現在編集中です。",vbinformation
Cancel=true
end if
とか?
・ツリー全体表示

【4994】Re:レコードのロックについて
回答  ひろのしま  - 05/5/10(火) 12:41 -

引用なし
パスワード
   そこにフォーカスを移動した際、公に宣言された変数に値を入れて、終了したときにリセットする、ってのはどうですか?例えば、
Public DataLck as integer

Private Sub txt_該当テキストボックス_Enter()
DateLck =1
End Sub

Private Sub txt_該当テキストボックス_Exit(Cancel As Integer)
DateLck =0
End Sub

とか。どうですか?
・ツリー全体表示

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