• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accsess レコードの追加)

Accsess レコードの追加

このQ&Aのポイント
  • 質問者はAccsessについて教えてほしいと述べています。
  • 30枚のテーブルがあり、共通フィールドは研究番号です。
  • 情報の研究番号を追加すると、他のテーブルの研究番号も更新されることができるのか質問しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

質問の回答としては、すべてのテーブルに結果のないデータを作る必要はありません。 データ取り出す際にクエリを使って内部結合で適切に結びつけれてやればデータのないところは、ブランクで出すことができます。 (なんとなくこんな感じです。) http://www.pursue.ne.jp/jouhousyo/SQLDoc/select22.html もしも、例がわかりにくいようでしたら、もう少し実例に近いものを探すか作るかしますので、補足などで御指摘ください。 テーブルの構造としては 1. 患者テーブル このテーブルに入れるべきものは、患者番号、生年月日、性別、、、、など患者の基本情報です。 2. 検査実施テーブル このテーブルには、患者番号、初診日、などをいれます。 同一患者番号が将来にわたってサイド検査を受けることがない場合(もしくは同一患者が再度検査を受ける場合には別の患者番号が振られる場合)は初診日はいりませんし、患者テーブルにこのデータを持たせてもかまいません。 (初診日は同じ検査を将来別のタイミングで行った再に、別の日付を入れます--名称は何でもかまいません) 3.検査結果テーブル 患者番号(と初診日等)、検査実施日のほか、検査回等、などを入れておくテーブルです。 検査種別毎に作っても良いです(し、択一式の回答しかありえないなら一つでも管理できると思います)。  4.あと、考えられるテーブルとしては、検査実施状況を管理するテーブルがあるとよいかもしれません。 これは、どの検査をいつ受けて、判定がどうだったかをすべていれられるようなものです。  あとは判定データを作成するためのクエリなり、ロジックを作る必要があります。 これは、検査毎にクエリなどで判断させることもできますが、VBAで関数化してしまうと、楽かもしれません。 良くわからなければ、紙で判定までおこなって手で入力してしまうのもありかもしれません。

tangyifei1977
質問者

お礼

有難うございます。 今日頑張って試してみます。 もし、躓いたらまた聞かせて頂けたらと思います。 本当に本当に有難うございます。

その他の回答 (3)

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.4

No3の方のおっしゃるとおりでした。 フィールド数256、クエリのテーブル数32、クエリの結合数16というリミテーションが有りました。 ということは、アクセスでやる場合は、 1.検査毎にテーブルをつくり、 2.1検査回等(及び判定等)をspssで必要とされる形として、1フィールドとして書き出す。(最悪、クエリでもできますが、VBAのほうが楽かな) を検査ごとにやっていく。 3.2で作った結果をさらにもう一度結合させ最終的に必要な形として、書き出す。 位しか、思いつきません。 2で作るテーブルは、一個まとめておいたほうが無難かもしれません。 excelで管理するのもありですね。 1sheetですべてを管理するとなると、入力間違いの管理や、入力位置までの移動の煩雑さなどが問題になるかも知れませんが、複数シートで作ると、結果を出すのにVBA必須になります。 

tangyifei1977
質問者

お礼

ご回答有難うございます。 一度試してみます。 ちなみに、エクセルで管理すると、データの中の文字データは不便が出ますので、ファイルメーカにしました。 いろいろ教えて頂いて有難うございます。

回答No.3

途中から失礼します。 SPSS も ファイルメーカーも門外漢ですが気になることが。。。 被験者数300人+今後も増加。 検査項目数2000程度。 で、Accessの場合最大でもフィールド数は255までですので テーブルを分割して・・・と考えられたのでしょうけど もし、データ入力が出来るようになったとしても どうやってSPSSに渡すつもりでしょう? Accessのクエリで扱えるフィールド数も255までです。 SPSSにAccessの分割されているテーブルをつなげて読み込む UIでもあれば杞憂にすぎませんけど。 被験者ごとに横一列で2000項目繋がっていないとダメ ならVBAでプログラムを作りCSVファイルに出力するようにするとか EXCELに書き出して手作業で繋げるとかになりそうですよ。 だったら最初からExcelでデータ入力を行った方が・・・という話に なりませんかね。 ここいら辺は大丈夫? どのアプリで行うにせよ最終的にSPSSで読み込みやすいように しないとマズいのでしょうから、きっちりと押さえておかないと骨折り損に。 Accessで・・・はそれが確認できてからだと思います。 行き当たりばったりで進めてゆくと酷い目に遭いそうな気がします。 個人的にはExcelが楽が出来そうな気がします。 門外漢のたわ言かもしれません。ご参考まで。

tangyifei1977
質問者

お礼

ご回答有難うございます。 私的には最初からSPSSに入力したい気分ですが、 問題は、データの中に文字データもある程度含まれているので、エクセルもSPSSも文字データに弱い気がします。特にSPSSは文字が多いと行がずれてしまうことがありましたので、ファイルメーカにすることにしました。 上の一言で行き当たりばったりになってます、でも仕方がないです。実をいうと、私もAccsessに変更するメリットは今のところ全然わかっていないです。そう言われたら一度努力してみないと でも、本当有難うございます。

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

1.VBAですべてのテーブルにデータを追加する 2.クエリですべてのテーブルにデータを追加する などの手順をふめば可能であると思います。 具体的なコーディング等は詳細な情報がないとかけません。 しかし、RDBですので(left join等を使うことによって)、そのようなことをする必要性が(帳票用にブランクデータをわざと作る以外に)思いつきません。   そうしなくてはいけないという事情があるということは、 ・テーブルとリレーションの設計が大きく間違っている ・RDBというものとその機能を全く理解していない のどちらかの可能性が高く、それはとんでもなく非効率的な作業をしなくてはいけない可能性につながると思います。 なんで、全部のテーブルに同じレコード数を持たせたいのかを説明していただければ、どのようにすればそうしなくてよいかの提案はできるかもしれません。

tangyifei1977
質問者

お礼

早速のご回答本当に有難うございます。確かにRDBという機能を全く理解しておりません。今作成しているのは病院患者の心理検査のデータです。なぜすべてのテーブルに同じレコード数を持たせたいかというと、全部で2000項目を超えるデータを最終的に統計ソフトSPSSに持っていきたいためです。現在、ファイルメーカを使っており、一つのテーブルに2000項目を入れております。入力のフォームは30枚に分割しております。一枚ずつエクセルに変換し、また、エクセルからSPSSに変換という作業をしています。すべての数が同じで、さらに番号を振り、SPSSのデータ結合という機能で結合させています。最終的にSPSSに2000項目何百人のデータを一つにまとめます。最初からSPSSにいれればいいかもしれないですが、上司の命令で最初は、ファイルメーカーにして、今度一言でAccsessに変えてと言われ、私はまったくAccsess素人で大変困っております。本当に泣きたい気分です。このようなデータをどのようにすれば分かりやすく、かつ、入力しやすいでしょうか?

tangyifei1977
質問者

補足

データは今現在300人ほどあります。これからも一日10人程度で増えていきます。簡単に説明すると、病院に来た患者さんに3二日分けて30種類の心理検査をさせます。検査の種類も違うので当然項目数も違います。患者さん情報の項目数はすべて同じ。ただし答えていただけない項目もあります。心理検査も標準30種類のうち、時々全部ではなく15種類とかいろいろです。テーブルを検査種類によって分けています。そうすると実際に受けた人数分のデータしかないです。SPSSに移すとき、困ります。唯一共通する項目は患者さん番号で、でもそれは文字型なので、SPSSでキー変数にしても認識できません。文字型を数字にすればいいいかもしれないですが、もうすでに何百のデータがあって、病院側で文字型に振られています。今更直すこともできない。どうすればいいか本当に途方に暮れている感じです。

関連するQ&A