Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Access 2016)
レコード入力されている値をすべて取得
投稿日時: 19/03/19 20:00:25
投稿者: Manabukunn

いつもお世話になっております。
あるレコードの”商品名”テーブルに商品名が入力されているとします。
こちらに入力されている商品名を利用してコンボボックスを作成したいと考えております。
例えば、商品A、商品B、商品B、商品C、商品D、商品D、商品Eと入力されている場合は
商品A、商品B、商品C、商品D、商品E
と複数入力されているものはまとめて一つとして抽出してコンボボックスを作成したいと
考えております。いろいろと調べてみましたが全くどのようにしてよいかわかりません。
よろしくお願いいたします。

回答
投稿日時: 19/03/20 06:49:07
投稿者: よろずや

SELECT DISTINCT 商品名 FROM テーブル
 
です。

投稿日時: 19/03/20 19:14:26
投稿者: Manabukunn

有難うございます!!
 
Private Sub drugList_Enter()
   Dim myDB As Database
    Dim myRS As DAO.Recordset
    Dim mySQL As String
      
 With Forms!治療薬
        .AllowAdditions = True
     
        .AllowEdits = True
       
End With
 
mySQL = "SELECT DISTINCT 薬剤名 FROM 治療薬"
 
Set myDB = CurrentDb
 
Set myRS = myDB.OpenRecordset(mySQL, dbOpenDynaset)
 
Set Me.drugList.Recordset = myRS
 
End Sub
 
でやりたいことはできました。
 
ただ一つ問題点があります。
そもそもこのフォームは .AllowAdditions = False  .AllowEdits = False
に設定してあります。単票形式(連結化している)なっており新規レコードを見せたくないからです。
しかし、上の
Set Me.drugList.Recordset = myRS
のあとに.AllowEdits = Falseを付け加えるとコンボボックス自体が動かなくなっていします・・・
なにか、.AllowEditsに関係なくコンボボックスを機能させる方法か、また新規レコードを見えなくするその他の方法などあるでしょうか??

投稿日時: 19/03/20 21:44:30
投稿者: Manabukunn

有難うございます。
スナップショットにして確かに新規レコードは見えなくなりました。
次から次へと申し訳ございませんが、
 
Private Sub newRec_Click()
 
Dim dbs As Database
 
Dim rst As Recordset
     
 
With Forms!治療歴
        .AllowAdditions = True
     
        .AllowEdits = True
     
        .AllowDeletions = True
     
End With
     
Set dbs = CurrentDb
 
Set rst = dbs.OpenRecordset("治療歴", dbOpenDynaset)
 
Me.RecordsetType = 0
 
With rst
    .AddNew
     
    !患者ID = Me.patientID_label.Caption
     
    .Update
     
    .Close
   
End With
 
     Forms!治療歴.Requery
      
  
With Forms!治療歴
        .AllowAdditions = False
     
        .AllowEdits = True
         
        .AllowDeletions = False
             
End With
    
End Sub
 
で新規レコードは追加できるのですが問題として新規以外に追加したレコードも編集可能となってしまうのが問題です。また、修正ボタンも追加したいと考えており、新規に追加したレコードだけ、または選択しているレコードだけ編集可能とするようなことは可能でしょうか??

回答
投稿日時: 19/03/21 12:08:37
投稿者: Suzu

Manabukunn さんの引用:
新規以外に追加したレコードも編集可能となってしまうのが問題です。

 
いつだったら、「新規」ではなくるのですか?
 
 
Manabukunn さんの引用:
また、修正ボタンも追加したいと考えており

そのタイミングで ダイナセット にすれば良いでは?
 
 
Manabukunn さんの引用:
新規に追加したレコードだけ、または選択しているレコードだけ編集可能とするようなことは可能でしょうか??

 
「新規」をどう判断するのか。
「選択」と言うのはカレントレコードという意味でしょうか。
 
良くやるのは、
1. 編集対象レコードをワークテーブルにコピー
2. ワークテーブルとフォームを連結
3. 編集終了後に、更新ボタン押すと、ワークテーブルから元のテーブルへ更新
 
でもこれは、複数人が同時使用環境下の場合
複数人が同じレコードを触ったときの制御を自前で用意する必要があり
拝見させていただいているスキルでは厳しいと思います。

投稿日時: 19/03/23 01:53:25
投稿者: Manabukunn

いろいろとありがとうございました。
どうしても修正する場合に選択しているレコード以外は
編集不可にすることができなかったので
新規登録、修正ともに別のフォームを開いて
入力することにしました。
いろいろとありがとうございました。
今後ともよろしくお願いいたします。