技術(shù) 點(diǎn)
- 技術(shù)
- 點(diǎn)
- V幣
- 點(diǎn)
- 積分
- 8225
|
很多網(wǎng)友碰到動(dòng)態(tài)改變窗體的記錄集時(shí),如何進(jìn)行窗體字段的顯示問題。
試了一下,ACCESS 2003中,窗體運(yùn)行時(shí)無法動(dòng)態(tài)的添加控件。只好用另外一個(gè)方法來變通地來實(shí)現(xiàn)這個(gè)功能。
思路:
在窗體上一次性添加 256 個(gè) textbox控件 T0,T1,T3,...,T255(因?yàn)锳CCESS2003中一個(gè)查詢或表最多255個(gè)字段)
然后根據(jù)窗體綁定的數(shù)據(jù)源的記錄集,動(dòng)態(tài)地對(duì)T0,T1,T3...來進(jìn)行字段綁定,并設(shè)置列是否顯示。
步驟:
1. 生成這個(gè)窗體 flexForm ,你可以一個(gè)一個(gè)來復(fù)制這些個(gè)textbox,也可以用如下代碼生成。
Public Sub createFlexFrom()
Dim sOldFrmName As String
Dim frm As Form
Set frm = CreateForm
sOldFrmName = frm.Name
Dim ctlLabel As Control, ctlText As Control
Dim i As Integer
For i = 0 To 255
Set ctlText = CreateControl(frm.Name, acTextBox)
ctlText.Name = "T" & i
Set ctlLabel = CreateControl(frm.Name, acLabel, , ctlText.Name)
ctlLabel.Name = "L" & i
Next i
frm.DefaultView = 2
frm.NavigationButtons = False
DoCmd.Close acForm, frm.Name, acSaveYes
DoCmd.Rename "flexForm", acForm, sOldFrmName
End Sub
運(yùn)行上述代碼,可得到一個(gè)名為 flexForm 的窗體,窗體默認(rèn)顯示方式為"數(shù)據(jù)表",無記錄導(dǎo)航按鈕。當(dāng)然你可以按需要改成你希望的窗體名。
2. 打開這個(gè) flexForm 的設(shè)計(jì)模式,按ALT+F11 進(jìn)入VBE環(huán)境,在flexForm窗體模塊上添加一個(gè)過程 bindRecordset,代碼如下。
游客,如果您要查看本帖隱藏內(nèi)容請(qǐng) 回復(fù)
3. 在你自己的主窗體中可以應(yīng)用這個(gè)窗體做為子窗體,并可以動(dòng)態(tài)的改變這個(gè)窗體的記錄集。
例如,主窗體中可以執(zhí)行 Me.Child3.Form.bindRecordset "select * from crossQuery"
示例:游客,如果您要查看本帖隱藏內(nèi)容請(qǐng) 回復(fù)
打開form1,輸入 t ,點(diǎn)擊按鈕,查看子窗體的變化。 然后輸入 query1,點(diǎn)擊按鈕。
createFlexForm在 模塊中。
提醒: 具體使用中,你可以添加必要的容錯(cuò)代碼。
******************
* 一切皆有可能 *
******************
.
ACMAIN - Access論壇回貼準(zhǔn)則(個(gè)人).
.
同一貼子不回復(fù)第二次
.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://ctxi.cn .
.
http://ctxi.cn/home/space.php?uid=141646 .
|
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有帳號(hào)?注冊(cè)
x
評(píng)分
-
查看全部評(píng)分
|