2014-02-22 95 views
-1

如何將從select語句獲得的數據存儲到文本框中。
我沒有任何想法如何做到這一點,因爲這是我第一次使用foxpro我需要這個爲我的工作應用程序請幫助我。
表名:emp4win
IDNUM
姓名
姓氏
中間名
地址
接觸
如何從數據庫中檢索數據並將其存儲到Foxpro中的文本框中9

cm=thisform.cmb1.Text 
SELECT * FROM emp4win WHERE idnum=cm 

數據應保存在以下:

txtfirstname.text 
txtlastname.text 
txtmiddlename.text 
txtaddress.text 
txtaddress.text 
txtcontact.text<br/> 
+0

Reynan,我看到你的幾個問題,你說你剛開始使用VFP。你會在http://fox.wikis.com/wc.dll?Wiki~VFPVideos~VFP找到一些VFP視頻。你也可以考慮寫一本書。這對初學者很有幫助(雖然它是VFP 6,不是VFP 9):http://www.hentzenwerke.com/catalog/fund6.htm –

回答

1

我會回答假設表是本機VFP .dbf文件。有很多方法可以做到這一點,一個是使用正常的VFP表的處理,像這樣:

USE emp4win IN 0     &&Open table 
LOCAL cm 
cm = thisform.cmb1.Text 
*Validate the value of the input textbox here 
SELECT emp4win     &&Make the table active 
LOCATE FOR idnum=cm    &&Search for the row you want 
IF NOT FOUND("emp4win") 
    *Handle error when the record doesn't exists 
ENDIF 
*From now on, just populate textboxes with the found data 
thisform.txtfirstname.text = emp4win.firstname 
thisform.txtlastname.text = emp4win.middlename 
thisform.txtmiddlename.text = emp4win.lastname 
thisform.txtaddress.text = emp4win.address 
thisform.txtcontact.text = emp4win.contact 

另一種選擇是使用內置的VFP SQL引擎進行搜索,幾乎爲你已經完成了,只要有一個捕獲,記住你必須指明保存結果以便使用它的位置,幾乎總是使用一個INTO CURSOR子句(然後從該光標讀取),否則,就像在你的示例中一樣,它將會顯示在BROWSE窗口中,這在應用程序中完全沒有用處。

+0

代碼'USE emp4win IN 0'沒有冒着多重用不同的別名打開表格的副本,然後選擇錯誤的副本?我使用foxpro已經很多年了,但是我相信你可以使用'USE emp4win IN SELECT(「emp4win」)'代替。這可以在新的工作區域打開表格,或者在表格已經打開的情況下選擇表格。 – stuartd

+0

@stuartd好點,是的,我忽略了這種可能性。但是,如果內存服務,它不會打開第二個副本(您需要'AGAIN'和一個明確的別名),但是會拋出一個「正在使用的表」錯誤。我通常在更嚴肅的代碼中做的是在打開之前詢問表是否被「USED」,並使用它,否則打​​開,在退出時恢復先前的狀態。我從來沒有見過IN SELECT(「emp4win」)技巧,但聽起來很有趣。 – Alejandro

0

您的查詢非常接近並得到結果...如果您使用不帶「INTO」子句的SQL查詢,它只會將結果放在瀏覽顯示網格中。通過添加一個INTO子句,它將放入一些內存空間,例如一個數組或另一個遊標(但也可能是另一個永久表,但不會被建議)。然後,您可以將這些值拉到文本框的文本屬性中...

我通常會做一個遊標(其中的前綴結果集爲「C_」以知道它是一個臨時遊標vs實際表,並且如果總是預先關閉表我需要它保持打開狀態以備將來使用初凝後通過這種方式,最新的查詢後無殘留

use in select("C_MyTmpResult") 
SELECT * FROM emp4win 
    WHERE idnum=cm 
    into cursor C_MyTmpResult 

數據應在以下商店:。

txtfirstname.Value = C_MyTmpResult.FirstName 
txtlastname.Value = C_MyTmpResult.LastName 
txtmiddlename.Value = C_MyTmpResult.MiddleName 
txtaddress.Value = C_MyTmpResult.Address 
txtcontact.Value = C_MyTmpResult.Contact 

您有2條地址線,但沒有區分n Address1與Address2並且可能只是一個發佈監督,但是如果您有兩條地址線,上下文仍然成立。

相關問題