注冊(cè) 登錄
Office中國(guó)論壇/Access中國(guó)論壇 返回首頁(yè)

yanghua1900363的個(gè)人空間 http://m.mzhfr.cn/?158746 [收藏] [復(fù)制] [分享] [RSS]

日志

紙上得來(lái)終覺(jué)淺,絕知此事要躬行

熱度 2已有 2042 次閱讀2012-11-3 11:32 |個(gè)人分類:窗體

本周,為了一個(gè)窗體數(shù)據(jù)鎖定的問(wèn)題傷透了腦經(jīng)。
我的數(shù)據(jù)表是直接綁定在窗體上的,一不小心就會(huì)把數(shù)據(jù)修改掉,造成數(shù)據(jù)的不完整性,準(zhǔn)確性就不用講了。所以下決心改變一下。
首先,借用幫助文檔里的一個(gè)實(shí)例:

下面的示例檢查窗體上所有控件的 ControlType 屬性。對(duì)每個(gè)標(biāo)簽和文本框控件,該過(guò)程均切換其 SpecialEffect 屬性。當(dāng)標(biāo)簽控件的 SpecialEffect 屬性設(shè)置為陰影,文本框的 SpecialEffect 屬性設(shè)置為普通,并且 AllowAdditions、AllowDeletions AllowEdits 屬性均設(shè)置為 True 時(shí),intCanEdit 變量將切換為允許編輯基礎(chǔ)數(shù)據(jù)。

Visual Basic for Applications

Sub ToggleControl(frm As Form)

    Dim ctl As Control

    Dim intI As Integer, intCanEdit As Integer

    Const conTransparent = 0

    Const conWhite = 16777215

    For Each ctl in frm.Controls

        With ctl

            Select Case .ControlType

                Case acLabel

                    If .SpecialEffect = acEffectShadow Then

                        .SpecialEffect = acEffectNormal

                        .BorderStyle = conTransparent

                        intCanEdit = True

                    Else

                        .SpecialEffect = acEffectShadow

                        intCanEdit = False

                    End If

                Case acTextBox

                    If .SpecialEffect = acEffectNormal Then

                        .SpecialEffect = acEffectSunken

                        .BackColor = conWhite

                    Else

                        .SpecialEffect = acEffectNormal

                        .BackColor = frm.Detail.BackColor

                    End If

            End Select

        End With

    Next ctl

    If intCanEdit = IFalse Then

        With frm

            .AllowAdditions = False

            .AllowDeletions = False

            .AllowEdits = False

        End With

    Else

        With frm

            .AllowAdditions = True

            .AllowDeletions = True

            .AllowEdits = True

        End With

    End If

End Sub

囫圇吞棗,沒(méi)有完全讀懂這段代碼,就開(kāi)始改造這個(gè)過(guò)程,結(jié)果行不通,就放棄了。

接著,用“Form.RecordLocks 屬性 ”,提示相關(guān)記錄已以獨(dú)占的方式打開(kāi),老提示錯(cuò)誤,從沒(méi)遇到這種情況,所以就棄之不用。

沒(méi)有退路了,只好另辟蹊徑,按照自己對(duì)access2007 羅斯文數(shù)據(jù)庫(kù)的代碼的理解,使用了對(duì)象的“Enabled”和“l(fā)ocked”屬性,啃下了這塊骨頭。

   我想,幫助中的那段代碼應(yīng)該是很有代表性的,把它改成可控的事件過(guò)程應(yīng)該是可行的,其在主窗體和子窗體中還是很有實(shí)用天地的,所以希望看到的朋友,能夠改一改,以解菜鳥(niǎo)們的燃眉之急。

全部作者的其他最新日志

發(fā)表評(píng)論 評(píng)論 (3 個(gè)評(píng)論)

回復(fù) tmtony 2012-11-4 18:01
學(xué)得很快啊。自己不斷寫(xiě),才能進(jìn)步
回復(fù) yanghua1900363 2012-11-5 10:43
謝謝王站的鼓勵(lì)!
回復(fù) yanwei82123300 2012-11-22 14:31
yanghua1900363,真棒比我強(qiáng)11

facelist doodle 涂鴉板

您需要登錄后才可以評(píng)論 登錄 | 注冊(cè)

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 08:32 , Processed in 0.066827 second(s), 18 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部