答えてねっとは、
マイクロソフトが運営する
パソコンに関する
Q&Aサイトです。

質問

アクセス2003

製品名:Office製品/Access/2003

現象:知りたい/使い方

今仕事で使用している、エクセルのデータベースをアクセスに移行したいと考えています。
データとしては、文具や医療品などの小さい物品を管理しています。

今ある知識で少しやってみたのですが、もともとの物品の入力単位が「箱」だったり、「個」だったりバラバラなためどのようにアクセスに移行していけば良いか困っています。

ひとつの案としては、単位だけ選べるようにルックアップフィールドが使えるのかと思っておりますが・・・・・明日(22日)の夜までには、知りたいんです!!!ぜひアドバイスを!!!

回答1 (この回答は質問に対する回答です)

  • 投稿ID:A2008223107
  • 投稿日時:2008/09/22 00:39

急いでいる事は判りますが、少し落ち着いて状況を詳しく記載された
方が良いですよ。
まず、フィールドのルックアップ定義の方法が判れば良いですか?
単位は、箱、個、の他どの位の種類がありますか?
物品のテーブルを作成するとして、単位は箱、個を文字として同じ
テーブルに持たせたいのか、物品のテーブルとは別に単位マスターの
様なテーブルを用意して、そこに例えば、
1:箱
2:個
・・・
の様に準備し、物品のテーブルでは1や2などの記号(キー値)を保持する
様な形式にしますか?

あまり種類が多くなくて、前者(文字として同じテーブルに持たせたい)
のであれば、テーブルをデザインで開き、
単位のフィールドの[ルックアップ]タブで表示コントロールに[リストボックス]
又は[コンボボックス]を指定し、値集合タイプに、[値リスト]を指定し、
値集合ソースに、
箱;個
と指定してみて下さい。

後者のようにテーブルを分ける場合ならば、まず単位用のテーブルを用意し
、フィールドを2つ(キー値、単位名)を作成します。
次に表示コントロールに[リストボックス]又は[コンボボックス]を指定し、
値集合タイプに、[テーブル/クエリ]を指定し、
値集合ソースに、単位用のテーブルを指定、列数に2を指定します。

既存のエクセルデータで単位が文字列になっているのでしたら前者の方が
移行は楽ですが、テーブルの正規化と言う意味では後者の方が良いかと思います。

その辺りのデータ構造は、後々変更となると大変な作業になるので最初に
きちんと決めておいた方が良いでしょう。
(大変と言うのは、テーブルの構造変更は容易ですが、付随するクエリー、
フォーム、レポート等の変更は大変と言う意味です)

明日までに知りたいのはルックアップに関してのみですか?、データ移行
(コンバート)も含めてですか?

もし、それが出来たとしても単なるテーブル上のデータのみです。
これをどう利用するのか(フォームで入力する、レポートで印刷する、等)も
併せてきちんと設計する事から始めた方が良いのでは?

  •  

回答2 (この回答は回答1に対する回答です)

  • 投稿ID:A2008223128
  • 投稿日時:2008/09/22 01:40

ありがとうございます。

やはり、僕の頭の中では、後者の方がよいかと感じました。

後々、計算をしていくということであると数値は数値で単位は単位でフィールドを作成したほうがよいですよね?
ちなみに単位は、そうですね〜 10〜20種類くらいでしょうか。

ちなみに、エクセルでは1箱だとか2個だとかもともと同じフィールドに単位まで含まれて入力されているので、それを関数で別々にするということはできますか?
僕の知識では、Left関数とRigth関数を使っていくのかと思いましたが、2桁の場合なんかは困るんですよね。。。。

そうですね。コンバートも含めて教えていただきたいです。

  •  

回答3 (この回答は回答2に対する回答です)

  • 投稿ID:A2008223131
  • 投稿日時:2008/09/22 01:51

ゆうたこ氏

>明日(22日)の夜までには、知りたいんです!!!

ご自分は約束も守らずに回答者には期日を設定するとはあきれてものも言えません。
(参考)
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=140502596571 7/

>ちなみに、エクセルでは1箱だとか2個だとかもともと同じフィールドに単位まで含まれて
>入力されているので、それを関数で別々にするということはできますか?

「箱」や「個」などの単位で終了しているかどうかを関数で判別してやればよいと思います。
具体的な方法はそちらが約束を守っていただけないのでほかの識者の方の回答をお待ちください。

>やはり、僕の頭の中では、後者の方がよいかと感じました。

頭の中に考えがあるのであれば先に提示していただけますか?
同じアドバイスをしても仕方がありませんので。
---
*放置中の質問(一部)
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=220920854002
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=120501844263
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=160667790484
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=160650222486
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=8035265644
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=8034068047
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=100383261059
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=140533206871
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=240912781218
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=140531615076
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=240910441213
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=220827351802
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=240902564418
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=180675276397
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=180653389299
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=120435398461
(以下略)

  •  

回答4 (この回答は回答3に対する回答です)

  • 投稿ID:A2008223155
  • 投稿日時:2008/09/22 02:15

すみません。

1、2年前からこちらのサイトは利用させていただいておりましたが、@解決で閉め切るのあとA回答を締め切るというようなボタンがあることを知りませんでした。ですので、いつも@で操作を終了してしまっていました。
上記の表記していただいた、問題についてはすべて解決済みとさせていただきました。

気を概してしまったことは、本当に申し訳ないです。
以後利用させていただく際は、きちんとしたルールで利用させていただきます。

本当にもうしわけございません。

  •  

回答5 (この回答は回答4に対する回答です)

  • 投稿ID:A2008223165
  • 投稿日時:2008/09/22 03:51

最初に厳しい事を言うようですが、その場を取り繕うだけの行為は
やめて下さい。

指摘されたものについて急遽解決にされたようですが指摘されたもの
のみで、それも単純に閉じただけですね。
多くの回答者が色々と調べてくれたものに対してそれはあまりに失礼です。
せめて、どうなっのか等は少なくとも記載すべきです。
回答締め切りのボタンについて言われていますが、締め切りにしなくとも
結果さえ記載されていないのでは何の説得力もありません。

例えば、 @@Q2008038679@@ の方は最終的に結果がどうなったまで
きちんと報告して下さっています。
勿論そこまでしろとは言いませんが、過去の回答者の中には解決されたか
どうか暫くの間気にかけている人も居ると思いますよ

それと、以前にもいくつかまとめて締め切りにされているものもあり、
以前も何度か指摘されていて「知らなかった」では理屈が通りません。

そして、
> きちんとしたルールで利用させていただきます
ではまずこのページの左にある「禁止事項」位は確認して下さい。

[答えてねっと ルールとお願い]
http://www.kotaete-net.net/Default.aspx?pgid=104
の一番下にある、「機種依存文字」の丸数字文字を使用していませんか?

まぁ、これらの事を意図的にやっているのではなさそうなので本題へ。

まず、フィールドについては当然数値と単位は別にすべきでしょう。
単位数が20もあるならば別テーブルにする/1の後者の方法をとることを
お勧めします。

すみませんが、EXCEL側で、数値+単位となっているデータについて分割する
関数を思いつきません。

別の方法となってしまいますが一例として、マクロを使用する方法を掲示します。

EXCELを開き、[ALT]+[F11]を押し、メニューから[挿入]-[標準モジュール]
を開きます。
右中央に大きく開いたテキスト[(General)の下の辺り]に、次のコードを
コピーして貼り付けます。

Public Function getNum(para As Range) As String
getNum = Trim(Val(para))
End Function

一端EXCELを保存終了して開きなおし、ワークシート画面の空いている列に
次の関数を入力します(数値+単位 が、A1にあるとした場合)。

=VALUE(getnum(A1))
その右のセルに、
=SUBSTITUTE(B11,getnum(A1),"")
を入力します。
これで、数値と単位の抽出ができるかと思います。

あとは、シートの必要な部分をコピーしてAccessのテーブルに貼り付けるか、
Access側からインポートするなりしますが、問題としては/1で後者を
選択したという事であれば単位は文字列ではなくキーでなければ
なりません。
なので、例えば[箱]なら"1"の様に変換しておかないといけませんので、
先程[=SUBSTITUTE(B11,getnum(A1),"")]で抽出した単位文字を、
ExcelのVLookUp関数を利用する等して先にキーに変更しておく必要があります。

ちょっと難しいとは思いますが、出されている情報が少なくピンポイント
での回答が出来ない事と、質問範囲が広すぎて一概に回答できません。

EXCELのデータ整形、データの移行、ルックアップの設定、等一連作業と
あまり多岐に渡る事が判らないのでしたら、まずは色々なWEBサイトを
回るとか本を購入する等して、基礎的な事柄は理解しておくべきかと思いますが。

  •  

答えてねっと

昨日の利用状況


総投稿数 655 件

回答総数 524 件

登録者数 62 人

利用登録ユーザ 1562 人

ゲスト 47480 人

ページビュー 135365

登録済みFAQ 20 件

景品応募サイト

Windows ヘルプと使い方

マイクロソフトドリームスパーク