• 締切済み

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")とはなんなんでしょうか?存在しませんとでます。

みんなの回答

noname#140971
noname#140971
回答No.2

補足: <改善点2=改悪>もありえます。

noname#140971
noname#140971
回答No.1

同じテーブルとフォームを作成してテストしてみました。 <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]を記録していること。 お昼ですので、これ位に・・・。

ayusukemx8
質問者

お礼

今夜ためしてみます

関連するQ&A

  • Access2007でフォームのリストボックスから

    Access2007でフォームのリストボックスから選択したフィールドをクエリしたいのですが どうもうまくいきません。 テーブル数は10個くらいあり、全テーブルのフィールド数は100超あります。 テーブル1に一意のIDがあり、それに対して他のテーブルとリレーションシップで繋いでいます。 1.全テーブルのフィールドリストを作るのに「全テーブルクエリ」を作成 (テーブル1.IDのLEFT JOINでくっつけています。) 2.全テーブルクエリのコピーを作成し、リストから選択したフィールドのみを表示 3.選択した全フィールドのデータにNull以外のデータのみを表示するようフィルターをかける 以下、作成したVBAですが、実行すると、3.がうまく動いてくれず、Null値も表示してしまいます。 しかし、エラーは出ません。 フィルター適用になっていますが、最後のフィールドにフィルターマークが出ているだけで 実際はかかっていません。。 ========== Option Compare Database Option Explicit Dim dbs As Database Dim qdf As QueryDef Dim IDX As Long 'リストのインデックス用 Dim i As Integer Dim F_name() As String Dim strDate As String '現時刻取得 Dim Path As String Public Sub 抽出_Click() Set dbs = Application.CurrentDb strDate = Format(Now, "_mmdd_hh:mm") If Me.リスト.ItemsSelected.Count = 0 Then MsgBox "抽出する項目を選択してください。" Exit Sub Else Application.DoCmd.CopyObject , "抽出結果" & strDate, acQuery, "全テーブルクエリ" Set qdf = dbs.QueryDefs("抽出結果" & strDate) For IDX = 1 To Me.リスト.ListCount Let qdf.Fields(Me.リスト.ItemData(IDX - 1)) _ .Properties("ColumnHidden").Value = Not (Me.リスト.Selected(IDX - 1)) Next End If DoCmd.OpenQuery "抽出結果" & strDate ReDim F_name(qdf.Fields.Count) For i = 1 To qdf.Fields.Count F_name(i - 1) = qdf.Fields(i - 1).Name If qdf.Fields(F_name(i - 1)).Properties("ColumnHidden").Value = True Then '項目が非表示の場合何もしない Else       'Null以外のデータを抽出 DoCmd.ApplyFilter "抽出結果" & strDate, "('" & F_name(i - 1) & "') Is Not Null" End If Next i dbs.Close Set qdf = Nothing Set dbs = Nothing End Sub ============== ですが、違うやり方があるのではないか・・と1週間くらい悩んでおります。 やりたいことは、 (1)まず100個以上あるフィールドをフォームのフィールドリストから選定。 (2)選定したフィールドのデータにNullまたは長さ0の値があればその行ごと非表示にする。 この2つです。 とりかかってから1カ月以上経ちます。。 お知恵をお貸しください!!!

  • フォームのテキストボックスに一番新しいテーブルの値を入れるには?

    こんにちは、VBA初心者です。アクセス2000を使用してます。 現在、フォームのテキストボックス(年月度)の初期値に、DMAXでテーブルにある(年月度)の値を入れてます。 過去の年月度を入れる時は、手入力で変更してるのですが、続けて入力したい場合、DMAXになってるので、初期値が一番新しい(年月度)になってしまいます。 これを、前回入力した(年月度)を初期値にするには、どうしたらいいでしょうか? Private Sub Form_Current() Dim dbs As Database Dim rst As Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("年月度マスター", dbOpenDynaset) If IsNull(Me![年月度]) Then Me![年月度] = DMax("年月度", "データ") End If If Me![データID] = 0 Then Me!データID = rst![マスターデータID] + 1 rst.Edit rst![マスターデータID] = Me!データID rst.Update rst.Close End If End Sub

  • Access97のフォーム(リストボックス)について

    Access97のフォームについてです。リストボックスで複数選択設定した場合,その選択項目をテーブルに反映させる方法を教えて下さい。

  • ACCESS2000VBAでエラー「型が一致しません」

    ACCESS2000で、フォーム上にボタンを作り、そのボタンをクリック時に 以下のイベント プロシージャを実行させています。 Dim dbs As Database Dim rst As Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("採番_相談者") Dim Number rst.MoveFirst Number = rst!相談者番号 Number = Number + 1 Me.相談者NO = Number '相談者NOはフォーム上のテキストボックスです。 で上記 Set rst = dbs.OpenRecordset("採番_相談者") の所で、「実行時エラー 13 型が一致しません」とエラーになります。 テーブル:採番_相談者は、オートナンバー型のIDフィールドと相談者番号という7桁のテキスト型で ”1000001”が入っています。(ちなみに、数値型に変えても同じエラーでした。) 詳しい方教えてください。お願いします。

  • Access 日報管理する データベース作成しています。

    テーブルAに次のフィールドがあります。 作業日付 作業項目 メモ 作業時間 ログインID グループ名 ログインIDとグループ名は別のフォームからのデータを表示しています。 (非連結) テーブルAはフォームAで入力しています。 レコードに非連結のログインIDとグループを保存していきたいのですが, SQLとかVBAとかいろいろ調べてやっていますが, うまく出来ません。 Public Sub aiu() Dim db As Database, rst As Recordset Set db = CurrentDb Set rst = db.OpenRecordset("TテーブルA", dbOpenTable, dbAppendOnly) With rst .AddNew ![ログインID] = Forms![FテーブルA]![ログインID] '---ログイン時 ![グループ3] = Forms![FテーブルA]![グループ名] '---ログイン時 ![作業日] = Forms![F日報メイン].[埋め込み25]![作業日付] ![項目No.] = Forms![F日報メイン].[埋め込み25]![作業項目] ![メモ] = Forms![F日報メイン].[埋め込み25]![メモ] ![作業時間] = Forms![F日報メイン].[埋め込み25]![作業時間] .Update End With rst.Close db.Close Set db = Nothing End Sub いろいろ調べていますがどうしても出来ません。 申し訳ありませんがどうか教えて下さい。

  • アクセスのテーブルとフォームのリンク

    アクセスのテーブルにコンボボックスのルックアップ機能を使って、データに緋もづくIDの値を入力しています。例えば、1:玩具、2:生活雑貨などのデータで、テーブル上には玩具、生活雑貨などの値が表示されていますが、キー項目としては1,2のID値が使われています。 この項目をフォームで表すと、フォーム上には玩具、生活雑貨などの値ではなく、ID値1、2などが表示されてしまいます。フォームで選択しなおしてあげると、その値は正常に保存されテーブル側にも玩具、生活雑貨などの値が正しく表示されています。 テーブル上、フォーム上ともにID値ではなく、項目値(玩具など)を表示するようにしたいのですが、これはどこかの設定が間違っているのでしょうか。 ご存知の方教えていただけないでしょうか。

  • Accessのフォームについて教えて下さい

    Access 2010のフォームについてお教え下さい。 テーブルにはテーブル名T1、フィールド「ID」、「Price」というテキストボックス。2フィールドがあります。 テーブルの各データは、 ID,Price 001,100 002,200 003,300 フォームにはにフォーム名F1、「cmb」というコンボボックスと、「price」というテキストボックスが配置されています。 「cmb」のデータは値集合ソースで、「SELECT T1.ID FROM T1;」と指定しています。 「cmb」で選択したデータのプライスを「Price」テキストボックスに表示したいと思います。 例えば、「001」を選択したら、「100」と表示されるようにしたいと思います。 色々調べているのですが、どうやってやるのかわかりません。どのように実現したらよろしいでしょうか? よろしくお願いいたします。

  • フォームの内容をテーブルに保存

    Access2000を使っており以下のような処理を行いたいと思っております。 お力添え何卒宜しくお願いいたします。 ■処理内容 電話で注文を受ける際に、お客様から言われた商品番号を画面に入力→検索をすると、その商品内容が画面に表示される。 上記の処理は出来ております。 そして画面に表示された内容を、【保存】ボタンを押すことで履歴として残す。 という処理を行いたいと思っております。 ※テーブル・フォームの構成 ------------------------------------------------------------------- T_product ←商品基本情報テーブル  ├id ←商品ID  ├price ←商品価格  ├memo ←商品詳細  └photo ←商品画像格納用 T_phistory ←注文履歴保存用テーブル  ├phid ←オートナンバー  ├oder_no ←オーダーNo  ├product_id ←商品ID  ├price ←商品価格  └data ←注文日時 F_SOGO ←フォーム ←検索を行うフォーム F_SUB ←サブフォーム ←詳細を表示するフォーム ------------------------------------------------------------------- F_SOGO にある非連結テキストボックス serch_id に商品番号を入れて検索ボタンを押すと サブフォーム F_SUB に商品情報が表示される。 表示される内容は、 T_product から商品IDをキーにして、商品価格、商品詳細、画像を表示します。 また、F_SOGO には非連結テキストボックス oder_id を作り 規定値に =Now() 書式に yymmddhhnnss として 2011年12月24日 14時04分05秒だと 111224140405 と入るようになっており そこまではいいのですが、その結果を 仮に F_SOGOに【保存】というボタンを作り 押すと T_phistory に新規で oder_no に 非連結テキストボックス oder_id の 111224140405 を product_id に F_SUB の id price に F_SUB の price を追加したいのですが、できません。 自分で調べた結果、 Private Sub 保存_Click() Dim Rst As DAO.Recordset Set Rst = CurrentDb.OpenRecordset("T_phistory", dbOpenTable) With Rst .AddNew .oder_no = Me.oder_id .product_id = F_SUB.id .price = F_SUB.price .Update End With End Sub としてみましたが全くです。 何卒宜しくお願いいたします。

  • Accessコンボボックスとテキストボックス連携

    Access初心者です。よろしくお願い致します。 コンボボックスとテキストボックスの連携がうまくいかずに苦戦しています。 Accessオブジェクト <テーブル>  T_住所録   ∟ID、名前、住所、電話番号、アドレス  T_住所確認テーブル   ∟名前、住所 <クエリ>  Q_ラベル_住所録  Q_住所確認テーブル  Q_入力_住所確認テーブル <フォーム>  F_入力_住所確認テーブル   ∟コンボボックス(名前)、テキストボックス(住所) とあり、 「Q_住所確認テーブル」では、 「T_住所録:名前」=「T_住所確認テーブル:名前」 「T_住所録:住所」=「T_住所確認テーブル:住所」 を、つなげてあります。 フォームの「F_入力_住所確認テーブル」では、コンボボックスをクリックすると名前が選択でき、選択するとその名前の人の住所がテキストボックスに表示されるようにしたいのですがうまくできません。 ネットや書籍などを見ていろいろ試したのですが、ことごとく失敗しています。 「Me」とかダメでした。 ExcelのVBAは経験があるのですが、Accessはデータベースを少々編集した程度なので知識は浅いです。 なのでとても初歩的な質問かもしれませんが、どなたかご教授いただけますと幸いです。 とても勝手ながら、すごく急いでいて、どうにかしたいともがいているのですがどうにもならず焦っています。どうぞよろしくお願い致します。

  • Accessのリストボックスを使って抽出

    抽出用のフォームを作成しているのですが、その中にリストボックスがあり、何も選択しなかった場合は、すべての項目が表示される様にしたいと思っております。自分なりに色々と調べたのですが、どうしても希望の動作になりません。どの様にすれば良いのか教えて頂けないでしょうか? Access2003を使用しております。 Form-A(メインフォーム名)←テーブルAを元に作成(項目名同じ) 番号(主キー)、氏名、性別、A1、A2・・・ A1、A2は、する・しないのどちらかを入力。 Form-B(サブフォーム名)←テーブルBを元に作成(項目名同じ) ID(主キー)、番号、担当、訪問日、次回訪問日、期間 担当は、値集合タイプ:テーブル/クエリ、値集合ソース:テーブルあ(フィールドは担当のみ)5名程の名前を登録しし、リストボックスにて選択できる様にしています。 現在、下記の様な抽出用のフォームがあります。 Form-抽出(抽出用フォーム名) A1(チェックボックス) A2(チェックボックス) 担当(リストボックス:値集合タイプ:テーブル/クエリ、値集合ソース:テーブルあを設定) [OK]ボタンを押すと抽出(クエリQにて条件を設定)する様にしています。 クエリQ(テーブルA、テーブルBを元に作成) 番号(主キー)、氏名、性別、A1、A2、ID(主キー)、番号、担当、訪問日、次回訪問日、期間 現在設定しているのは、 A1の抽出条件:IIf([forms]![Form-抽出]![A1]=True,True,False) A2の抽出条件:IIf([forms]![Form-抽出]![A2]=True,True,False) 担当の抽出条件:[Forms]![Form-抽出]![担当リストボックス] 訪問日の抽出条件(複数情報がある為、最近の訪問日のデータのみ対象となる様にしています。):DMax("訪問日","テーブルB","[テーブルB]![番号] ='" & [テーブルB]![番号] & "' And 訪問日 <Date()") 今の設定ですと、担当を選択しなかった場合、何も抽出されてきません。 これを、すべて表示出来る様にしたいのが希望です。 Access初心者の為、説明がわかりづらかったり情報が足りないかもしれませんが、すぐに補足致しますので、どうぞよろしくお願い致します。