全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3568
推到 Plurk!
推到 Facebook!

error about a component named primary key already exists

缺席
jacky999910
一般會員


發表:8
回覆:8
積分:3
註冊:2008-05-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-05-21 20:11:13 IP:118.170.xxx.xxx 訂閱
各位前輩大家好,我想請問:
我有一個進貨明細tabel,欄位為進貨編號,產品編號。進貨編號,產品編號設定為主鍵並為可重複索引。以ado作連結並在程式設計階段可讀取相關資料
但在程式執行階段產生 "a component named primary key already exists"的錯誤
以下是網路相關資料http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.database.ado/2003-11/0118.html
但還是不太明白,懇請前輩指導
max5020
資深會員


發表:26
回覆:277
積分:320
註冊:2003-06-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-05-22 10:48:11 IP:59.120.xxx.xxx 訂閱
主鍵不能設為重覆!!
您的CASE,
最好用進貨單號, 項次序號, 做為主鍵
編輯記錄
max5020 重新編輯於 2008-05-22 10:49:25, 註解 無‧
jacky999910
一般會員


發表:8
回覆:8
積分:3
註冊:2008-05-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-05-22 14:20:37 IP:140.128.xxx.xxx 訂閱
我有把
進貨編號和產品編號設定為主鍵並為不可重複索引
或進貨編號設定為主鍵並為不可重複索引
但還是發生相同問題?
jacky999910
一般會員


發表:8
回覆:8
積分:3
註冊:2008-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-05-27 16:51:00 IP:118.170.xxx.xxx 訂閱
是不是delphi不支援access資料庫的複合鍵當主鍵?
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-05-27 18:46:33 IP:61.67.xxx.xxx 未訂閱
其實你發問的問題充滿矛盾, 我們根本看不懂

第一篇: 提到設為主鍵, 並可重覆索引
PRIMARY KEY 在任何資料庫架構下, 都是不可以重覆的, 如何能有主鍵又可重覆的呢?
第二篇: 提到設為主鍵, 並設定不可重覆, 與你第一篇完全不同, 那到底你設定的索引是可重覆還是不可重覆?
又你真的設定的INDEX 是 PRIMANY KEY 嗎?
第三篇: 這個錯誤與複合索引沒有直接關係, 答案很明確, 就是存入了重覆的KEY值, 所以你應該查到底存入的重覆值是那一組, 再來看主鍵是那一個, 因為沒有看到全貌, 沒有辦法幫你解答!
jacky999910
一般會員


發表:8
回覆:8
積分:3
註冊:2008-05-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-05-28 02:30:22 IP:118.170.xxx.xxx 訂閱
感謝版主的回覆,原來是我發問的問題有矛盾,我還以為都沒人遇到此類相關問題。
我再重新說明我的狀況

廠商table->廠商編號(PK)(自動編號)(不可重複),進貨table->進貨單號(pk)(自動編號)(不可重複),進貨明細table->進貨單號(PK)(數字)(可重複) 原物料編號(PK)(數字)(可重複),原物料table->原物料編號(PK)(自動編號)(不可重複)
在設計階段以ado單單連上進貨明細並把adotable.open打開可讀取到資料,但在程式執行階段卻發生project project1.exe raised exception class EDatabaseError whith message'A component named PrimaryKey already exists'.process stopped . Use Step or Run to continue.
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-05-29 17:22:13 IP:61.67.xxx.xxx 未訂閱
看了你的流程圖, 發現一個很嚴重的問題
圖示中的key 圖案應該是代表PK的設定吧!(Access不是很清楚,不常用), 不過我記的pk值就是不能重覆, 前面我也說過, 成為pk的data就是不能重覆, 因此你的設定觀念上是有問題的, 這也說明你發生錯誤的訊息, 因為明細檔存入了重覆的pk值
兩種做法
1.不要使用pk值, 改用其他索引方式
2.要檢查當pk值相同時, 明細中的數量就累加(一般是如此)
系統時間:2024-04-19 10:20:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!