VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

連接查詢表單的問題
前往頁面 1, 2, 3  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
andy8m23



註冊時間: 2004-02-09
文章: 30
來自: 我娘的肚子,出來很久了

第 1 樓

發表發表於: 星期六 三月 19, 2005 2:42 pm    文章主題: 連接查詢表單的問題 引言回覆

我有一個form
裡面有個cus欄位 ,cus欄位旁邊有個選擇botton 叫command1
在command1.click中
thisform.text2.value=stf('findcus')
stf為prg
para tmform
okkey=''
do tmform
return okkey

而findcus中,為一個grid,text1,和一個確定的botton
每點選grid的格子會將值帶入text1
在botton
okkey=thisform.text1.value
thisform.release()
return okkey

執行時,第一次點選選擇botton 都可以順利帶回值
但第二次點選時就會出現
載入檔案錯誤-記錄編號4.fORM1 或其成員中的一個 載入表單或資料環境
:THISFORM 只能在方法程序中使用

[取消(c)] [忽略(I)] [說明(I)]

不過很奇怪,好像只是重復按選擇BOTTON 資料都可以一直帶回
但按了新增後才會出現這樣
我的新增裡面是
select order
repl order.ordno with thisform.text1.value
repl order.cusno with thisform.text2.value
repl order.ordname with thisform.text3.value
=tableupdate(.t.)
thisform.refresh()
目前是還好,因為按了忽略後,再點一次,又可以作選擇了
不過就是接下來就要點一次忽略一次再點一次才能選擇
在這裡要先感謝garfield,他跟我說在thisform.text1.value=stf('form')中
form要設為模式,值才代的回來

_________________
登入結束編譯檔<----會了 -->密碼管制鎖登入
新增修刪查列印<----功力尚淺 -->功能表單建群組
表格輸出轉換檔<----有點模糊 -->各式文檔互轉換
遠端資料共分享<----未來目標 -->多端連接資料庫
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 2 樓

發表發表於: 星期六 三月 19, 2005 3:14 pm    文章主題: 引言回覆

代碼:

okkey=thisform.text1.value
thisform.release()
return okkey

return okkey 這行指令有沒有存在都無所謂, 因為form的傳回值不是在這裡定義的.

代碼:

載入檔案錯誤-記錄編號4.fORM1 或其成員中的一個 載入表單或資料環境
:THISFORM 只能在方法程序中使用

有可能是你在呼叫form之前有用set filter to 欄位=thisform.text1.value
你可以改用別的方法試看看.

說明一下form如何傳回值, 方法有很多種, 我只說我常用的:
1.在form.unload 裡最後一行程式碼 return 要傳回的值 , 在呼叫這個form的語法為 do form 這個form with 參數1,參數2..... to 接收的變數名稱
2.在form.init 裡的第一行程式碼裡有 para 來接受傳來的 "物件" , 在呼叫這個form的語法為 do form 這個form with this
例在 form.init裡的程式碼如下
para myobject
thisform.addproperty('objectname')
thisform.objectname=myobject
在這個form的某段程式, 例如是click某個按鈕要將欲傳回的值填入你要的地方, 則這個按鈕.click( )程式碼如下:
thisform.objectname.value = 你要傳回的值

其它的做法就看有沒有人要提出自己獨到的見解.....

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
andy8m23



註冊時間: 2004-02-09
文章: 30
來自: 我娘的肚子,出來很久了

第 3 樓

發表發表於: 星期日 三月 20, 2005 2:43 am    文章主題: 引言回覆

果然是前輩,我真的是用過set filter ,所以我要離開查詢表單時,應該set filter to 先回復原狀再傳值回去
用以上這個招,很不錯,可以不用沒個選擇按紐都要打thisform.XXXX.value=傳回值
可不可以問一下,就是以上例子而言,在查詢前的按紐中,要do form with myobject to 傳回值
myobject 是不是用 myobject=thisform.text1.class

_________________
登入結束編譯檔<----會了 -->密碼管制鎖登入
新增修刪查列印<----功力尚淺 -->功能表單建群組
表格輸出轉換檔<----有點模糊 -->各式文檔互轉換
遠端資料共分享<----未來目標 -->多端連接資料庫
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 4 樓

發表發表於: 星期日 三月 20, 2005 10:50 am    文章主題: 引言回覆

這句話我不懂 "myobject 是不是用 myobject=thisform.text1.class",
thisform.text1.class 是什麼?

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
andy8m23



註冊時間: 2004-02-09
文章: 30
來自: 我娘的肚子,出來很久了

第 5 樓

發表發表於: 星期日 三月 20, 2005 11:52 am    文章主題: 引言回覆

對不起,我搞錯了,真是不好意思
在 form.init裡的程式碼如下
para myobject<-----我想問的是這個裡面是不是放 (物件) 欲傳回的值填入你要的地方的(物件)
thisform.addproperty('objectname')
thisform.objectname=myobject
在這個form的某段程式, 例如是click某個按鈕要將欲傳回的值填入你要的地方, 則這個按鈕.click( )程式碼如下:
thisform.objectname.value = 你要傳回的值

_________________
登入結束編譯檔<----會了 -->密碼管制鎖登入
新增修刪查列印<----功力尚淺 -->功能表單建群組
表格輸出轉換檔<----有點模糊 -->各式文檔互轉換
遠端資料共分享<----未來目標 -->多端連接資料庫
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
黃澤民



註冊時間: 2003-09-08
文章: 65
來自: 新竹

第 6 樓

發表發表於: 星期日 三月 20, 2005 11:53 am    文章主題: 引言回覆

請教garfield 兄
依您的說明,如果我在一個表單的uload事件中,想要傳回的是一個物件(不是某個物件的屬性值)
應該如何做呢?如下例:

Form1.unload
Return this.Container1 <------ 一個物件

可是總是會有錯誤訊息而無法達成...
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
andy8m23



註冊時間: 2004-02-09
文章: 30
來自: 我娘的肚子,出來很久了

第 7 樓

發表發表於: 星期日 三月 20, 2005 12:15 pm    文章主題: 引言回覆

感謝澤民兄,我想表達的也是這個意思,剛去找Garfield兄的文章,有提到這個

我的做法是在FORM中多一個屬性 .activeobject ,在每個物件的 .GetFocus內皆加入一行指令, Thisform.activeobject = this

搜尋物件名稱就可以找到了,應該有用

_________________
登入結束編譯檔<----會了 -->密碼管制鎖登入
新增修刪查列印<----功力尚淺 -->功能表單建群組
表格輸出轉換檔<----有點模糊 -->各式文檔互轉換
遠端資料共分享<----未來目標 -->多端連接資料庫
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 8 樓

發表發表於: 星期日 三月 20, 2005 1:47 pm    文章主題: 引言回覆

to 黃澤民,
thisform裡面的東西在form關閉時就已經不存在了, 甚至在unload時, 物件都幾乎不存在了, 怎麼可能可以還將物件傳回去, 你可以試著不要release, 用 .visible=.f. 看看是否可行.

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
黃澤民



註冊時間: 2003-09-08
文章: 65
來自: 新竹

第 9 樓

發表發表於: 星期日 三月 20, 2005 4:59 pm    文章主題: 引言回覆

To Garfield兄:
我想也是,剛才試了一下,果真是,但是
就像您說的,經過了release,物件都不存在了,那return (thisform.myobj.value) 還有意義嗎?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
黃澤民



註冊時間: 2003-09-08
文章: 65
來自: 新竹

第 10 樓

發表發表於: 星期日 三月 20, 2005 5:09 pm    文章主題: 引言回覆

接上題,因為Do form myform with p1,p1 to v1
其中myform 的視窗是model模式,如果不加release
那麼程式是無法往下繼續的....
所以說...
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 11 樓

發表發表於: 星期日 三月 20, 2005 6:09 pm    文章主題: 引言回覆

所以說你要用我講的第2種方法才行
_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
黃澤民



註冊時間: 2003-09-08
文章: 65
來自: 新竹

第 12 樓

發表發表於: 星期日 三月 20, 2005 8:30 pm    文章主題: 引言回覆

史兄:
依您的方法,我在表單設計階段及自訂一個屬性MyObj
然後在Form.init事件中定義
Form.init
para p1,p2
this.Myobj = This.container1
然後在Form.unload事件中定義

Form.unload
return this.myobj

結果依然還是不行
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
andy8m23



註冊時間: 2004-02-09
文章: 30
來自: 我娘的肚子,出來很久了

第 13 樓

發表發表於: 星期日 三月 20, 2005 11:47 pm    文章主題: 引言回覆

http://home.kimo.com.tw/andy8m23/klun.rar
這個是我測試的表單傳值,不管在formB 輸入什麼,回來的都是T

_________________
登入結束編譯檔<----會了 -->密碼管制鎖登入
新增修刪查列印<----功力尚淺 -->功能表單建群組
表格輸出轉換檔<----有點模糊 -->各式文檔互轉換
遠端資料共分享<----未來目標 -->多端連接資料庫
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
bigear



註冊時間: 2004-12-19
文章: 162
來自: 網路的另一端

第 14 樓

發表發表於: 星期一 三月 21, 2005 2:09 am    文章主題: 引言回覆

andy8m23 寫到:
http://home.kimo.com.tw/andy8m23/klun.rar
這個是我測試的表單傳值,不管在formB 輸入什麼,回來的都是T


幫你改好了

黃澤民 寫到:
return this.myobj


這個觀念是錯誤的
FormB 傳資料給 FormA 不能用 return
小弟個人常用兩種方式傳
1.設一個 public 變數讓 FormA 接收
2.將變數直接丟到 text.value

請參考修改檔案

_________________
以上淺見,歡迎批評指教
________________________________________________
山不轉路轉,路不轉人轉,人不轉頭轉,頭不轉眼睛轉,眼睛不轉眼珠轉
眼珠再不轉就去睡覺,睡起來繼續轉
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 15 樓

發表發表於: 星期一 三月 21, 2005 8:19 pm    文章主題: 引言回覆

bigear說的方法就是第3種方法, 先去研究他的方法,
我舉一個例子說明我的第2種方式, 這種方式你可以將它想成像我們在用副程式接收參數時有兩種, 1是傳值,2是傳址 , 這個方式就是傳址,
可能你們比較少用, 所以對它都不熟.
例:
在A form中有一個物件 text1 , 在text1.dblClick() 中寫一行程式
do form B with this
則它在dobule click 時會去執行 FORM B , 且傳這個text1的物件(的位置)給它.

在 B form中的.init 中有3行程式
para myobject
thisform.addproperty('objectname')
thisform.objectname=myobject
假設你有個grid在秀資料讓人選擇, 且有個按鈕的物件叫做 .send1 , 則你在 .send1.click( ) 中只要寫兩行程式:
thisform.objectname.value = 你要傳回的值 &&--這個thisform.objectname 本質上只是一個指向 A form 中的那個 .text1的物件
thisform.release
不須在unload中傳回值
************
以上請自己動手試一試就知道它的奧妙之處. 祝你成功.!!

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2, 3  下一頁
1頁(共3頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作