上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
LiuRambo
註冊時間: 2007-11-27 文章: 481
第 16 樓
|
發表於: 星期一 三月 21, 2011 4:57 pm 文章主題: |
|
|
這我就不知道了
我是用VFP6測的 而且還是精簡版的
我的測試方法也是一樣啊
執行FORM之後 先點關連 再點到其中一筆讓GRID1變動
然後點解除 GRID1就立刻看到全部資料啦
還是請其他高手釋疑一下??? |
|
回頂端 |
|
 |
tettp
註冊時間: 2008-11-06 文章: 6
第 17 樓
|
發表於: 星期一 三月 21, 2011 7:32 pm 文章主題: |
|
|
Hi 215001~
經測試果然發現您所謂的問題....
************************************
SELECT t2
set RELATION OFF INTO t1
go TOP IN t2
SELECT t1
SET INDEX TO !!!<< 重點是要close index,
GO TOP IN t1 !!! << move record (top)
thisform.grid1.SetFocus
SET ORDER TO a1 !!!<<重新打開index,,
********************************************
以上程式碼由 LiuRambo 提供, 修改為command1.click
祝您好運 |
|
回頂端 |
|
 |
215001
註冊時間: 2003-06-11 文章: 393
第 18 樓
|
發表於: 星期二 三月 22, 2011 10:55 am 文章主題: |
|
|
謝謝 LiuRambo 不厭其煩的回答, 解除關聯前,如果沒有先點選在 "22222" 那一列,就不會看到問題所在
謝謝 tettp ,總算看出我的問題,依你的方式,可以 "暫時" 顯示出全部資料,但是滑鼠在 Grid1,Grid2 間來回點選幾次後,資料又不見了 ??? |
|
回頂端 |
|
 |
tettp
註冊時間: 2008-11-06 文章: 6
第 19 樓
|
發表於: 星期二 三月 22, 2011 11:14 am 文章主題: |
|
|
請再試一下...
=============================
command1.click (解除關連method)
SELECT t2
SET RELATION OFF INTO t1
GO TOP IN t2
SELECT t1
SET INDEX TO
GO TOP IN t1
thisform.grid1.refresh
command2.click (設定關連method)
SELECT t1
SET ORDER TO a1
SELECT t2
SET RELATION TO a1 INTO t1
thisform.grid1.Refresh
================================= |
|
回頂端 |
|
 |
tettp
註冊時間: 2008-11-06 文章: 6
第 20 樓
|
發表於: 星期二 三月 22, 2011 1:35 pm 文章主題: |
|
|
這些主要為grid的問題,我的環境為WIN7(x64)+VFP9sp2,別的環境不說
基本上絕不是thisform.grid2.recordsource 的問題
附上已修正的檔案 |
|
回頂端 |
|
 |
215001
註冊時間: 2003-06-11 文章: 393
第 21 樓
|
發表於: 星期二 三月 22, 2011 1:44 pm 文章主題: |
|
|
謝謝你,已下載測試,可以再加個 "尋找" 的動作試試嗎 ?
command3.click (尋找method)
SELECT t1
SET ORDER TO a1
SEEK "111"
thisform.grid1.SetFocus
又只剩下 ??? |
|
回頂端 |
|
 |
215001
註冊時間: 2003-06-11 文章: 393
第 22 樓
|
發表於: 星期三 三月 23, 2011 8:55 pm 文章主題: |
|
|
目前只好暫時先採用重複開啟 test 表單 兩次的方法
第1次呼叫 test 表單時,只做一般正常顯示用 (不用到 relation)
當要用到 relation 時,再呼叫一次 test 表單
只要將2份 test 表單之間的切換動作,做的順暢一點,可暫時解決燃眉之苦
也感謝各位的解答 |
|
回頂端 |
|
 |
LiuRambo
註冊時間: 2007-11-27 文章: 481
第 23 樓
|
發表於: 星期三 三月 23, 2011 9:11 pm 文章主題: |
|
|
假設relation使用上真的有問題的話
換用Grid1.AfterRowColChange
================
qq = aa.a1
thisform.grid2.recordsourcetype = 1
thisform.grid2.recordsource = ''
select * from aa where aa.A1 = qq into cursor temp2
thisform.grid2.recordsource = 'temp2'
thisform.grid2.refresh |
|
回頂端 |
|
 |
215001
註冊時間: 2003-06-11 文章: 393
第 24 樓
|
發表於: 星期三 三月 23, 2011 10:19 pm 文章主題: |
|
|
謝謝 LiuRambo 的建議
因為原表單包含了完整的 新增/修改/刪除/查尋/篩選(採用relation)的動作
資料大約有數百萬筆,故不敢用 sql 的方式
(因為光第1次執行該表單時[無條件時] ,Select * from temp 就需要等好幾秒鐘了)
所以才會採用 dbf + relation 的方式,可完整顯示資料,又可快速篩選資料 |
|
回頂端 |
|
 |
LiuRambo
註冊時間: 2007-11-27 文章: 481
第 25 樓
|
發表於: 星期三 三月 23, 2011 10:59 pm 文章主題: |
|
|
唉啊啊
既然你就已經知道"不能空白"
要不就提示使用者不能空白
不然先檢查是否空白瞜 是的話直接將GRID2指向實體TABLE不就得了 |
|
回頂端 |
|
 |
215001
註冊時間: 2003-06-11 文章: 393
第 26 樓
|
發表於: 星期四 三月 24, 2011 10:55 am 文章主題: |
|
|
有時是實體table ,有時是資料集,又要可以修改資料,會很麻煩
所以目前已先改成: 第1次開啟test表單時,只當一般查詢用,當要用到relation篩選時,再重複開啟test表單1次,在兩份表單來回切換,目前測試還滿順的,使用者應該也看不出來
暫時就先這樣了 |
|
回頂端 |
|
 |
andywilliams
註冊時間: 2004-10-23 文章: 111
第 27 樓
|
發表於: 星期六 三月 26, 2011 12:31 pm 文章主題: |
|
|
select temp2
set order to 0 |
|
回頂端 |
|
 |
215001
註冊時間: 2003-06-11 文章: 393
第 28 樓
|
發表於: 星期六 三月 26, 2011 4:36 pm 文章主題: |
|
|
謝謝你,已下載測試,可以再加個 "尋找" 的動作試試嗎 ?
set order to 0 是可以顯示出全部的資料
但是表單內還需要有 "尋找" 或是 變更排序 的功能,還是會用到 order
可試試:
sele temp2
set order to xxx
seek "111"
thisform.grd2.setfocus
找得到資料,但是 grd2 就是顯示不出來 |
|
回頂端 |
|
 |
LiuRambo
註冊時間: 2007-11-27 文章: 481
第 29 樓
|
發表於: 星期六 三月 26, 2011 5:41 pm 文章主題: |
|
|
我的"習慣"是GRID有異動一定要:
recordsoure=""
recordsoure="xxx"
refresh
setfocus |
|
回頂端 |
|
 |
|