Mét sè thñ thuËt nhá
Xem bai viet bang font Unicode
PCWorld VN 7/99
B¶o mËt MDB trong Access (Access 97/2.0)
NÕu b¹n viÕt øng dông cã truy cËp c¸c tËp tin MDB cña Access, b¹n cÇn ph¶i dïng mét c¸ch b¶o mËt nµo ®ã, ®Ó tr¸nh sù dßm ngã cña nh÷ng tay ph¸ ho¹i.
Mét trong c¸c c¸ch mµ nhiÒu nhµ lËp tr×nh DAO (Data Access Object) thêng dïng lµ thay ®æi phÇn më réng cña tËp tin *.MDB.
Ngêi dïng Access ®Òu biÕt tËp tin *.MDB lµ träng t©m cña c¬ së d÷ liÖu (CSDL). Râ rµng phÇn më réng .MDB nµy lµ mét gîi ý cho nh÷ng tay tß mß muèn dïng Access më tËp tin *.MDB cña b¹n. MÆc dï b¹n ®· dïng mËt khÈu ®Ó b¶o vÖ CSDL cña m×nh, nhng ®èi víi nhiÒu ngêi th× viÖc dß t×m mËt khÈu l¹i lµ mét c«ng viÖc høng thó h¬n trß ch¬i Solitaire (ngoµi ra còng cã nhiÒu c«ng cô gióp hä lµm c«ng viÖc dß t×m mËt khÈu mét c¸ch nhÑ nhµng, nhanh chãng vµ th«ng minh - ND).
Thay ®æi phÇn më réng cña tËp tin MDB kh«ng ¶nh hëng ®Õn ch¬ng
tr×nh cña b¹n, khi b¹n dïng tªn ®Çy ®ñ (bao gåm phÇn më réng ®·
thay ®æi cña tËp tin MDB) trong m· ch¬ng tr×nh cña m×nh. §iÒu nµy
khiÕn nh÷ng tay tß mß khã lßng t×m ra tËp tin CSDL cña b¹n ®Ó cã
thÓ triÓn khai c¸c c«ng cô dß t×m mËt khÈu t¬ng øng.
CÇn ph¶i nãi thªm r»ng c¸c macro virus Access thêng t×m c¸c tËp tin
cã phÇn më réng lµ MDB ®Ó l©y nhiÔm. Vµ lu ý ®õng khai b¸o phÇn
më réng míi nµy vµo danh s¸ch tËp tin tù ®éng ®îc Access më.
VB Combo Box nhanh, nhanh vµ nhanh h¬n n÷a (Visual Basic 5.0/4.0)
B¹n h·y h×nh dung t×nh huèng sau: mét CSDL Warehouse cã 100.000 hép (box) chøa tµi liÖu. B¹n muèn dïng mét Browser ®Ó xem néi dung cña c¸c tµi liÖu nµy. Table1 cã ba trêng: "box-code" (kiÓu text bao gåm box-number vµ ®Þa chØ vËt lý cña box), "date" vµ "client-code". Table2 cã hai trêng: box-code vµ néi dung tµi liÖu, trong ®ã mçi box cã thÓ cã nhiÒu h¬n mét néi dung.
Dïng hai danh s¸ch (list box): List1 ®Ó chän c¸c box, List2 ®Ó thÈm tra néi dung tµi liÖu cña box. VÊn ®Ò ë ®©y lµ lµm thÕ nµo hiÓn thÞ 100.000 dßng vµo trong List1. Gi¶i ph¸p lµ chia chóng theo trang nh ®îc tr×nh bµy trong ®o¹n m· díi ®©y. Gi¶ ®Þnh r»ng Table1 vµ Table2 lµ c¸c ®èi tîng b¶ng vµ ®îc chØ môc theo Idx_BoxCode, cßn Tbl1 vµ Tbl2 lµ c¸c b¶ng con t¬ng øng.
‘Module-level variables
Dim db As database
Dim Tbl1 As Table
Dim Tbl2 As Table
Sub Form_Load()
Dim iCount As Integer
Const MAX_ITEMS = 10
Set db =_ OpenDatabase("F:\DAT\",_ False, False, "DBase
III;")
Set Tbl1 =_ db.OpenTable("Table1")
Set Tbl2 =_ db.OpenTable("Table2")
Tbl1.Index = "Idx_BoxCode"
Tbl2.Index = "Idx_BoxCode1"
Do While Not Tbl1.EOF
List1.AddItem Tbl1!BoxCode & " " _
& Tbl1(1) & " " & Tbl1(2)
iCount = iCount + 1
If iCount = MAX_ITEMS Then Exit Do
Tbl1.MoveNext
Loop
List1.ListIndex = 0
End Sub
Sub List1_CLick()
Dim temp As String
If List1.ListIndex = 0 Then
Tbl1.Seek "=", Left$(List1.List(0),7)
Tbl1.MovePrevious
If Tbl1.BOF Then
Tbl1.MoveNext
Else
List1.RemoveItem 9
List1.AddItem Tbl1!BoxCode & " " _
& Tbl1(1) & " " &_ Tbl1(2), 0
End If
ElseIf List1.ListIndex = 9 Then
Tbl1.Seek "=", Left$(List1.List(9),7)
Tbl1.MoveNext
If Tbl1.EOF Then
Tbl1.MovePrevious
Else
List1.RemoveItem 0
List1.AddItem Tbl1!BoxCode & " " _
& Tbl1(1) & " " & Tbl1(2), 9
End If
End If
List2.Clear
Tbl2.Seek "=", Left$(List1.Text, 7)
If Tbl2.Nomatch = False Then
temp = Tbl2!BoxCode
Do While Tbl2!BoxCode = temp
List2.AddItem Tbl2!BoxCode & " " Tbl2(1)
Tbl2.MoveNext
If Tbl2.EOF = True Then Exit Do
Loop
End If
End Sub
Víi ®o¹n m· trªn th× cho dï sè lîng mÉu tin cña Table1 rÊt lín nhng chØ cã 10 mÉu tin t¬ng øng ®îc chuyÓn vµo List1. Khi dßng ®Çu tiªn hay dßng cuèi cïng cña List1 ®îc chän ®Õn th× mét dßng míi sÏ ®îc thay vµo ®Çu hoÆc cuèi List1.
C¸ch nµy thùc sù tèt h¬n c¸ch sö dông ph¸t biÓu hµm FindFirst vµ FindNext hoÆc dïng c©u lÖnh cña SQL: "SELECT * FROM Table2 WHERE BoxCode = ..." . §iÒu bÊt tiÖn duy nhÊt cña nã lµ: ®èi tîng Table nµy kh«ng thÓ sö dông ®îc trong kiÕn tróc client-server.
GiÊu néi dung cña Workbook (Excel 97/95)
Trong mét ch¬ng tr×nh Excel VBA cña m×nh, b¹n muèn lÇn lît më vµ ®ãng ®Õn h¬n 300 tËp tin Excel mµ kh«ng hiÓn thÞ néi dung cña chóng khi ®ãng më. Muèn thÕ b¹n ®Æt thuéc tÝnh Visible cña øng dông vÒ False. Nh vËy trong khi øng dông më råi ®ãng tËp tin, néi dung tËp tin sÏ kh«ng ®îc hiÓn thÞ.
§o¹n m· sau ®©y sÏ minh häa cho ®iÒu trªn, víi vßng lÆp cña h¬n 300 lÇn ®ãng më tËp tin. Trong mçi lÇn më tËp tin, néi dung « A1 ®îc hiÓn thÞ. Gi¶ ®Þnh tån t¹i tËp tin "C:\MyBook.xls".
Sub OpenButHide()
Application.Visible=False
Workbooks.open FileName:="C:\MyBook.xls"
Worksheets("Sheet1").Activate
‘ Retrieve the value from the opened file.
MsgBox "Value in cell ‘A1’"_ &Range("A1").Value
Workbooks("MyBook.xls").Close_
SaveChanges:=False
End Sub
Chó ý ®Æt l¹i thuéc tÝnh Visible cho øng dông b»ng dßng lÖnh sau:
Application.Visible=True
H÷u Hoan
Theo Advisor VB 5/99
PcLeHoan
1996 - 2002
Mirror :
http://www.pclehoan.com
Mirror :
http://www.lehoanpc.net
Mirror :
http://www.ktlehoan.com