- 締切済み
access リストボックスから文章を選び、テーブルに挿入
> > テーブルとして、 > > テーブル:T_患者 > 患者ID 氏名 > 1 あいうえお > 2 かきくけこ > > テーブル:T_具体策 > 具体策ID 具体策 > 1 観察項目A > 2 観察項目B > 3 観察項目C > 4 観察項目D > 5 援助項目A > 6 援助項目B > > テーブル:T_看護計画 > 患者ID 具体策 > 1 観察項目A > 1 観察項目B > > とあったとします。 > > で、フォームとして > > フォーム:F_看護計画入力 ※メイン/サブフォーム形式 > メインフォーム:患者情報 > サブフォーム:看護計画の情報 > > フォーム:F_看護計画選択>> リストボックス:具体策 > 値集合ソース:SELECT 具体策 FROM T_具体策 > 複数選択:標準 ※これで、複数選択ができるようになります。 > コマンドボタン:追加 > > とあり、F_看護計画入力のコマンドボタンで、F_看護計画選択に画面遷移し、リストボックスで > 選択した後に、コマンドボタン:追加をクリックすると、テーブル:T_看護計画にデータを追加します。 > > コマンドボタン:追加 のクリック時イベント > > Dim dbs As DAO.Database > Dim rst As DAO.Recordset > Dim varItm As Variant > > Set dbs = Application.CurrentDb > Set rst = dbs.OpenRecordset("テーブル12") > > For Each varItm In Me!具体策.ItemsSelected > rst.AddNew > rst!患者ID = Forms!F_看護計画入力!患者ID > rst!具体策 = Me!具体策.ItemData(varItm) > rst.Update > Next varItm > > rst.Close > dbs.Close > Set rst = dbs.OpenRecordset("テーブル12") のところで、エラーが出て、存在しませんとでます。これは何をいみしているのですか? とりあえず、つくってみました。そこで、("テーブル12")とはなんなんでしょうか?存在しませんとでます。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
補足: <改善点2=改悪>もありえます。
同じテーブルとフォームを作成してテストしてみました。 <T_患者> 患者ID___氏名 ________1___鈴木 一郎 ________2___中村 主水 <T_具体策> 具体策ID__具体策 ___________1__観察項目A ___________2__観察項目B ___________3__観察項目C <F_看護計画入力>から入力した結果は以下のようです。 <T_看護計画> 患者ID__具体策ID ________1__1 ________1__2 ________1__3 もちろん、<T_看護計画>は、次のようにサブフォームでは表示。 <T_看護計画> 患者ID__具体策ID ________1__観察項目A ________1__観察項目B ________1__観察項目C さて、<F_看護計画入力>のコードは次のようです。 Private Sub コマンド_コマンド計画追加_Click() Dim I As Integer Dim N As Integer Dim lngKID As Long Dim dbs As DAO.Database Dim rst As DAO.Recordset Set dbs = Application.CurrentDb Set rst = dbs.OpenRecordset("T_看護計画") lngKID = Forms("F_患者").Controls("患者ID") N = Me.具体策.ListCount - 1 For I = 0 To N If Me.具体策.Selected(I) Then With rst .AddNew .Fields("患者ID") = lngKID .Fields("具体策ID") = CLng(Me.具体策.ItemData(I)) .Update End With End If Next I rst.Close dbs.Close Forms("F_患者").Requery End Sub エラーの原因は、両者を比較すると明らかだと思います。 改善点1、Forms("F_患者").Controls("患者ID")の参照を一度だけにしていること。 改善点2、<T_看護計画>では、[具体策ID]を記録していること。 お昼ですので、これ位に・・・。
お礼
今夜ためしてみます