ACCESS総合相談所 その17 【桐にしとけ】

このエントリーをはてなブックマークに追加
940名無しさん@そうだ選挙にいこう:2007/12/19(水) 22:16:57
600万件のデータ(株価の日足)をオートナンバーのあるテーブルにインポートしようとしたんだが、

件数が増えるにつれだんだん遅くなって、最後はフリーズしたような状態になった。

それ以来、オートナンバーは使わないことにした。
941935:2007/12/20(木) 00:29:30
>>937
レスありがとうございます。
色々調べてみると、レコードが無い場合は最適化するとよいとありましたが、
レコードがある場合は最適化するとデータが消えるなど不都合があるんでしょうか?
また、この最適化とはテーブル単位ではなくてデータベース単位で最適化されるようですが、
ひとつのデータベースに複数のテーブルがある場合、そのすべてが最適化されそのその中でレコードが存在する
テーブルに不具合がでたらと思うと怖いんですが、このあたりなどうなんでしょうか?
やはり、レコードが存在する場合は最適化すると駄目なんでしょうか?
レコードがある場合は最適化しない方が良いみたいな表現が気になりましたが、
どういう結果になるのかわからず、対処しかねています。
942名無しさん@そうだ選挙にいこう:2007/12/20(木) 00:29:36
超図解ACCESS2003総合編のサンプルデータ誰か持ってないですか・・・
出版社倒産して手に入らないorz
http://www.x-media.co.jp/xbook/computer/AX23sTY/sample.shtml
持ってたらうpしてくれ。
あるないでは格段に理解度が違うわ・・・。
943名無しさん@そうだ選挙にいこう:2007/12/20(木) 09:44:16
>>941
コピーしてやってみりゃ解るだろ、ボケ!
944名無しさん@そうだ選挙にいこう:2007/12/20(木) 09:57:24
【 システム環境  . 】 WindowsXP SP2, Access2003 SP3
【 検索キーワード 】 Access 2003 MDB 壊れる 不具合 破損

ACCESS2003で新規MDBを作成し、
ツールボックスを挿入しようとするとACCESSが落ちるのですが
こういった経験された方いらっしゃいますか?

ちなみにウイルスセキュリティZEROをいれてから現象が起こるように
なった気もするけど、関係ないですよね

新規MDBの場合だけですし・・
945名無しさん@そうだ選挙にいこう:2007/12/20(木) 21:14:24
アクセス2003を使ってます。
ネットワーク上でファイルを共有したいのですが、
開くと鍵がかかったmdbが表示され共有使用が出来ません。
共有モードにはなっています。
以前の職場なら可能だったのですが・・・。
なにか他に設定が必要でしょうか?
946名無しさん@そうだ選挙にいこう:2007/12/21(金) 00:11:57
>>943
とカスが言っております。
947名無しさん@そうだ選挙にいこう:2007/12/21(金) 13:56:28
エクセルでデータ入力してるファイルがあるとする
それをアクセスに取り込んでいろいろ設定して1週間かかるとする
その間エクセル側にどんどん新しいデータなりマスターになるような新項目も増えたりする

さて、完成したアクセスに対して1週間分のデータやマスターをどうやって取り込む?
もちろん各テーブルのフォーマットは違う
インポートして同じようにリレーション作ってからそれぞれユニオン?
マスター・テーブル間の整合性崩れてわけわかめ

どうやってますか?
948名無しさん@そうだ選挙にいこう:2007/12/21(金) 14:20:05
>>947
最初に取り込んだデータはあくまで開発用とすればいいだろ。
切り替え時に「既存XLSデータの取り込み」〜「初期設定」を行うようにする。


> その間エクセル側にどんどん新しいデータなりマスターになるような新項目も増えたりする

その期間、追加作業を凍結させればいいだろ。
1週間でどれだけのデータになるか分からんが、
新システムに移行してからデータ入力させてもいいんじゃないか?

そもそもマスタとなるような項目が
1週間やそこらで追加されるデータなんて俺には想像つかんよ。
思いつき&場当たりで運用してるとしか思えん。
949名無しさん@そうだ選挙にいこう:2007/12/21(金) 19:31:06
>>948
商品名マスターが
1 いちご
2 りんご
3 バナナ
  ・・・なのが
1週間後
キウイ
みかんが追加されても不思議ではあるまい?
追加分だけインポートして商品マスター2を作ったら
1 キウイ
2 みかん  が出来る

これを統合して
1 いちご
2 りんご
3 バナナ
4 キウイ
5 みかん にしたとしても 取り残された追加分TBの参照先が浮いてしまう
追加作業凍結しか方法はないのかい?
950名無しさん@そうだ選挙にいこう:2007/12/21(金) 20:00:38
それ項目増えてない
951名無しさん@そうだ選挙にいこう:2007/12/21(金) 23:46:39
わざわざ新規テーブル(商品マスター2)にインポートせずに
作ったテーブル(商品マスター)にインポートすりゃいいだろ

って話ではない?
952名無しさん@そうだ選挙にいこう:2007/12/22(土) 11:25:29
>>951
元のエクセルのフォーマットはマスターもクソもない1枚の表なんですけど・・・
アクセス化した場合にそうなるであろうマスターテーブルやデータテーブルの更新をどうやるか?ということです
それともIDを勝手に認識して最適にインポート出来るのですか?

1 いちご                1 いちご
2 りんご           →    2 りんご  
3 バナナ                3 バナナ
                      4 キウイ

いちご  ¥500 3個        1  ¥500 3個
りんご  ¥300 2個        2  ¥300 2個
バナナ  ¥200 5個   →   3  ¥200 5個 
いちご  ¥800 6個        1  ¥800 6個
キウイ  ¥400 2個        4  ¥400 2個
953名無しさん@そうだ選挙にいこう:2007/12/22(土) 11:42:30
2列以降だけインポートしても追加分のIDが未入力になって浮いてしまう
1  ¥500 3個
2  ¥300 2個
3  ¥200 5個 
   ¥800 6個
   ¥400 2個

完成したアクセスの商品マスターからIDを検索してエクセルを置換してからインポートしかないのか
その表にリンクしてるだけのマスターならそれでいいがその先まで追跡は難しい
954名無しさん@そうだ選挙にいこう:2007/12/22(土) 14:59:29
>>952
は?マスターがない?
>>949は別人か?
955名無しさん@そうだ選挙にいこう:2007/12/22(土) 16:50:11
>>947
俺だったら一括でコンバートできるモジュールを作成しておき、切替時に実行するけどな
そのやり方が想像も出来ないのだったら、その案件は他の人に任すか、外注に出したほうが幸せになれるだろう
956名無しさん@そうだ選挙にいこう:2007/12/22(土) 17:46:51
だよなあ
なんで追加分だけインポートなんだよっていう
957名無しさん@そうだ選挙にいこう:2007/12/22(土) 20:37:22
>>955-956
激しく同意。
958名無しさん@そうだ選挙にいこう:2007/12/24(月) 05:35:48
Class 2ch
 Property Let Url(adr)
  my_url = adr
 end Property
 Public sub Method()
  ...
 end sub
end Class


クラスについて調べたのですが、どこも書いていませんでした。
教えてくれませんか。
上記のようなクラスを作成することは、できるのでしょうか?
959名無しさん@そうだ選挙にいこう:2007/12/24(月) 14:22:24
VBAでクラス作るなんて無駄。
960名無しさん@そうだ選挙にいこう:2007/12/24(月) 15:45:08
>>958
できるよ。バリバリ使ってる。
標準モジュールじゃなくクラスモジュールを使います。
詳しくはヘルプか↓を読んでみて。
ttp://msdn.microsoft.com/library/ja/odeopg/html/deovrcustomclassesobjects.asp
961名無しさん@そうだ選挙にいこう:2007/12/24(月) 16:26:01
クラスも使えん奴は上級者ではない。
962名無しさん@そうだ選挙にいこう:2007/12/25(火) 18:29:37
>>960 正直、無理なんだろうと思ってました。
でも、できました。ありがとうございます。
そのリンク先、非常に助かりました。
963名無しさん@そうだ選挙にいこう:2007/12/27(木) 11:13:42
アドバイスをお願いします。

以下の形式のタブ区切りのテキストデータがあります。

フィールドA[タブ]1[改行]
フィールドB[タブ]いいいい[改行]
フィールドC[タブ]999[改行]
フィールドE[タブ]100[改行]
フィールドA[タブ]2[改行]
フィールドB[タブ]わわわわ[改行]
フィールドD[タブ]ああああ[改行]
フィールドE[タブ]555[改行]
  (以下略)

フィールド名とそのデータの区切りはタブ、フィールドの区切りとレコードの区
切りは改行です。
「フィールドA」には必ずユニークなレコードNoが振られています(必須フィール
ド)ので、「フィールドA」がレコードの区切りも兼ねています。
ただし、上の例のように、「フィールドA」以外のフィールドはレコードによって
存在する場合と存在しない場合があります。
フィールドの数は実際には50個程度、レコード数は10万件程度で、上記テキ
ストファイルは100万行程度あります....1レコードあたりのフィールド数は多い
ものもあれば少ないものもあって、平均10個程度ということです。

これをAccessに取り込んで、50個のフィールドからなるテーブル1つを作成し
たいのですが、どうやってやるのが効率的かアドバイスをお願いします。

ちなみに、このテキストデータは元々、何らかのデータベースソフトから出力
したものだと思いますが、作成元に別形式での出力を依頼することはでき
ないため、何とか上記形式のデータをそのまま利用したいという趣旨です。
964名無しさん@そうだ選挙にいこう:2007/12/27(木) 11:46:38
名簿屋の個人情報データだったりして。
965名無しさん@そうだ選挙にいこう:2007/12/27(木) 11:56:44
>>963
そういうのは桐でやったら?
試用版もあるしさぁ
966963:2007/12/27(木) 12:41:49
964さん、965さん コメントありがとうございます。

確かに桐なら、そういった取り込みも割と簡単にできるのはわか
っていますが(最初からそう書いておけばよかったですが、スレ
違いのため、省きました)、データの中にヨーロッパ諸語の文字
が少なからず含まれている関係からUnicodeテキストになってい
るため、今回は桐が使えません。

967名無しさん@そうだ選挙にいこう:2007/12/27(木) 12:42:25
>>963
VBAで処理。
968名無しさん@そうだ選挙にいこう:2007/12/27(木) 15:18:49
>>966=963
エディタで


"[改行]" を ",[改行]" に置換

"[改行]フィールドA" を "[改行][改行]フィールドA" に置換

",[改行]" を "," に置換

"フィールド*[タブ]" を "" に置換


何か漏れがありそうだけど、旨く出来てるかなぁ?
969名無しさん@そうだ選挙にいこう:2007/12/27(木) 19:29:35
>>968
フィールドが存在しないレコードに対応できない
970963 966:2007/12/27(木) 22:16:03
>>968  >>969

969さんご指摘の通り、元々のテキストデータにすべてのフィールドが
入っていれば、簡単なんですが、一部のフィールドしか入っていないの
で、968さんのやり方では対処できないんです。

971名無しさん@そうだ選挙にいこう:2007/12/27(木) 23:15:11
>>963

もしかして森羅万象テーブルの話か。
972名無しさん@そうだ選挙にいこう:2007/12/28(金) 01:54:45
Access2007の新機能、複数値型フィールドって
こういうDQN仕様に対応するためのものなのかもしんない
973名無しさん@そうだ選挙にいこう:2007/12/28(金) 06:13:13
いや、全然違うだろ
974名無しさん@そうだ選挙にいこう:2007/12/28(金) 09:29:47
>>963の説明がハッキリしないが、フィールド名はデータとして落ちてんじゃねーの?
975963:2007/12/28(金) 09:53:44
>>974

> フィールド名はデータとして落ちてんじゃねーの?

はい、その通りです。
963で以下のように書いた通り、フィールド名自体もデータとして書き出されて
いて、その後に(タブをはさんで)そのフィールドのデータが書き出された形式
のテキストファイルです。

> フィールド名とそのデータの区切りはタブ、フィールドの区切りとレコードの区 
> 切りは改行です。 

ですので、そのフィールド名を読んでそれに続くデータをテーブルの各フィール
ドに書き込んでやる作業を繰り返せばよいのですが、Accessでこれを効率よ
くやる方法がないかというのが質問です。

965さんからアドバイスがあった通り、桐ならこれをコマンド一発でできるので
すが、Accessには同様のコマンドはないようです(たぶん)。
 ※桐でできない理由は966で説明済み。

なので、一発は無理にしても、数ステップでできれば....と希望しています。

976名無しさん@そうだ選挙にいこう:2007/12/28(金) 10:48:17
やっぱVBA組むのが一番簡単だと思うけど・・
977名無しさん@そうだ選挙にいこう:2007/12/28(金) 11:07:13
お話の間に失礼します。
今会社なのですが、社長のPCを新しくVISTAを購入したのですが、
ACCESS97がインストールできません。
私はあまりPCに詳しくないのですが、やり方がおかしいのか、それとも
ACCESS97はVISTAに対応していないのか。。

分る方がいらっしゃいましたら、教えていただきたいです。
お願いします。
978名無しさん@そうだ選挙にいこう:2007/12/28(金) 11:50:54
979名無しさん@そうだ選挙にいこう:2007/12/28(金) 12:10:16
>>978
ありがとうございます。
色々検索はしてみたのですが、
UPしてくれた画面までたどりつけませんでした。。

おかげさまで助かりました^^
980名無しさん@そうだ選挙にいこう:2007/12/28(金) 12:31:06
>>978
この表によると Office 2000はVistaに対応していないということになるのか?
981名無しさん@そうだ選挙にいこう:2007/12/28(金) 12:35:10
>>980
表見てわからなけりゃMSKKに電話して訊け。
982名無しさん@そうだ選挙にいこう:2007/12/28(金) 12:35:46
当然です。OfficeXP(2002)すら未サポートです。
983名無しさん@そうだ選挙にいこう:2007/12/28(金) 13:08:53
電話して聞いてみたところ、
VISTAが対応しているのは2007と、93(聞き間違えかも・・)と言われました。
984名無しさん@そうだ選挙にいこう:2007/12/28(金) 13:13:55
Office2000は一応動作するように見えるが、もっと使い込まないとわからんか・・・
985名無しさん@そうだ選挙にいこう:2007/12/28(金) 13:28:54
Office XP以前はサポートが終了しているので、当然、Vistaへの対応もない

http://www.microsoft.com/japan/office/previous/2003/business/lifecycle.mspx#E6
986名無しさん@そうだ選挙にいこう:2007/12/28(金) 20:51:05
>>975
桐は知らんのでもちろん試しもせずに言うんだけど、

そのテキストをUTF-7に変換
桐でasciiテキストとして(シフトJISとかでもいい)読み込む
桐で普通のCSVとして出力する
AccessでUTF-7としてインポート

とかやればでできそうな気がするんだけど、どうかな?
987名無しさん@そうだ選挙にいこう:2007/12/28(金) 21:00:25
988975:2007/12/28(金) 23:52:20
>>986

アドバイスありがとう

だた、桐はまったくUnicodeに対応していないので、
そのやり方では文字化けしてしまって使い物にならない
989名無しさん@そうだ選挙にいこう
もうVBA覚えなきゃにっちもさっちも逝かないところまで来てるのに
絶対に意地でも覚えようとしないやついるよねw