過去の桐井戸端BBS (桐ver.8)
10368 「主キー項目は未定義にできません」のエラーが出る カカロット 2001/03/18-18:55
定義項目が一緒なA表(新しいデーターが入っている)とB表(古いデーターが入っている)が有ります。
データーがA表の方が新しいので、B表のデーターを全行削除して、A表から読み込みをしようとしたら、
「KD1698 主キー項目は未定義にできません。」とコメントが出てしまいます。
その後「途中まで有効にしますか」と出てしまうのですけど、どうしたら全部読み込みができるのでしょうか?
もし、知っている方がいらっしゃいましたら、よろしくお願いいたします。

10375 Re:主キー項目は未定義にできません TAKA 2001/03/18-22:58
記事番号10368へのコメント
はずしてるかもしれませんがたぶん表整理をすれば大丈夫と思います。
10378 Re:主キー項目は未定義にできません 郷司 2001/03/18-23:14
記事番号10368へのコメント
カカロットさんこんばんは。

>ど、どうしたら全部読み込みができるのでしょうか?

主キー 云々についてはわかりませんので、詳しい方に解説をしていただくとして
「どうしたら全部読み込みができるのか」ですが、全部読み込むというのは、定義項目が一緒のようですし、
バックアップとして使うことと同じですかね?
外してたらごめんなさい。
それならば、ファイルの複写でA表をB表にすれば簡単かな です。
10380 Re:主キー項目は未定義にできません 佐田 守弘 2001/03/19-01:23
記事番号10368へのコメント
カカロットさん
状況で分からない部分が1つあります。
それは、主キー項目の値が本当に未定義でないかです。
だとしたらエラーメッセージの通りです。
つまり、B表の主キーに設定してある項目が、A表では未定義になっているために、B表に読み込んだ時に
その値が未定義であるというエラーです。
ですから、この点をまず確認して下さい。

●主キーとは
このエラーを理解するには、主キーが何であるかを知る必要があります。
更新できる結合表を作るには、表に主キーを設定し、参照整合性を設定しなければなりません。
主キーとは、そのレコードを特定するための項目で、社員名簿であれば社員番号、
商品台帳であれば商品コードの様な項目を指定します。
これはちょうど野球選手の背番号の様なものだと思っても良いでしょう。
そして、背番号の付いていない選手がいない様に、あるいは「名無しの権兵衛さん」がいない様に、
主キー項目は未定義であってはなりません。
なぜなら未定義ではレコードが唯一に指定できなくなるからです。

佐田守弘(KS-00119)
10385 Re:主キー項目は未定義にできません HERB 2001/03/19-13:21
記事番号10368へのコメント
カカロットさん、HERBです。

コメントからでは詳しい状況が解りません、思いついたことをコメントします。

> A表(新しいデーターが入っている)と
> B表(古いデーターが入っている)が有ります。

双方ともカカロットさんご自身で表定義から作成された表ですか、他の方が作成された表をコピーしてお使いでしょうか、
表定義から新規作成された表であれば主キーの設定もご自身でされたのでしょうか?
古いB表にも主キーが設定されていますか、桐は全行削除しても画面に見えなくなるだけで、データは残っています、
試しに行復活を行ってみてください、削除したデータを復活することができます、
主キーを設定している表に読み込みを行う場合、削除されたデータが残っているとエラーの原因となるようです、
TAKAさんの言うように表整理をやってみてください。

> データーがA表の方が新しいので、B表のデーターを全行削除して
> 、A表から読み込みをしようとしたら、「KD1698 主キー項目は
> 未定義にできません。」とコメントが出てしまいます。その後「途
> 中まで有効にしますか」と出てしまうのですけど、どうしたら全部
> 読み込みができるのでしょうか?

B表の主キーを解除して読み込んでもだめですか、
主キーが設定してある表は別の表と参照整合性を設定しているはずです、
主キー表を削除すると参照している表のデータも削除されてしまいます、
そのあたりもエラーの原因ではないでしょうか、
B表に主キーが設定してあっても、参照表との設定が間違っていいれば矛盾してきます、
参照表の設定が解らないのでこれ以上は解りません、
参照表を確認してみてください、
主キーを設定するとその項目は自動的に重複禁止となり、削除等で矛盾が発生する原因ともなります。

主キーの設定を解除するには先に、参照表の参照キーの設定を解除しないとできません、
解除しようとしてもエラーメッセージがでます、
思い当たる表の参照キー、設定を確認してみてください。

販売管理で言うと、顧客情報、受注管理、商品明細、と言った表を参照整合性で設定します、
主キーは顧客番号、受注番号、参照キーとして商品明細表の受注番号、返品となった場合
受注管理表の該当行を削除します、
商品明細表の同じ受注番号行も同時に削除されます、参照整合を取っていないと商品明細表のデータは削除されません。

私自身の復習のためコメントしてみました、間違っていたらご指摘下さい。

戻る