上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
smilechc
註冊時間: 2010-04-22 文章: 5
第 1 樓
|
發表於: 星期一 五月 01, 2017 10:56 am 文章主題: select 出來的table 是否可以以陣列的方式寫入text(I) |
|
|
各位大大日安
小弟做了20個Textbox,想利用陣列的方式將資料寫入Textbox中,但按VB的寫法好像不行,所以VFP是否可以有這個功能,或是有大大有相關訊息可以參考,感謝您。
原程式為
SELECT * FROM aa WHERE no=bb.no AND cd="CM" ORDER BY sn INTO CURSOR cc
GO top
for i =1 to 20
thisform.pageframe1.page2.text(i).Value=cc.cd
thisform.pageframe1.page2.text(i).toolTipText=cc.cd_name
next
|
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 2 樓
|
發表於: 星期一 五月 01, 2017 5:56 pm 文章主題: |
|
|
老狐狸最怕人家說他不行!
GO top
for i =1 to 20
thisform.pageframe1.page2.text(i).Value=evaluate(Field(i))
next |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2158
第 3 樓
|
發表於: 星期一 五月 01, 2017 8:20 pm 文章主題: |
|
|
SELECT * FROM aa WHERE no=bb.no AND cd="CM" ORDER BY sn INTO CURSOR cc
scan
i=tran(recno())
thisform.pageframe1.page2.text&i..Value=cc.cd
thisform.pageframe1.page2.text&i..toolTipText=cc.cd_name
endscan _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4214 來自: Taipei,Taiwan
第 4 樓
|
發表於: 星期二 五月 02, 2017 12:12 am 文章主題: |
|
|
代碼: |
GO top
for i =1 to 20
cCOMMAND= "thisform.pageframe1.page2.text"+alltrim(str(I))+".Value="+cc.cd
&cCOMMAND
cCOMMAND= "thisform.pageframe1.page2.text"+alltrim(str(I))+".toolTipText="+cc.cd_name
&cCOMMAND
next |
_________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
perry
註冊時間: 2014-07-20 文章: 203
第 5 樓
|
發表於: 星期二 五月 02, 2017 12:54 am 文章主題: |
|
|
樓主寫法似乎只是同一記錄跑20次@@
2樓ckp6250大是第1到20欄位
3樓garfield大是整個暫存檔跑完,有可能超過20
4樓syntech大和樓主一樣
可見樓主的問題不夠明確,以致各位大大解讀不同!!
拿3樓garfield大寫的小改一下
go top
scan
i=allt(str(recn()))
thisform.pageframe1.page2.text&i->Value=cc.cd
thisform.pageframe1.page2.text&i->toolTipText=cc.cd_name
if recn()+1>20
exit
endi
ends
使用巨集 & 時,資料庫欄位或表單物件可使用 ->
如:
sele 0
aa=sys(2015)
use test1 alia (aa) agai
bb=&aa->id |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4214 來自: Taipei,Taiwan
第 6 樓
|
發表於: 星期二 五月 02, 2017 8:50 am 文章主題: |
|
|
perry 寫到: |
4樓syntech大和樓主一樣
|
看起來很像,
但其實這是 garfield 大 的作法的變形.
"&" 變化無窮.
我最愛的就是用字串組合命令再直接執行.
尤其是有加密需求時.
_________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
smilechc
註冊時間: 2010-04-22 文章: 5
第 7 樓
|
發表於: 星期二 五月 02, 2017 10:20 pm 文章主題: |
|
|
日安,感謝各位大大回覆
不好意思問題沒寫清楚,由資料庫aa取出的"CM"資料存入cc,
cc裡的資料最多不會超過20。
然後再將cc的資料依序寫入Textbox1到Textbox20,如果不到20,則後面的textbox寫入""。
回覆各位大大的執行結果
ckp6250大大的結果為"Property TEXT is no found" <--這和我上面RUN的一樣,有ERROR。
版主大大的沒問題。
syntech大大的我不太確定我是否有打錯,但它出現Syntax error.
perry大大的也沒問題。
感謝各位大大的幫忙,像Syntech大大所說的字串的組合可以變化很多,
要學的還有很多,正努力學習中^_^。
其實原本是想以grid表示,但為了可以直覺化的修改所以想不到如何以grid做,就以textbox做。
用土法直接搬移,只是程式行數很多。
這個直覺化的修改是
假設有已從cc讀出5筆資料,並依序寫入text如下:
Textbox1 = AAA
Textbox2 = BBB
Textbox3 = CCC
Textbox4 = DDD
Textbox5 = EEE
如果BBB位置有誤,需在DDD後,因此我做一個BUTTON,按一次會變成如下
Textbox1 = AAA
Textbox2 = CCC
Textbox3 = BBB <--
Textbox4 = DDD
Textbox5 = EEE
再按一次,如下,即成為我要的結果
Textbox1 = AAA
Textbox2 = CCC
Textbox3 = DDD
Textbox4 = BBB <--
Textbox5 = EEE |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4214 來自: Taipei,Taiwan
第 8 樓
|
發表於: 星期二 五月 02, 2017 10:46 pm 文章主題: |
|
|
smilechc 寫到: |
syntech大大的我不太確定我是否有打錯,但它出現Syntax error.
|
=MESSAGEBOX(cCOMMAND)
看看組合出來的命令是什麼.
這種做法,檢查做出來的命令字串是一定要的.
命令可以正確執行之後,才做字串化.
---
不過這種做法還是有限制的. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
perry
註冊時間: 2014-07-20 文章: 203
第 9 樓
|
發表於: 星期二 五月 02, 2017 11:10 pm 文章主題: |
|
|
或許用ListBox會比較符合您要的!!
MoverBars=.T. ,可動態變更順序. |
|
回頂端 |
|
|
smilechc
註冊時間: 2010-04-22 文章: 5
第 10 樓
|
發表於: 星期四 五月 04, 2017 12:25 am 文章主題: |
|
|
了解
透過Syntech大大的說明,對於您的寫法,我己了解了,
因為TEXT有空值的部份,原本我按版主的方式寫
for i=1 to 20
thisform.pageframe1.page2.text&i..Value=""
thisform.pageframe1.page2.text&i..toolTipText=""
next
會出現語法錯誤,
後來用Syntech方式
FOR k=1 TO 20
cCMD1='thisform.pageframe1.page2.text'+ALLTRIM(STR(k))+'.Value=""'
&cCMD1
是可執行的。
因此由table 寫入TEXT,我用版主的方式。
在清空TEXT,我用了Syntech的方法。
目前解決問題,感謝各位大大的幫忙。
Perry的寫法我還在練習中,因此還沒寫上想法。
Perry提到的使用ListBox有想過,但我不確定是否滑鼠移到每個項目時.toolTipText的功能是否會被顯示。所以就沒再往LISTBOX的方式思考。
這個部份,我會再試試看是否可行。
感謝大大。 |
|
回頂端 |
|
|
perry
註冊時間: 2014-07-20 文章: 203
第 11 樓
|
發表於: 星期四 五月 04, 2017 6:50 am 文章主題: |
|
|
代碼: |
SELECT * FROM aa WHERE no=bb.no AND cd="CM" ORDER BY sn INTO CURSOR cc
go top
j=recc()
for i=1 to 20
j1=allt(str(i))
if i<=j
go i
endi
thisform.pageframe1.page2.text&j1->Value=iif(i>j,'',cc.cd)
thisform.pageframe1.page2.text&j1->toolTipText=iif(i>j,'',cc.cd_name)
next
|
用 ListBox 可用 wait wind ... nowa noclear 作為替代方案
在表單方面 MouseMove 中要 wait clear
目前看到的只是過程,結果是否異動資料內容或
只是存異動後的順序,皆會影响寫的方式.
並非2~4樓的大大們寫的有問題,他們只是建議您方法寫法!! |
|
回頂端 |
|
|
smilechc
註冊時間: 2010-04-22 文章: 5
第 12 樓
|
發表於: 星期四 五月 11, 2017 4:54 pm 文章主題: |
|
|
瞭解,太感謝各位大大了 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4214 來自: Taipei,Taiwan
第 13 樓
|
發表於: 星期五 五月 12, 2017 9:56 am 文章主題: |
|
|
話說, 要搞成物件陣列 TEXT(I),
應該差不多是這樣做吧.
代碼: |
DIMENSION aTEXT[20]
&& 把物件塞到ARRAY裡
FOR i=1 to 20
aTEXT[i] = eval('thisform.pageframe1.page2.text'+alltrim(str(i)))
NEXT
&& 清除TEXT值
FOR i=1 to 20
aTEXT[i].Value=''
aTEXT[i].toolTipText=''
NEXT
&& 指定TEXT值
select alias()
scan
i=tran(recno())
aTEXT[i].Value=cc.cd
aTEXT[i].toolTipText=cc.cd_name
endscan
|
如果屬於可以塞進其他物件的物件(ContainerObject ,例如form,grid,pageframe,page,....)
都會有 controls (所包含的物件之陣列),及controlcount (所包含的物件之數量)兩個屬性,
如果只是想要存取某種物件,那就自己重新整理一次
代碼: |
WITH .PAGE1
FOR I=1 TO .controlcount
IF .CONTROLS(I).BASECLASS ='Textbox'
aTEXT(J) = .CONTROLS(I)
ENDIF
NEXT
ENDWITH
FOR J=1 TO 100
? aTEXT(J).NAME
NEXT
|
_________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙
syntech 在 星期五 五月 12, 2017 2:44 pm 作了第 1 次修改 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4214 來自: Taipei,Taiwan
第 14 樓
|
發表於: 星期五 五月 12, 2017 2:40 pm 文章主題: |
|
|
由這篇:
https://msdn.microsoft.com/zh-tw/library/kxt4418a(v=vs.90).aspx
----------------------
概念上的差異
在 Visual Basic 6.0 中,控制項陣列可以用來管理表單上的控制項,它們提供了共用事件處理常式、逐一查看控制項群組,以及在執行階段加入控制項的功能。
在 Visual Basic 2008 中,已不再支援控制項陣列。改為使用事件模型讓控制項陣列變成非必要的功能,而且 .NET Framework 會提供使用控制項的相同功能。
共用事件處理常式
在 Visual Basic 6.0 中,控制項陣列可用來指定共用一組事件的控制項群組。控制項必須屬於相同型別,而且必須具有相同名稱。
Visual Basic 2008 可讓任何事件處理常式從多個控制項處理事件,即使這些控制項具有不同的名稱或不同型別的控制項也一樣。
例如,您可以將兩個 Button 控制項 (Button1 和 Button2) 及一個 CheckBox 控制項 (CheckBox1) 加入至表單,然後建立事件處理常式,處理所有三個控制項的 Click 事件。
逐一查看控制項
Visual Basic 6.0 控制項陣列的另一個功能是能夠使用 Index 屬性,逐一查看控制項群組。例如,若要清除控制項陣列中所有 TextBox 控制項的文字,您可以將 Index 屬性當做迴圈 (Loop) 變數,逐一查看控制項陣列。
雖然 Visual Basic 2008 控制項沒有 Index 屬性,但是您仍可以使用 Control 類別的 Control.ControlCollection,逐一查看表單或容器上的控制項。
在 Visual Basic 6.0 中,單一控制項陣列中的控制項可以位於不同容器中。例如,包含在兩個不同 Frame 控制項的 TextBox 控制項,可以是相同控制項陣列的一部分。
在 Visual Basic 2008 中,Controls 集合只會傳回位在單一容器中的控制項。您必須個別地逐一查看每個容器控制項中的控制項,這可以使用遞迴函式完成
----------------------
基本上,古早的VFP3 的物件模型設計就已經與Visual Basic 2008 概念上一樣.
所以運用的方式自然會比較偏上Visual Basic 2008,與VB6 不同. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
|