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

在大量更新Access資料時出現索引鍵資料行資料不足或不正確...

尚未結案
kwon
一般會員


發表:14
回覆:64
積分:22
註冊:2002-08-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-15 11:05:41 IP:210.201.xxx.xxx 未訂閱
請問,我在大量更新Access資料時出現 索引鍵資料行資訊不足或不正確;太多資料列被更新,的錯誤訊息,請問有什麼辦法解決嗎?
hagar
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-15 11:40:25 IP:202.39.xxx.xxx 未訂閱
Table 加設 Primary Key 或 Index 吧! --- 每個人都是一本書
kwon
一般會員


發表:14
回覆:64
積分:22
註冊:2002-08-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-15 12:07:26 IP:210.201.xxx.xxx 未訂閱
有阿!我有加上主鍵啊
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-15 12:35:36 IP:210.202.xxx.xxx 未訂閱
請多提供資料例如:更新的做法, 資料庫的結構, 資料的來源, 使用的元件...等等 我是雪龍
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
kwon
一般會員


發表:14
回覆:64
積分:22
註冊:2002-08-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-15 15:38:25 IP:210.201.xxx.xxx 未訂閱
抱歉,我再說清楚一點及將我的程式碼貼上來,請您們幫我看一下,是否我的寫法不好,須要換另一種寫法,請不吝指教,謝謝! 我目前的這個程式是用Access做資料庫,須要定期去查詢及更新資料,而要去查詢的資料原來是 DBF 檔,大約有五,六百萬筆資料,我將它轉成ACCESS檔案,例如檔名為EPA91.MDB,我再利用迴圈查詢EPA91.MDB檔,查沒有多久就出現了[索引鍵資料行資訊不足或不正確;太多資料列被更新]的錯誤訊息,程式碼如下: if (FileExists(Path 'Epa' IntToStr(ThisYear-1) '.MDB')) then begin if Q4.Active then Q4.Close; CuPath2:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=' Form1.Path 'Epa' IntToStr((wYear-1911)-1) '.MDB ;Persist Security Info=True'; Q4.ConnectionString:=CuPath2; Q1.Close; Q1.SQL.Clear; Q1.SQL.Add('SELECT 車號, 稽查日期, 回檢日期 FROM 攔巡查資料 WHERE 回檢日期 IS NULL '); Q1.Open; I:=0;J:=0; Q1Rec:=Q1.RecordCount; WHILE NOT Q1.Eof DO begin CARNO:=Q1.FieldByName('車號').ASSTRING; Application.ProcessMessages; I:=I 1; if StopAP then Exit; StatusBar1.Panels[1].Text:= IntToStr(I) ' / ' IntToStr(Q1Rec); QS2:='SELECT CAR_NO, TEST_DATE, ISSUE_DT FROM Epa' IntToStr(ThisYear-1) ' WHERE CAR_NO = ''' CARNO ''' '; Q4.Close; Q4.SQL.Clear; Q4.SQL.Add(QS2); Q4.Open; Q2Rec:=Q4.RecordCount; if Q2Rec <> 0 then begin DeCodeDate(Date, wQ2Year, wQ2Month, wQ2Day); if ((Copy(Q4.Fields[2].AsString,3,2) = '02') and (Copy(Q4.Fields[2].AsString,5,2)='29')) then ISU_DT:=IntToStr(wQ2Year) '/' Copy(Q4.Fields[2].AsString,3,2) '/' '28' else ISU_DT:=IntToStr(wQ2Year) '/' Copy(Q4.Fields[2].AsString,3,2) '/' Copy(Q4.Fields[2].AsString,5,2); if ((Copy(Q4.Fields[2].AsString,3,2)='')) then ISU_DT:=IntToStr(wQ2Year) '/' '01' '/' '01'; if (Copy(Q5.Fields[2].AsString,4,2)='') then ISU_DT:=IntToStr(wQ2Year) '/' Copy(Q4.Fields[2].AsString,3,2) '/' '01'; if Q4.Fields[2].IsNull then ISU_DT:=IntToStr(wQ2Year) '/' '01' '/' '01'; if ((Copy(Q4.Fields[2].AsString,3,2) = '02') and (Copy(Q4.Fields[2].AsString,5,2)='29')) then sDate1:=IntToStr((wQ2Year-1)) '/' Copy(Q4.Fields[2].AsString,3,2) '/' '28' else sDate1:=IntToStr((wQ2Year-1)) '/' Copy(Q4.Fields[2].AsString,3,2) '/' Copy(Q4.Fields[2].AsString,5,2); if ((Copy(Q4.Fields[2].AsString,3,2)='')) then sDate1 := IntToStr(wQ2Year) '/' '01' '/' '01'; if ((Copy(Q4.Fields[2].AsString,5,2)='')) then sDate1:=IntToStr((wQ2Year-1)) '/' Copy(Q4.Fields[2].AsString,3,2) '/' '01'; if Q4.Fields[2].IsNull then sDate1:=IntToStr((wQ2Year-1)) '/' '01' '/' '28'; if (Q4.FieldByName('TEST_DATE').AsVariant <= StrToDate(ISU_DT) ) or (Q4.FieldByName('TEST_DATE').AsVariant >= StrToDate(sDate1)) then begin if Q2Rec = 1 then begin J:=J 1; Q1.Edit; Q1.FieldByName('回檢日期').AsVariant:= Q4.FieldByName('TEST_DATE').AsVariant; Q1.Post; StatusBar1.Panels[3].Text:= IntToStr(J); // 寫入定檢筆數 end; if Q2Rec > 1 then begin J:=J 1; Q4.Last; Q1.Edit; Q1.FieldByName('回檢日期').AsVariant:=Q4.FieldByName('TEST_DATE').AsVariant; Q1.Post; StatusBar1.Panels[3].Text:= IntToStr(J); // 寫入定檢筆數 end; end; end; Q1.Next; end; end;
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-15 19:24:32 IP:210.202.xxx.xxx 未訂閱
試試看在每次 post 後, 作一次更新有沒有用 我是雪龍
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
kwon
一般會員


發表:14
回覆:64
積分:22
註冊:2002-08-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-15 22:55:01 IP:61.59.xxx.xxx 未訂閱
請問要如何更新,是否下QUERY1.REFRESH 我有試過下 QUERY1.REFRESH 還是出現 更新或重整所需鍵欄位資訊不足 錯誤訊息
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-16 00:38:45 IP:210.202.xxx.xxx 未訂閱
有一段時間沒寫了, 記得好像是 ApplyUpdates 我是雪龍
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
kwon
一般會員


發表:14
回覆:64
積分:22
註冊:2002-08-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-16 13:36:58 IP:210.201.xxx.xxx 未訂閱
好像沒有 ApplyUpdate 耶
kwon
一般會員


發表:14
回覆:64
積分:22
註冊:2002-08-08

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-16 14:13:02 IP:210.201.xxx.xxx 未訂閱
對不起!我已找出問題了,原因是我在 SELECT 時只 SELECT 三個欄位,但我裡面有將近十個欄位,在做更新才會出現錯誤訊息
系統時間:2024-11-23 18:00:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!