- ベストアンサー
Accessでの抽出方法を教えてください。
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
【確認とVBの提示】 以下のVBコードを書いて実行すると添付図のような結果を得ました。このようなVBコードで宜しいのかどうかは判りませんので、コード中で使用している関数の紹介は割愛します。 なお、元テーブルと同じ構造のテーブルを別途用意して、それに結果をINSERTしています。また、テストテーブルの列名は以下のようです。 ・No.--->ID ・個有名--->name ・属名------>family Private Sub コマンド0_Click() Dim H As Integer Dim I As Integer Dim N As Integer Dim M As Integer Dim intTotal As Integer Dim strDatas(1) As String ' DBSelect()の戻り値を格納する配列 Dim strNames() As String ' 列[name]の値を格納する配列 Dim strFamilies() As String ' 列[family]の値を格納する配列 Dim strSQL As String ' SQL文をセットする変数 DoCmd.SetWarnings (False) ' ---------------------------------------- ' name 一覧を取得する ' ---------------------------------------- strSQL = "SELECT name FROM FamilyList ORDER BY ID" strDatas(0) = DBSelect(strSQL, ",", ",") strSQL = "SELECT family FROM FamilyList ORDER BY ID" strDatas(1) = DBSelect(strSQL, ",", ",") If Len(strDatas(0) & "") Then strNames() = Split(PackList(strDatas(0) & "," & strDatas(1)), ",") Else strNames() = Split(PackList(strDatas(1)), ",") End If ' ---------------------------------------- ' [FamilyList_ALL] をクリアする ' ---------------------------------------- DoCmd.RunSQL "DELETE FROM FamilyList_ALL" ' -------------------------------------------------------- ' テーブル[FamilyList_ALL]に固有名と属名を挿入する ' -------------------------------------------------------- intTotal = UBound(strNames) For I = 0 To intTotal ' ' name に対応する主属名と副属名を取得し配列に代入 ' strFamilies() = Split(GetFamilies(strNames(I)), ",") ' ' テーブル[FamilyList_ALL]の現在の行数を取得 ' N = DBLookup("SELECT COUNT(*) FROM FamilyList_ALL") ' ' For-Next ' M = UBound(strFamilies) For H = 0 To M ' ' テーブル[FamilyList_ALL]に'固有名'対'属名'関係を登録 ' ' 注意1: <個有名=属名> も発生する! ' If Len(strFamilies(H) & "") And strNames(I) <> strFamilies(H) Then N = N + 1 strSQL = "INSERT INTO FamilyList_ALL (ID,name,family)" & _ " VALUES (" & N & ",'" & strNames(I) & "','" & strFamilies(H) & "');" DoCmd.RunSQL strSQL End If Next H Next I DoCmd.SetWarnings (True) End Sub
その他の回答 (11)
- tamu1129
- ベストアンサー率58% (1295/2224)
>画像を添付すれば解っていただけると思い いえ画像付けても言ってる事がさっぱり理解できません テーブルを作成、そのテーブルに NO・項目A・項目Bというフィールドがありデータ入力が済んでいるって所までは理解できます この項目Aまたは項目Bが 魚の固有名称でもう一つが 属 を表しているという事ですよね? この考え方だと、添付している表では合点がいきません 項目Aが固有名称だとしたら、その固有名称の属性は複数にわたるって事なのですか? シロサケを例にすれば、シロサケは属性がギンザケでもありサクラマスでもあるように取れます moco-don さんは質問内容に >族(属)とした固有名(魚名)が対になった と書かれていますが、ぜんぜん対になっていませんよ
- 1
- 2
お礼
ご回答有難うございました。質問内容を理解していただくために工夫したつもりですが、分かり難かったでしょうか。出直したいと思います。