* CSVで読み込んだデータベースがおかしい?? [#ib3288ca]
|RIGHT:|LEFT:|c
|~ページ|[[OpenOffice.org FAQの登録ページ]]|
|~投稿者|polerbear|
|~分類|#listbox3(Q&A,faq03,class)|
|~優先順位|#listbox3(普通,faq03,priority)|
|~状態|#listbox3(完了,faq03,state)|
|~カテゴリー|#listbox3(Base データベース,faq03,category)|
|~投稿日|2006-11-17 17:16:03 (金)|
|~OS|WinXP Pro|
|~依存するページ|faq/3/182|
|~バージョン|#listbox3(2.0,faq03,version)|

** メッセージ [#pab56c39]
|LEFT:|c
|回答ページでは行末に「~」を付加する必要はありません|
新規DB作成ウィザードにて、CSVファイルを読み込ませ編集でひらくと、
以下の現象が必ず発生します。

1.テーブルの編集不可。
 既存フィールドのプロパティ変更や新規フィールドの追加ができない。

2.新規テーブルの追加不可。


(つまり単純にreadonlyになってしまっているっぽいのですが)

3.テーブル内に主キーが存在しない。(で変更もできない)


これって不具合でしょうか?
それとも何か回避する方法が???

よろしくお願いします。

----
***ODBCドライバを使ってください [#w136c27d]
>M.Kamataki (2006-11-17 21:21:20 (金))~
~
質問内容は異なりますが、原因は同じです。以下の質問をご覧になってください。~
~
「CSVファイルにリレーションシップを設定したい」~
http://oooug.jp/faq/index.php?faq%2F3%2F54~

//
***やってみましたが [#o85844c5]
>polerbear (2006-11-18 09:46:13 (土))~
~
状況変わりません....~
~
というか、追加で日本語の文字化け発生。トホホです。~
~
ODBCドライバ側がダメなんでしょうかね?~
「MS text driver」を追加し拡張子をCSV、カンマ区切りと正しく設定したつもりなのですが...~

//
***ODBCでは文字コードの設定が必要です [#fdc038db]
>M.Kamataki (2006-11-19 13:14:35 (日))~
~
Baseのメニューから[編集]−[データベース]−[プロパティ]を選んで表示されたダイアログで、[追加設定]タブを選択、文字セットにお使いの文字コードを設定してください。Windowsなら「日本語(Shift_JIS)」でOKだと思います。~

//
***日本語文字化けは直りました [#d72776de]
>polerbear (2006-11-21 09:22:01 (火))~
~
上記の件、ご教授いただきありがとうございます。~
こんな簡単なこともわからず申し訳ない気持ちでいっぱいです。~
~
とはいえ、質問させていただいた最初の状態に戻ったわけです。~
~
とりあえず目先を変えて、MySQLでDBを作成、これにCSVファイルを読み込んでBASEから接続してみようと思います。~
~
・・・これでダメなら、すごすごとACCESSの世界に帰っていきます(ToT)/~~~~

//
***やりたい目的は何でしょう [#g5cd4e43]
>M.Kamataki (2006-11-21 10:35:24 (火))~
~
>質問させていただいた最初の状態に戻ったわけです。~
完全なリードオンリーではなく、テーブルのデータ更新は可能になったはずです。テーブル定義の変更はできませんが、新規テーブル作成なら、Calcでフィールド名となる1行目だけのCSVファイルを作って、CSVを置くフォルダに保存すれば良いと思います。~
~
>MySQLでDBを作成、これにCSVファイルを読み込んでBASEから接続~
さて、こちらが本来の目的ならば、CSV用Baseファイルと新しいHSQLDB形式(Base標準形式)のBaseファイルのテーブルカテゴリどうしを開いて、テーブルをマウスでHSQLDB形式のほうへ放り込めば、下図のようなダイアログが表示されてCSVのインポートができます。直接Base形式へCSVファイルをインポートする方法(Accessと同じになる)は、すでに要望として上がっていて、2.xのどこかで改善されると思います。早ければ、今年末にリリースされる2.1で実現する可能性もあります。~
~
&attachref(faq4_86_01.png,nolink);~
~
ちょっとわたしが、最初の質問の意味を取り違えたっぽいですね。ごめんなさい。

//
***いえいえ [#q6fae97c]
>polerbear (2006-11-22 11:33:00 (水))~
~
やりたかったのは、あくまでBASE上で全ての作業を行うことです。なので、MySQLでDB作成することにしたのは"逃げ"です。いろいろ触ってみて、今バージョンのBASEは実用というところではなかなか難しいな、と思っています。~
~
"データの更新は可能"の件:~
テーブル定義の変更ができない、というあたりが非常に苦しいです。ですが、別スレにも書きましたがDB設計はMySQLにまかせ、BASEで接続する方法をとることにしたのでひとまずは解決ということにします。~
~
"CSVインポート"の件:~
わざわざ図までご用意いただきありがとうございます。でもすみません、~
~
『CSV用Baseファイルと新しいHSQLDB形式(Base標準形式)のBaseファイルのテーブルカテゴリどうしを開いて、テーブルをマウスでHSQLDB形式のほうへ放り込めば、』~
~
の一節が咀嚼できません。これって、BASEを2重起動する、ということでしょうか、それともMySQLDBに接続しているテーブルの一覧にBASE側で新規テーブルを作成する、ということでしょうか。~
読解力がなくて申し訳ないです。~

//
***Re: いえいえ [#zd9c8cd9]
>M.Kamataki (2006-11-22 14:32:18 (水))~
~
>やりたかったのは、あくまでBASE上で全ての作業を行うことです。~
これは理解したと思っています。~
~
Baseではまず、利用するDBを選ぶことになります。データベースウィザードで、単純に[次へ]、[完了]と2ステップでできるのがHSQLDBです。しかし、データベースウィザードでCSVを選ぶと、HSQLDBにはなりません。CSVを参照するだけのものになります。そこで「テーブルのコピー」(先に紹介した画像)を行って、既存のHSQLDBにテーブルを移す必要がある、ということを説明したつもりでした。わかりにくかったらごめんなさい。~
~
>BASEを2重起動する、ということでしょうか~
CSVを参照するだけのBaseと既存のHSQLDB形式のBaseを2つ起動することになります。別々に起動して、テーブルを右クリックメニューでコピーして、新たに起動したHSQLDB形式のBaseのテーブルカテゴリで貼り付けても、「テーブルのコピー」になります。これはCSVテーブルをインポートする方法ではなく、汎用的なテーブルのコピー方法で、わたしはテーブルの定義を変更する際、安全のため、新規テーブルにデータを移行するときもこの「テーブルのコピー」を使います。~

//
***ありがとうございました [#q40bbcc3]
>polerbear (2006-11-22 15:01:19 (水))~
~
ご丁寧に説明いただき本当にありがとうございました。~
テーブルのコピー、無事できました。~
~
今回の件ではかなり勉強になりました。~
今後ともよろしくお願いします。~

//
***こちらは完了 [#v3c2f8f2]
>M.Kamataki (2006-11-22 21:53:17 (水))~
~
最初に紹介すべき過去のFAQは「テーブルへのCSV形式ファイルの読み込みについて」(faq/3/166)でした。反省。(リンク先の間違い訂正/2007-01-22)~
~
コメントいただきましたので、完了にします。~

//
#article