ADOQUERY+DBF新增資料時發生錯誤 |
答題得分者是:herbert2
|
redjeff
一般會員 發表:12 回覆:16 積分:10 註冊:2006-07-06 發送簡訊給我 |
各位大大,我用ADOQUERY先做了新增TABLE的動作,然後在把資料儲存到TABLE裡面,新增TABLE的時候沒有問題,但是在我APPEND資料到TABLE時,在POST的時候出現了
「更新或重整的基礎資料表資訊不足」,的問題,如果是KEY值的話,我也有做KEY值的設定,不曉得是什麼原因, [code delphi] Table_Wafer_OUT.Active := False; Table_Wafer_OUT.ConnectionString :='Provider=MSDASQL.1;Persist Security Info=False;Data Source=dBASE Files;Initial Catalog=' ExtractFileDir(SaveDialog_OutPutFile.FileName); Table_Wafer_OUT.SQL.Clear; Table_Wafer_OUT.SQL.Text:='CREATE TABLE '檔名'.DBF (' 'SO_NO CHAR(12),SO_LOT_NO CHAR(25),TH_PN CHAR(15),' 'SO_OPNO CHAR(25),SO_STDRATE FLOAT,SO_UPRICE FLOAT,' 'WAFER_NO CHAR(20),SO_QTY FLOAT)'; Table_Wafer_OUT.ExecSQL; Table_Wafer_OUT.SQL.Clear; Table_Wafer_OUT.SQL.Text := 'SELECT * FROM ' ExtractFileName(SaveDialog_OutPutFile.FileName); Table_Wafer_OUT.Active := True; Table_Wafer_OUT.Append; ....... Table_Wafer_OUT.Post; //這裡發生錯誤~~~ [/code] |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
redjeff
一般會員 發表:12 回覆:16 積分:10 註冊:2006-07-06 發送簡訊給我 |
先謝謝這位大大提供的測試方式,我有測試,在create的時候,只建立了字串型態,結果還是一樣
後來我發現之前有發生過這個原因,好像是因為create table時候的檔名長度太長,檔名只存8碼以內都是ok的,超過後,就不行了 我有去查原因,不曉得是不是如微軟所說的"某些ODBC不支援長檔案名稱",網址:support.microsoft.com/kb/213942/zh-tw 原本我是用TABLE BDE的方式,一切都很正常,但是因為此方式如果公司每台電腦都要用系統的話,就必須裝BDE,很麻煩,想說改成ADO的方式,前端就不用在裝BDE了 ===================引 用 herbert2 文 章=================== 試著先把程式分段執行. 可能 DBF 檔 Data Structure 有問題 (DBF 應無 Float Type 的 Field). Numeric 15,4 代表含小數點共 15 Bytes, 小數點後有 4 位小數. |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
DBF 是很老的 Flat Table 系統, 不支援長檔名.
ADO 可支援 DBF, 但 Create Table 不正常. 又 DBF 檔頭年度 1 Bytes, 0x63 代表 1999年, 0x02 代表 2002年; 而 ADO 用 Acess 標準, 0x63 代表 1999年, 0x66 代表 2002 年. 若要正常, 有兩種方法: (1) 用 DOS Prompt 執行 DBase III 先 Create DBF 空檔. (2) 用 Binary 方式直接依 DBF 檔頭規則 Create DBF 空檔. 要用時, 以 FileCopy 方式拷成您要用的檔名. 較好的方法: 改用 MS Acess 或 Prodox. ===================引 用 redjeff 文 章=================== 先謝謝這位大大提供的測試方式,我有測試,在create的時候,只建立了字串型態,結果還是一樣 後來我發現之前有發生過這個原因,好像是因為create table時候的檔名長度太長,檔名只存8碼以內都是ok的,超過後,就不行了 我有去查原因,不曉得是不是如微軟所說的"某些ODBC不支援長檔案名稱",網址:support.microsoft.com/kb/213942/zh-tw 原本我是用TABLE BDE的方式,一切都很正常,但是因為此方式如果公司每台電腦都要用系統的話,就必須裝BDE,很麻煩,想說改成ADO的方式,前端就不用在裝BDE了 |
redjeff
一般會員 發表:12 回覆:16 積分:10 註冊:2006-07-06 發送簡訊給我 |
資料類型沒辦法做更動,所以目前的解決方式就是請公司的相關單位把12碼改成8碼
因為公司不太可以接受大幅度的變更,謝謝分享^_^ ===================引 用 herbert2 文 章=================== DBF 是很老的 Flat Table 系統, 不支援長檔名. ADO 可支援 DBF, 但 Create Table 不正常. 又 DBF 檔頭年度 1 Bytes, 0x63 代表 1999年, 0x02 代表 2002年; 而 ADO 用 Acess 標準, 0x63 代表 1999年, 0x66 代表 2002 年. 若要正常, 有兩種方法: (1) 用 DOS Prompt 執行 DBase III 先 Create DBF 空檔. (2) 用 Binary 方式直接依 DBF 檔頭規則 Create DBF 空檔. 要用時, 以 FileCopy 方式拷成您要用的檔名. 較好的方法: 改用 MS Acess 或 Prodox. ===================引 用 redjeff 文 章=================== 先謝謝這位大大提供的測試方式,我有測試,在create的時候,只建立了字串型態,結果還是一樣 後來我發現之前有發生過這個原因,好像是因為create table時候的檔名長度太長,檔名只存8碼以內都是ok的,超過後,就不行了 我有去查原因,不曉得是不是如微軟所說的"某些ODBC不支援長檔案名稱",網址:support.microsoft.com/kb/213942/zh-tw 原本我是用TABLE BDE的方式,一切都很正常,但是因為此方式如果公司每台電腦都要用系統的話,就必須裝BDE,很麻煩,想說改成ADO的方式,前端就不用在裝BDE了 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |