上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
alung
註冊時間: 2005-11-23 文章: 80
第 1 樓
|
發表於: 星期四 一月 08, 2009 7:19 pm 文章主題: combox 使用時發生controlSource值被截掉問題 |
|
|
有訂單檔orderitem(內有產品編號欄位itemn)及產品檔item(內有產品編號及產品名稱欄位分別為 itemn, desc),產品編號itemn欄位為數字型態。
在combox欄位下拉點選產品編號後在右邊欄位會出現產品名稱,
combox欄位物件內容:
controlSource=orderitem.itemn
GotFocus程序→this.rowsource='';this.rowsourcetype=3;this.rowsource='SELECT itemn, desc FROM item WHERE custn=custn_w INTO CURSOR TEMPB'
InterativeChange程序→ThisForm.產品名稱.Text1.value=tempb.desc;ThisForm.單位.Text1.setfocus
假設產品編號下拉選330005,combox欄位顯示出330005但this.value前面數字值會被截掉後變為5
假設產品編號下拉選330001,combox欄位顯示出330001但this.value前面數字值會被截掉後變為1
若將InterativeChange程序改→ this.value=tempb.itemn;ThisForm.產品名稱.Text1.value=tempb.desc;ThisForm.單位.Text1.setfocus
combox欄位物件卻顯示出空白,this.value內容卻為正常值330001
請教是哪裡出問題呢? 謝謝幫忙 |
|
回頂端 |
|
 |
DennisTsai
註冊時間: 2005-07-26 文章: 178
第 2 樓
|
發表於: 星期五 一月 09, 2009 8:10 am 文章主題: |
|
|
把欄位的DESC改個名試試 |
|
回頂端 |
|
 |
alung
註冊時間: 2005-11-23 文章: 80
第 3 樓
|
發表於: 星期五 一月 09, 2009 8:36 am 文章主題: |
|
|
DennisTsai 寫到: | 把欄位的DESC改個名試試 |
還是一樣,謝謝幫忙哦 |
|
回頂端 |
|
 |
alung
註冊時間: 2005-11-23 文章: 80
第 4 樓
|
發表於: 星期五 一月 16, 2009 11:31 am 文章主題: Re: combox 使用時發生controlSource值被截掉問題 |
|
|
InterativeChange程序→= MESSAGEBOX("test1:"+allt(str(this.value)),"訊息");= MESSAGEBOX("test2:"+allt(str(this.value));" 訊息");ThisForm.產品名稱.Text1.value=tempb.desc;ThisForm.單位.Text1.setfocus
訊息會出現test1:1 (前面被截掉)及 test2:330001
ControlSource之orderitem.itemn會存成1 而不是330001
是因為orderitem.itemn 及 item.itemn 欄位宣告數值的關係嗎?
究竟是哪裡出問題呢? 很傷腦筋耶~有沒有人可幫忙呢? |
|
回頂端 |
|
 |
alung
註冊時間: 2005-11-23 文章: 80
第 5 樓
|
發表於: 星期五 一月 16, 2009 11:37 am 文章主題: Re: combox 使用時發生controlSource值被截掉問題 |
|
|
sorry第2個訊息打錯了應是= MESSAGEBOX("test2:"+this.Displayvalue" 訊息");
會出現 test2:330001 |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 6 樓
|
發表於: 星期五 一月 16, 2009 5:06 pm 文章主題: |
|
|
如果你的 controlsource 是數值型態,
那它的 value 就是 .listindex
假設你沒有填任何字在 controlsource
在 value 填入空白字串,
則它的 value 跟 .displayvalue 一樣 _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
alung
註冊時間: 2005-11-23 文章: 80
第 7 樓
|
發表於: 星期一 一月 19, 2009 9:03 am 文章主題: |
|
|
garfield 寫到: | 如果你的 controlsource 是數值型態,
那它的 value 就是 .listindex
假設你沒有填任何字在 controlsource
在 value 填入空白字串,
則它的 value 跟 .displayvalue 一樣 |
我在InterativeChange程序再多加入一行
= MESSAGEBOX("test3:"+allt(str(this.ListIndex))," 訊息");
顯示出來是test3:1 (前面33000被截掉,欄位畫面顯示正確,內容卻錯誤),跟allt(str(this.value))內容一樣。
如果我使用this.value= val(this.Displayvalue) or
select tempb;this.value=tempb.itemn
那該欄位畫面卻出現空白(內容正確,欄位畫面卻顯示錯誤),
感謝幫忙 |
|
回頂端 |
|
 |
andywilliams
註冊時間: 2004-10-23 文章: 111
第 8 樓
|
發表於: 星期一 一月 19, 2009 11:13 am 文章主題: |
|
|
在關鍵 DeBug點 如 GotFocus,InterativeChange,LossFocus..加入
@ 0,1 say ..combox.DisplayValue && combox顯示的值
@ 1,1 say ..combox.Value && combox存入的值
@ 2,1 say orderitem.itemn && combox.controlSource的值
inkey(1)
看看三個值如何變化...就知道問題在那裡 |
|
回頂端 |
|
 |
alung
註冊時間: 2005-11-23 文章: 80
第 9 樓
|
發表於: 星期一 一月 19, 2009 4:40 pm 文章主題: |
|
|
andywilliams 寫到: | 在關鍵 DeBug點 如 GotFocus,InterativeChange,LossFocus..加入
@ 0,1 say ..combox.DisplayValue && combox顯示的值
@ 1,1 say ..combox.Value && combox存入的值
@ 2,1 say orderitem.itemn && combox.controlSource的值
inkey(1)
看看三個值如何變化...就知道問題在那裡 |
我在三個程序分別加入MESSAGEBOX後,先執行GotFocus
= MESSAGEBOX("G1→"+allt(this.Displayvalue),"訊息")
= MESSAGEBOX("G2→"+allt(str(this.value)),"訊息")
= MESSAGEBOX("G3→"+allt(str(orderitem.itemn )),"訊息")
G1(this.Displayvalue)、G2(this.value)、G3(orderitem.itemn)分別為空白、0、0
滑鼠下拉選擇33001產品編號後會執行InterativeChange
this.Displayvalue、this.value、orderitem.itemn 分別為33001、1、0
然後會接續執行LostFocus
this.Displayvalue、this.value、orderitem.itemn 分別為33001、1、1
(欄位畫面顯示正確,內容卻錯誤)倘若在LostFocus最後加入this.value=val(this.Displayvalue)再執行顯示指令
this.Displayvalue、this.value、orderitem.itemn 則分別為空白、33001、33001
(欄位畫面顯示錯誤→空白值,內容正確→33001)
感謝幫忙思考^^ |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 10 樓
|
發表於: 星期一 一月 19, 2009 5:19 pm 文章主題: |
|
|
你的問題根源就是你的 ControlSource 裡所指定的欄位型態是數值,
當然.value 一定是.listindex 的數字,
它不會用 .list( .listindex,1 ) 來當 .value值,
就算你.list( .listindex,1 ) 的原本欄位型態也是數值,
combox 也不會將 .value = .displayvalue
請往如何解決這種特性的方式來思考,
不用再花時間去 debug .
提示: controlSource='' _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
tigerlee39y
註冊時間: 2007-11-26 文章: 132 來自: taipei
第 11 樓
|
發表於: 星期四 一月 22, 2009 7:26 am 文章主題: |
|
|
garfield兄說的不錯,在combox欄位下拉中的來源資料(controlSource)最好不要設成數值
*來源值如果為數值,當你選330005時,RETURN回來的值是330005在來源值的第5筆,也不是你所講的"數字值會被截掉後變為5"
*產品編號應設為文字欄才為正確
*原則:要作 +-*/的欄位,才設為數值 _________________ 各取所需 各盡所能 |
|
回頂端 |
|
 |
|