Thñ thuËt trong Access
Xem bai viet bang font Unicode
PCWorld VN 6/99
Option Group th«ng minh (Access 97/95/2.0)
Th«ng thßng khi b¹n nhãm c¸c nót Option vµo trong mét Option group, th× mçi nót Option nµy sÏ kh«ng nhËn ®îc sù kiÖn nhÊn ®óp vµo mét nót Option nµo ®ã·. §iÒu nµy g©y khã chÞu cho ngêi dïng cã thãi quen nhÊn kÐp chuét vµo Option ®îc chän ®Ó ®ång thêi x¸c nhËn l¹ chän Option vµ ®ãng l¹i Dialog box, (th«ng thêng th× trong Dialog box kiÓu chän lùa mét trong nhiÒu Option, ta ph¶i chän bÊm nót Option, råi bÊm tiÕp nót OK).
Chóng ta lîi dông sù kiÖn DblClick cña ®èi tîng Option group ®Ó gi¶i quyÕt vÊn ®Ò trªn. Khi Êy sù kiÖn DblClick lªn mét nót Option bÊt kú trong Option group sÏ kÝch nót OK (hoÆc nót lÖnh t¬ng øng víi nót Option Êy), vµ sau ®©y lµ ®o¹n m· minh häa:
Sub grpOpt_DblClick (Cancel As Integer)
‘ Fire the OK Command Button
Call cmdOK_Click
End Sub
§o¹n m· trong nót lÖnh OK nh sau:
Sub cmdOK_Click ()
If grpOpt.Value = 1 Then
<More code here>
<Ca’c ma~ u+’ng vo+’i nu’t Option 1>
Else
<More code here>
<Ca’c ma~ u+’ng vo+’i nu’t Option kha’c>
End If
End Sub
Gi÷ cho c¸c tiÕn tr×nh DOS tiÕp tôc bÞ che
(Access 97/95 - Visual Basic (32-bit)
Trong khi lµm viÖc, cã nhiÒu khi chóng ta cÇn thùc thi mét lÖnh Dos nµo ®ã hay ph¶i gäi ®Õn Shell Command tõ trong øng dông cña m×nh. §Ó kh«ng bÞ gi¸n ®o¹n ®iÒu khiÓn mµn h×nh hiÖn hµnh cña ch¬ng tr×nh ®ang ch¹y, b¹n muèn ng¨n kh«ng cho hÖ ®iÒu hµnh trao "®iÒu khiÓn" tõ tiÕn tr×nh ®ang thi hµnh nµy cho mét tiÕn tr×nh Dos hay Windows kh¸c ®ang ®îc thùc thi trong chÕ ®é nÒn.
§o¹n m· sau cã thÓ gióp b¹n gi÷ cho tiÕn tr×nh ®ang thùc thi tiÕp tôc ch¹y ë chÕ ®é foreground vµ buéc c¸c tiÕn tr×nh Dos hay Windows ®îc gäi ®Õn vÉn ch¹y ë chÕ ®é background:
Declare Function SetFocus Lib "user32" _
(ByVal hWnd As Long) As Long
Declare Function GetTopWindow Lib_ "user32" (ByVal hWnd As Long) As Long
Sub Main()
On Error Resume Next
Dim Ret As Variant
Dim lngAct As Long
Dim lngRet As Long
lngAct = GetTopWindow
Ret = Shell(Command, vbMinimizedNoFocus)
lngRet = SetFocus(lngAct)
End Sub
Gi¶i ph¸p cho mét Combo box cã qu¸ nhiÒu môc chän
(Access 97/95/2.0)
ThËt lµ khã nhäc khi muèn chän mét môc trong Combo box cã hµng tr¨m dßng, nhÊt lµ trong trßng hîp b¹n thuéc lo¹i "bèn m¾t". Nh»m gi¶i quyÕt vÊn ®Ò nµy, t¹i sao chóng ta kh«ng "chia ®Ó trÞ" b»ng c¸ch t¹o ra nhiÒu Combo box nhá h¬n, mµ mçi Combo box nµy chØ chøa mét phÇn d÷ liÖu cña Combo box ban ®Çu ®Ó b¹n lµm viÖc tho¶i m¸i h¬n.
Sau ®©y lµ ®o¹n m· t¹o ra sù ph©n phèi d÷ liÖu gi÷a c¸c Combo box.
§©y lµ dßng lÖnh SQL trong RowSource cña Combo box nguyªn thñy:
SELECT DISTINCTROW [tblUnits].[ID], _
[tblUnits].[UnitName] FROM [tblUnits] ;
Trong Combo box con thø nhÊt ta thay RowSource cña nã nh sau:
SELECT DISTINCTROW [tblUnits].[ID], _
[tblUnits].[UnitName] FROM [tblUnits] _
WHERE [UnitName] BETWEEN "A" AND "D";
Dßng lÖnh SQL nµy chØ cho phÐp c¸c dßng cã UnitName tõ A ®Õn D xuÊt hiÖn trong Combo box thø nhÊt. Thùc hiÖn t¬ng t víi c¸c Combo box cßn l¹iÈ. Lóc ®ã sÏ kh«ng cßn Combo box "voi" nöa mµ b¹n sÏ cã mét sè Combo box con dÔ qu¶n lý h¬n.
DuyÖt String
(VBA - Visual Basic 5.0/4.0 - Access 97/95/2.0 - Excel)
RÊt nhiÒu khi chóng ta cÇn trÝch mét String ra nhiÒu phÇn nhá, vÝ dô nh trÝ·ch String ngµy th¸ng thµnh nh÷ng trêng riªng biÖt: ngµy, th¸ng, n¨m.
Chóng ta gi¶i quyÕt vÊn ®Ò nµy b»ng mét hµm cã ba th«ng sè: th«ng sè thø nhÊt lµ String cÇn duyÖt, th«ng sè thø hai lµ thø tù cña phÇn muèn trÝch ra (String con), th«ng sè thø ba lµ ký tù ph©n c¸ch ®äc dïng trong String. VÝ dô:
? FieldSplit("3/14/97",2,"/")
14
? FieldSplit("2-3-96",3,"-")
96
? FieldSplit("124.1244.123434.",1,".")
124
Vµ ®©y lµ m· nguån cña hµm FieldSplit:
Function FieldSplit(FullString As_
Variant, FieldNum As Integer,_
SplitChar As String) As Variant
Dim MyArray As Variant
Dim j As Integer, k As Integer
Dim x As Integer, z As Integer
Dim TempString As String
‘Count the fields within FullString
z = 1
For k = 1 To Len(FullString) - 1
If Mid$(FullString, k, 1) = SplitChar _
Then
z = z + 1
End If
Next k
‘Check if user requested a field number
‘greater than fields in FullString
If FieldNum > z Then
FieldSplit = Null
Exit Function
End If
‘Set array to the correct number of fields
ReDim MyArray(z)
TempString = ""
j = 0
For x = 1 To Len(FullString)
If Mid$(FullString, x, 1) = SplitChar _
Then
MyArray(j) = TempString
TempString = ""
j = j + 1
End If
If Mid$(FullString, x, 1) <>_
SplitChar Then
TempString = TempString & _
Mid$(FullString, x, 1)
End If
Next x
MyArray(j) = TempString
FieldSplit = MyArray(FieldNum - 1)
End Function
Mét khi b¹n ®· s¸ng t¹o cho m×nh ®äc mét hµm nh vËy, b¹n cã thÓ gi÷ cho m×nh hay "ban ph¸t" cho b¹n bÌ; nã dïng ®îc trong c¶ Excel, Access vµ Visual Basic.
H÷u Hoan
Theo Advisor VB
PcLeHoan
1996 - 2002
Mirror :
http://www.pclehoan.com
Mirror :
http://www.lehoanpc.net
Mirror :
http://www.ktlehoan.com