線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1498
推到 Plurk!
推到 Facebook!

寫入資料庫中的有組合主鍵的表,一直出錯…

答題得分者是:P.D.
yeye
一般會員


發表:7
回覆:5
積分:2
註冊:2006-11-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-02 16:32:16 IP:220.130.xxx.xxx 未訂閱
        datamodule3.ADOQuery1.Close;
datamodule3.ADOQuery1.SQL.Clear;
datamodule3.ADOQuery1.SQL.Add('SELECT * from [Order Details]');
datamodule3.ADOQuery1.Open;
datamodule3.ADOQuery1.insert;
datamodule3.ADOQuery1.Fields.FieldByName('orderid').Value := str1;
datamodule3.ADOQuery1.Fields.FieldByName('productid').Value := str15;
datamodule3.ADOQuery1.Fields.FieldByName('unitprice').Value := strtofloat(str16);
datamodule3.ADOQuery1.Fields.FieldByName('quantity').Value := str17;
datamodule3.ADOQuery1.Fields.FieldByName('discount').Value := strtofloat(str18);
datamodule3.ADOQuery1.Post;

想破頭想不到~~這樣寫會有問題嗎?

組合鍵是orderid和productid,productid根本沒有重覆,為什麼會寫不進去呀~~?

一直說我違反pkey原則……

我用的是sqlserver裡面的北風db = =

還有別的方法可以解決嗎…
foxelf
初階會員


發表:9
回覆:42
積分:30
註冊:2003-03-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-03 13:35:30 IP:218.161.xxx.xxx 訂閱
先用str1 str15到資料庫查查看是否有相同的資料,再確認北風資料庫的PKEY是不是有設定

===================引 用 yeye 文 章===================
datamodule3.ADOQuery1.Close;
datamodule3.ADOQuery1.SQL.Clear;
datamodule3.ADOQuery1.SQL.Add('SELECT * from [Order Details]');
datamodule3.ADOQuery1.Open;
datamodule3.ADOQuery1.insert;
datamodule3.ADOQuery1.Fields.FieldByName('orderid').Value := str1;
datamodule3.ADOQuery1.Fields.FieldByName('productid').Value := str15;
datamodule3.ADOQuery1.Fields.FieldByName('unitprice').Value := strtofloat(str16);
datamodule3.ADOQuery1.Fields.FieldByName('quantity').Value := str17;
datamodule3.ADOQuery1.Fields.FieldByName('discount').Value := strtofloat(str18);
datamodule3.ADOQuery1.Post;

想破頭想不到~~這樣寫會有問題嗎?

組合鍵是orderid和productid,productid根本沒有重覆,為什麼會寫不進去呀~~?

一直說我違反pkey原則……

我用的是sqlserver裡面的北風db = =

還有別的方法可以解決嗎…
yeye
一般會員


發表:7
回覆:5
積分:2
註冊:2006-11-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-10-03 14:30:38 IP:220.130.xxx.xxx 未訂閱
其實問題很怪的是,我是做兩種匯入資料庫的方式

一種是由txt檔讀入,判斷好格式,寫入db

另一種是由excel檔讀入,判斷好,再寫入

上面那段程式寫在記事本匯入畫面時,就一切正常

一字不差的寫在excel 匯入畫面裡,就會出現那個問題

不曉得在那個環節上出了問題~~
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-10-03 14:47:36 IP:220.137.xxx.xxx 未訂閱
您可以自己 debug 在匯出 Excel 時是在匯入什麼 Key 值發生錯誤
小弟猜測是匯入重覆的空字串
foxelf
初階會員


發表:9
回覆:42
積分:30
註冊:2003-03-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-10-03 18:05:49 IP:218.161.xxx.xxx 訂閱
有可能是EXCEL欄位型態的判斷發生問題,最好做個LOG看看出問題的是哪一段

===================引 用 yeye 文 章===================
其實問題很怪的是,我是做兩種匯入資料庫的方式

一種是由txt檔讀入,判斷好格式,寫入db

另一種是由excel檔讀入,判斷好,再寫入

上面那段程式寫在記事本匯入畫面時,就一切正常

一字不差的寫在excel 匯入畫面裡,就會出現那個問題

不曉得在那個環節上出了問題~~
P.D.
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-10-04 00:43:31 IP:61.67.xxx.xxx 未訂閱
1.你應該先自行測試, 如果 orderid和productid 都填入不重覆的值, 是否會有 primary key問題
2.如果上述是ok的, 則 填入 orderid 一樣的值 和 productid 不一樣的值, 看看結果
3.如果第2項有發生問題, 請檢查你的 sql orderid 是否有被獨立設定為 primary 或者是唯一unique
因為雖然 orderid productid =primary, 但有可能還有其他 index 或 orderid 被指定為不可重覆
系統時間:2024-11-24 19:34:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!