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

存檔錯誤??

尚未結案
JamesLiang
初階會員


發表:54
回覆:78
積分:31
註冊:2003-02-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-08 09:14:39 IP:206.204.xxx.xxx 未訂閱
請教先進..我的主副表均使用adoquery,於副表的SQL.Edit內我使用兩個table(Detail & Invy)Inner join的方式(因為需要找出ItemNo 對應的解說),存檔的方式是使用batch目前一切順利,存檔時系統卻告知我 ItemNo is null 因此無法存入 invy的 table,但是我程式中並沒有INSERT 任何資料到 INVY??不知如何解決,另外我在工廠的sql2000很正常的運作,使用enterprise manager 管理data 很正常,因此我backup後回家restore,奇怪的是家裡的enterprisemanager的速度 其慢無比,有沒先進可代為解決?? 多謝
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-08 16:55:02 IP:211.21.xxx.xxx 未訂閱
引言: 請教先進..我的主副表均使用adoquery,於副表的SQL.Edit內我使用兩個table(Detail & Invy)Inner join的方式(因為需要找出ItemNo 對應的解說),存檔的方式是使用batch目前一切順利,存檔時系統卻告知我 ItemNo is null 因此無法存入 invy的 table,但是我程式中並沒有INSERT 任何資料到 INVY??不知如何解決
您到副表的ADOQuery用滑鼠按左鍵二下帶出TField Edit的畫面,選擇ItemNo,將其屬性ProviderFlags/pfInUpdate設為False,試試看。
引言: 另外我在工廠的sql2000很正常的運作,使用enterprise manager 管理data 很正常,因此我backup後回家restore,奇怪的是家裡的enterprisemanager的速度 其慢無比,有沒先進可代為解決??
速度其慢無比,您應該沒有遠端連到工廠的Ms Sql2000吧! 速度其慢無比的原因會不會是您的電腦配備不夠,例記憶體不夠…等。或是您的電腦應用程式裝太多、常駐程式太多…等。以上的原因都有可能造成速度其慢無比。 ~小弟淺見,參考看看~ 發表人 - channel 於 2003/04/08 16:57:00
------
~小弟淺見,參考看看~
JamesLiang
初階會員


發表:54
回覆:78
積分:31
註冊:2003-02-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-09 00:21:02 IP:206.204.xxx.xxx 未訂閱
Q1.還是不行出現的錯誤如下>> 'cANNOT INSERT THE VALUE NULL INTO COLUMN itemno',TABLE 'DBO.Invy'; COLUMN DOES NOT ALLOW NULLS INSERT FAILS';我不懂為何會存資料到invy,難道是SQL中使用INNER Join 會影響嗎? Q2.我在delphi7內使用sql呼叫資料快速,但啟動enterprisemanager才會慢,我的 設備為P3-700,512MRAM,應該很快才是? 多謝前輩幫忙
JamesLiang
初階會員


發表:54
回覆:78
積分:31
註冊:2003-02-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-09 01:09:00 IP:206.204.xxx.xxx 未訂閱
補充..我的錯誤發生時機是在當我按下save button時出現此錯誤訊息,我的ap如下: if DataModule1.AQ_RDDetail.State = dsInsert then DataModule1.AQ_RDDetail.UpdateBatch(arAll); 多謝
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-09 12:11:20 IP:211.21.xxx.xxx 未訂閱
引言: Q1.還是不行出現的錯誤如下>> 'cANNOT INSERT THE VALUE NULL INTO COLUMN itemno',TABLE 'DBO.Invy'; COLUMN DOES NOT ALLOW NULLS INSERT FAILS';我不懂為何會存資料到invy,難道是SQL中使用INNER Join 會影響嗎?
TADOQuery可以根據您所下的SQL Select * From TableName語法,自行更行回資料庫,也就是說當您用兩個Table作Join時TADOQuery可以一次更新兩個Table,這是TADOQuery比TQuery聰明的地方,不過也造成許很多不必要的困擾,就像您所提供的問題一樣。您的SQL是下Detail & Invy Inner join的方式,所以當您在新增Detail時,Invy同是也是新增狀態,您如果同時給Detail & Invy的欄位資料,就會一起寫回資料庫,但是您只給Detail的欄位資料而Invy的欄位沒有資料,則只會將Detail的欄位資料寫回資料庫,Invy就不會寫入(我測試過沒有問題),所以您檢查一下,您是否有將資料給Invy的任一欄位。 如果您沒有將資料給Invy的任一欄位,建議您使用Calculated Field或Look up Field來取得Invy的相關資料,這樣一定沒有問題!
引言: Q2.我在delphi7內使用sql呼叫資料快速,但啟動enterprisemanager才會慢,我的 設備為P3-700,512MRAM,應該很快才是? 多謝前輩幫忙
沒錯,這配備應該會很快!啟動enterprisemanager才會慢,那就不知囉! 還是您要將
------
~小弟淺見,參考看看~
JamesLiang
初階會員


發表:54
回覆:78
積分:31
註冊:2003-02-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-09 13:22:29 IP:63.201.xxx.xxx 未訂閱
多謝 Channel 先生的幫忙,我會向那個方向去試,但是我試過在ADOQuery的field edit增加一個lookup欄位而取消SQL內inner join,但run時發生問題,是否改成 TQuery是否就沒此問題? 多謝
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-09 13:29:01 IP:211.21.xxx.xxx 未訂閱
引言: 多謝 Channel 先生的幫忙,我會向那個方向去試,但是我試過在ADOQuery的field edit增加一個lookup欄位而取消SQL內inner join,但run時發生問題,是否改成 TQuery是否就沒此問題? 多謝
不知您run時發生什麼問題呢?
------
~小弟淺見,參考看看~
JamesLiang
初階會員


發表:54
回覆:78
積分:31
註冊:2003-02-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-10 00:10:40 IP:206.204.xxx.xxx 未訂閱
Channel前輩..我若將SQL中的inner join 去除,而在fieldedit中加上lookup的方式於run時出現的錯誤為An unknown error has occurred(只在新增時發生), 是否只有改成TQuery才有用?因為我也試著將invy被呼叫的'description' 使用 as 的方式給個別名,結果一樣.如何去停止存入invy此table? 多謝
JamesLiang
初階會員


發表:54
回覆:78
積分:31
註冊:2003-02-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-10 00:31:01 IP:206.204.xxx.xxx 未訂閱
前輩..補充如下.. 我依你的指點將新增時itemno的查核部分停用,存檔時就沒問題,但是一般程式於輸入料號時會帶出品名,若無法顯示品名user會有問題,我的問題是應當如何改善 ?原始碼如下; FindResult := DataModule1.AT_RDInvy.LookUp('ItemNo',R_ProdID,'Description'); DataModule1.AT_RDInvy.close; if not varisnull (FindResult) then DataModule1.AQ_RDDetail.FieldByName('Descrip').asstring := vartoStr(FindResult),當我將最後一段mark後存檔就不會呼叫rdinvy此table 但是descrip沒法顯示品名. 多謝
JamesLiang
初階會員


發表:54
回覆:78
積分:31
註冊:2003-02-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-10 07:08:52 IP:206.204.xxx.xxx 未訂閱
補充..我發現當我在資料欄位的屬性我若將此欄位fieldkind訂為fklookup則於新增資料時(按下新增鍵或按向下鍵成insert狀態),就會出現unknow的訊息,但若 將他改為fkdata時就正常,但是此欄位(Description)於新增時也不會相對應資料出現,須於ap中撰寫,但又遇見如上所說的問題. 多謝
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-11 09:44:12 IP:211.21.xxx.xxx 未訂閱
引言: 補充..我發現當我在資料欄位的屬性我若將此欄位fieldkind訂為fklookup則於新增資料時(按下新增鍵或按向下鍵成insert狀態),就會出現unknow的訊息,但若 將他改為fkdata時就正常,但是此欄位(Description)於新增時也不會相對應資料出現,須於ap中撰寫,但又遇見如上所說的問題. 多謝
您試一下用Calculated Field的方式做看看... 先到DataModule1.AQ_RDDetail按左鍵二下叫出TField視窗,選New Field,設定如下:
Field properties
Name: Descrip   Component: 系統給定
Type: String    Size:      給定Descrip的大小
==============================================
Field Type:選Calculated
procedure TDataModule1.AQ_RDDetailCalcFields(DataSet: TDataSet);
begin
  if AT_RDInvy.Locate('Item_No', DataSet.FieldByName('Item_No').AsString, []) then
    DataSet.FieldByName('Descrip').AsString := AT_RDInvy.FieldByName('Descrip').AsString;
end;
這樣應該沒有問題啦! ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-04-11 14:28:28 IP:211.21.xxx.xxx 未訂閱
引言: Channel前輩..我若將SQL中的inner join 去除,而在fieldedit中加上lookup的方式於run時出現的錯誤為An unknown error has occurred(只在新增時發生), 是否只有改成TQuery才有用?因為我也試著將invy被呼叫的'description' 使用 as 的方式給個別名,結果一樣.如何去停止存入invy此table? 多謝
補充一點: 使用Lookup Filed果真會在新增資料會產生"已發生不明的錯誤"訊息 除了使用Calculated Field之外,其實您只是直接執行您的Exe便不會有此錯誤訊息,您可以試試看... ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
系統時間:2024-06-26 22:39:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!