Frequently Asked Questions Visual basic 6
Những câu hỏi thường gặp khi lập trình ngôn ngữ Visual basic 6.
Frequently Asked Questions (Faq) VB 6.0
Một File đã được Add vào trong Project nhưng sao không thấy nằm trong
Project Folder?
Sau khi bạn dùng menu Command Project | Add File .. để cho một File ( Form hay
Module) vào trong Project, Project biết lấy File ấy từ đâu nhưng không tạo ra một bản
sao (copy) của File ấy trong Project Folder. Nếu bạn muốn có một copy của File ấy
trong Project Folder bạn phải dùng File | Save As .. để chứa File ấy trong một File
trùng tên hay có tên mới trong Project Folder.
Nhớ là có khi bạn muốn giữ chỉ một bản của một Basic Module tại một chỗ và dùng nó
trong nhiều Project. Mỗi lần muốn dùng nó trong một Project mới bạn chỉ cần Add File
nó vào trong Project nhưng không muốn làm một bản sao của nó trong Project Folder.
Lợi điểm của cách nầy là khi cần sữa một Sub trong Basic Module bạn chỉ cần sữa
một bản thôi, chớ không cần phải vô từng Project Folder để sữa.
SetUp hay Package & Deployment là gì?
SetUp là công việc gói ghém tất cả những gì cần để chạy nhu liệu áp dụng
(application software) của bạn rồi sau đó đem cài đặt lên một computer khác.
Ngày xưa trong thời Operating System DOS, để chạy một nhu liệu áp dụng ta chỉ cần
một "exe" file của nhu liệu đó và mấy cái data files. Do đó chỉ cần sao (copy) những
files ấy vào một folder trên computer khác là chạy được ngay.
Một nhu liệu VB bạn vừa viết xong thì cần nhiều thứ lỉnh kỉnh mới chạy được. Ít nhất
nó cần những VB Components ta dùng từ Toolbox và những Library cho database
..vv..
Hầu hết các files yểm trợ nầy cần phải được đặt vào folder C:\Windows\System của
computer kia. File "exe" của nhu liệu áp dụng, Help file và các data file khác thì có thể
được đặt vào một folder theo sự lựa chọn của user. Thí dụ như C:\MyProgram.
Ngoài ra một số các VB ActiveX components cần phải được đăng ký vào Registry của
Windows, và các tin tức về ODBC cűng cần được setup nữa.
Microsoft có cho ta nhu liệu Package & Deployment Wizard để giúp ta cho vào
(include) những files nào ta cần trước khi nó bắt đầu công việc nén (compress) các
files lại thành những "cab" files (file có extension là "cab") và sanh ra một SetUp.exe
file với một SetUp.lst file. Ta cần chạy file SetUp.exe ở computer kia để nó làm ba
chuyện:
1. Giản (uncompress) các Cab files ra thành những file rời.
2. Copy các files ấy vào C:\Windows\System, C:\MyProgram và những folder
nhánh của C:\MyProgram nếu cần (td: C:\MyProgra\images, C:\MyProgra\sound
..)
3. Ðăng ký những VB ActiveX vào Registry
4. Tạo ra Data Source Name (DSN) file cho ODBC nếu bạn đang dùng.
Bạn có thể dùng Notepad để mở SetUp.lst ra xem cho biết. Nó chứa những dữ kiện
cần thiết cho việc setup. Khi chạy setup xong trên computer kia bạn sẽ thấy nó sanh
ra một file mới tên "st6unst.log" nằm trong cùng folder với nhu liệu áp dụng.
Sau nầy nếu bạn muốn uninstall (lấy nhu liệu ra khỏi computer) thì vô Control Panel
và click Add/Remove Programs. Khi dialog hiện ra với Tab Install/Uninstall chọn nhu
liệu bạn muốn uninstall rồi click nút Add/Remove. Windows sẽ dựa vào st6unst.log để
biết cần delete những files nào, ở đâu và xóa tên các VB ActiveX trong Registry
(deregister).
Thường thường các "cab" files vừa vặn cở của dĩa floppy 1.44MB. Những nhu liệu VB
nhỏ chiếm ít nhất 4 dĩa floppy. Nếu bạn chạy setup từ CD có khi thấy các file original
hoặc không bị compress hoặc được compress vào một cab file duy nhất rất lớn thay vì
nhiều cab files cở 1.44MB.
Lưu ý vài điểm sau:
• Package & Deployment của Microsoft có khi không register ActiveX component
của các công ty khác (third party software companies) khi ta chạy setup. Bạn
có thể thử tự register (manually) một ActiveX tên "theVBActiveX.ocx" bằng
cách dùng Start | Run :
regsvr32 c:\Windows\System\theVBActiveX.ocx
• Nếu Package & Deployment không register được các third party ActiveX như
Crystal Report, PDQComm, TrueDBGrid .vv.. thì thử dùng Wise Installation
hay InstallShield cho việc setup. Trong khi Package & Deployment của
Microsoft dựa vào Project file để biết bạn cần những ActiveX components nào
thì Wise Installation có thể "watch" bạn chạy thử nhu liệu áp dụng để biết bạn
cần những thứ gì? Nó bắt những Windows messages để biết việc đó, giống như
công an xét giấy những người đi vào một chỗ để biết có ai trong nhà. Trong
trường hợp nầy có khi nó bắt gặp cả Antivirus ActiveX luôn, nên bạn nhớ delete
component đó.
• Khi InstallShield uninstall một nhu liệu nó vô ý remove tất cả các ActiveX
components mà lúc bạn register quên tuyên bố là "shared" (được dùng chung
cho các nhu liệu khác). Có thể các Components đó đã hiện diện và được
register từ khuya rồi. Nhưng khi InstallShield register chúng lại không nói là
"shared" nên sau nầy lúc uninstall hậu quả tai hại vô cùng.
• Khi install một version mới của nhu liệu áp dụng của bạn hãy coi chừng
overwrite Access database file trên computer kia. Lần đầu tiên khi bạn setup
thì đặt một database trống, nhưng sau đó khách hàng bắt đầu dùng và cho
nhiều dữ kiện vào database rồi. Có khi nhu liệu SetUp cho bạn option là chỉ
copy một file vào khi nó chưa hiện hữu (exist).
• Nên chạy nhu liệu áp dụng viết bằng VB6 trên WindowsNT hay Windows98
thay vì Windows95.
• Debug một nhu liệu
• Debug là sữa các lỗi lầm trong code sao cho nhu liệu xử lý OK theo ý muốn
không quá chậm hay té lên, té xuống.
Cách dễ nhất để loại trừ Bugs là ra siêu thị mua một lon thuốc hiệu Bagon hay
Mortein đem về xịt lên code.
Nói cho cùng, debug chẳng qua là giai đoạn sau cùng của công tác thảo
chương mà thôi. Do đó, để công việc debug được nhẹ nhàng ta phải lưu ý đến
cả những giai đoạn trước đó trong chu kỳ phát triển nhu liệu.
• Trước hết, giả sử ta biết rõ và chính xác mình cần phải làm gì (Requirements
Specification).
Trong giai đoạn thiết kế phải đặt ngay kế hoạch sẽ thử code cách nào, khi nào
và ở đâu. Lưu ý là hể ta bỏ qua việc kiểm soát chỗ nào, nhu liệu sẽ té (crash) ở
chỗ đó. Không có gì ngao ngán bằng sở đánh thức mình nửa đêm vì nhu liệu
thiết yếu phải chạy 24 trên 24 tiếng của ta vừa mới té một cái ạch. Dĩ nhiên,
không ai dám nổi nóng với chúng ta vì họ tùy thuộc vào mình, nhưng làm việc
dưới áp lực như thế ta cần phải tránh càng nhiều càng tốt.
• Có một số lề lối căn bản (basic guideline) về debug:
1. Ðặt kế hoạch Test thật chI tiết. Nghĩ đến mọi trường hợp như user không biết
cách dùng, hoặc dữ kiện bị hư (invalid) .vv.. Nếu cần thử Propotype ( mẫu) thì
nên thực hiện càng sớm càng tốt để yên tâm là sau nầy code sẽ đạt đúng tiêu
chuẩn thiết kế.
2. Sau khi code xong lần đầu, nhớ kiểm lại bằng cách đọc từng dòng (gọi là
Desk Check). Ðừng xem Clean Compilation (compile không bị Syntax error) là
hay ho gì rồi lập tức chạy thử ngay. Tốt nhất là cắt nghĩa cho một partner hiểu
code mình viết (gọi là Walk through). Desk Check là cách chu đáo nhất để
kiểm Logic, vì nhiều khi ta không thể nào khám phá ra một lỗi trong logic bằng
cách thử bình thường.
3. Giữ cho code gọn gàng, dễ hiểu và chú thích rõ ràng. Hãy nhớ rằng trong
tương lai người bảo trì code sẽ rủa bạn nếu code bạn viết quá bí hiểm mà
không giải thích. Mỗi Variable đều cần phải được đặt tên hợp lý, cẩn thận. Ở
đầu mỗi Sub hay Function giải thích mục đích của routine, Input là gì, Output là
gì, có dùng kỹ thuật lập trình đặt biệt gì không. Bên trong Sub /Function giải
thích từng bước việc xử lý trừ khi quá hiển nhiên. Mỗi Logical Test Condition
đều phải được thử, chớ bỏ qua câu nào vì nghĩ rằng nó quá đơn giản. Ðể
breakpoint ở những chỗ ấy để kiểm value của các variables xem đó đúng như
đã định không.
4. Luôn luôn dùng Option Explicit trong mỗi Form/Module và tránh Declare
Variables bừa bãi. Giảm thiểu việc dùng Global Variables để ít bị ngạc nhiên
không biết process nào đã thay đổi value của variable bạn đang dùng. Nếu
phải làm đi làm lại một chuyện thì có lẽ bạn có thể thay thế nó bằng một
Sub/Function. Nếu hai Objects làm nhiều chuyện tương tự thì xem có thể gói
các Sub/Functions và Data Variables thành một Class không.
5. Trong mỗi Sub/Function đều nên có Error Handler để khám phá ngay bất
trắc. Chỉ nên để câu 'On Error Resume Next' sau khi đã debug xong xuôi và
biết chắc có thể bỏ qua trường hợp gặp error trong tương lai.
6. Nếu phần code bạn viết sẽ được ráp vào một phần khác thì test chỗ ráp
nhau (interface) bằng cách kiểm các Output Values của code bạn và Emulate
(giả bộ cho vào) Input Values từ phần code kia. Nếu cần làm Stress Test (cho
nhiều chuyện xãy ra xem code có chạy nhanh đủ và đúng không) thì nên thực
hiện càng sớm càng tốt.
7. Test nhu liệu trên một computer với MSWindows vừa cài đặt và không có gì
khác, ngay cả Antivirus, để khỏi phải nhức đầu vô lý khi nguyên nhân code gặp
khó khăn là vì mất Windows DLL hay bị nhu liệu Antivirus can thiệp.
Và sau cùng, giữ bình tỉnh, đừng nổi nóng với chính bạn hay với ai khác. Hãy
nhớ rằng bạn là một Professional, thả lỏng (relax) và giữ đầu óc mình minh
mẩn. Nếu hoàn cảnh bi đát quá thì hãy bắt chước tôi cầu nguyện xin Chúa
giúp đở.
•
• Các giai đoạn trong chu kỳ phát triển một nhu liệu (Development Cycle)
• Ðại khái các giai đoạn chính của chu kỳ phát triển một nhu liệu là:
1. Muốn làm gì? (Requirement Specifications): Giai đoạn nầy khách hàng
bàn với software consultant để bài tỏ nguyện vọng của mình. Khách hàng chỉ
nói tổng quát, consultant phải phỏng vấn nhiều người trong sở để có một hình
ảnh đầy đủ về vấn đề.
2. Thiết kế (Design) : Từ Requirement Specifications bước qua giai đoạn Thiết
kế. Lúc nầy sẽ thấy có nhiều điểm không được nêu rõ trong Requirement
Specifications nên cần làm cho sáng tỏ (clarification). Công việc nầy do
Systems Analyst thực hiện. Nếu dự án lớn thì có Software Architect thiết kế
tổng quát trước khi chia ra các Team Leaders ( thường thường là Systems
Analysts). Trong giai đoạn nầy có khi phải làm Prototype (thử mô hình mẫu) để
biết chắc kỹ thuật mình dùng có đủ khả năng và thích hợp với nhu cầu dự án
không.
Thiết kế là giai đoạn quan trọng nhất trong chu kỳ phát triển một nhu liệu.
Chẳng những ta nghĩ cách xây dựng nhu liệu, mà còn kế hoạch chi tiết cách
thử lúc nào, ở đâu trong code. Ta phải tưởng tượng mọi cảnh huống bất thường
(unusual scenarios) nhưng có thể xãy ra để liệu cách đối phó.
3. Thảo chương (Coding hay Implementation): Ðây là giai đoạn thảo
chương và debug. Trong phần Debug thì có Unit Test (thử từng bộ phận) và
Integration Test (thử chung). Mỗi khi có sữa đổi một chút thì phải thử lại nhiều
thứ nên nếu có thể viết Test Script để tự động hóa công việc thử nầy ( gọi là
Regression Test) thì tiết kiệm rất nhiều thì giờ. Nếu nhu liệu phải phản ứng
nhanh chóng (good response) trong khi chạy Realtime thì phải thử nó trong
hoàn cảnh phải giải quyết nhiều thỉnh cầu cùng một lúc (gọi là Stress Test).
4. Chạy thử (Acceptance Test): Ở tại sở của khách hàng, Software consultant
chứng kiến các giai đoạn chạy thử để xem nhu liệu xử lý mọi chuyện đúng như
liệt kê trước đây. Các công chuyện xử lý chạy có nhanh đủ không, nhất là trong
trường hợp nhu liệu phải giải quyết rất nhiều thỉnh cầu cùng một lúc. Trong
những hoàn cảnh bất bình thường, nhu liệu có đứng vững không. Nếu dự án
lớn, trước Acceptance Test còn có thêm một giai đoạn gọi là Factory Test khi
Software Consultant đến tận công ty ta để chứng kiến ta chạy thử.
5. Cho dùng (Commissioning, RollOut): Khi cho dùng rồi là bắt đầu giai
đoạn Bảo đảm (Warranty) và Bảo trì (Maintenance). Bảo trì là thăm viếng lại
nhu liệu để chửa trị Bug (fixing bugs) hay sữa đổi (modification) hay làm thêm
(enhancement). Lúc bấy giờ bạn sẽ thấy giá trị của một nhu liệu được chú thích
tỉ mĩ. Thường thường nhu liệu ta bảo trì là do người khác viết hoặc do chính
mình viết từ lâu rồi, không còn nhớ nữa, nên nếu nó có documentation và được
chú thích rõ thì sẽ dễ dàng cho công việc rất nhiều.
Khi lảnh một Job nhỏ, có khi ta không chú ý nhiều đến giai đoạn Requirement
Specifications. Sau nầy lúc đã viết code rồi mới khám phá ra việc mình làm
không đúng như điều khách hàng muốn thì rất phiền. Nếu Specifications đã viết
rõ ràng thì ta có thể xin thêm tiền thay đổi (variation), nhưng có khi khách hàng
vẫn trách là ta không chuyên nghiệp (professional) và có thể mình mất khách
trong tương lai.
COM là gì ?
COM là viết tắt chữ Component Object Model. Component là bộ phận, còn Model
nghĩa là gì? Ngày xưa các nhu liệu WordProcessor, SpeadSheet, Database đều nằm
riêng. Ðể dùng chung với nhau ta có thể mua một nhu liệu gọi là integrated package,
nó gồm cả ba thứ vô làm một, nhưng thứ nào cűng xài tạm được chớ không xuất sắc
như từng nhu liệu riêng. MSWorks là một sản phẩm như thế. Với MSWorks ta có thể
dùng phương tiện database để vô danh sách bạn bè, kế đó dùng phương tiện
WordProcessing để viết thơ, rồi dùng phương tiện MailMerge để gởi cùng một lá thư
đến nhiều bạn hữu.
Tiếp theo, Microsoft nghĩ ra cách để vô giữa một lá thư (Word document) một
Speadsheet bằng cách đặt một rỗ chứa một Speadsheet Object. Kỹ thuật nầy gọi là
Object Linking and Embedding (OLE). Làm như thế Microsoft cho user sự tiện lợi như
intergrated package mà không làm giảm khả năng của mỗi nhu liệu. Ðể có thể đặt
một Object vô một cái rỗ như nói trên đòi hỏi Microsoft phải thiết kế nó cách nào cho
tiện lợi cách dùng nó như một bộ phận tiền chế. Cách các nhu liệu chia xẻ dữ kiện và
các dịch vụ phải được phân định rõ ràng vì chúng không nhất thiết nằm trong cùng
một computer.
Lần lần Microsoft hoàn hảo kỹ thuật OLE mới đổi tên nó ra ActiveX, với ý định sẽ dùng
kỹ thuật nầy khắp nơi trên Web. Không phải chỉ có Microsoft mới sản xuất được các
bộ phận ActiveX. Thật ra Microsoft phổ biến và giúp đở các nhà sản xuất nhu liệu chế
những ActiceX theo đúng qui luật đã được thiết kế để dù ta dùng Delphi hay C++ đều
có thể làm ActiveX được. Tất cả những qui luật đó gọi chung là Component Object
Model.
ActiveX được chia ra làm hai loại chính: DLL và EXE. DLL là viết tắt chữ Dynamic Link
Library. Ý nói nhu liệu áp dụng của ta sẽ dùng DLL ActiveX component như một phần
của Code mình nhờ người khác viết giùm. Code được viết ra để dùng lại nhiều lần gọi
là Library. Dynamic Link có nghĩa là khi nào cần dùng mới lấy nó từ hard disk bỏ vô
memory. DLL thì không chạy riêng như một process, nó được coi như một Sub hay
Function của nhu liệu ta viết. Do đó gọi là inprocess. DLL có khi được chứa trong file
có tên với Extension là OCX. Còn EXE thì chạy trong một process riêng, như một
Server, có thể phục vụ nhiều Client processes cùng một lúc.
Microsoft dùng COM trong khắp nơi của Office 2000. Mỗi nhu liệu như WinWord,
Excel chẳng qua là tổng hợp của nhiều ActiveX, và có nhiều ActiveX được dùng chung
cho nhiều nhu liệu. Khi xưa mỗi nhu liệu là một Hộp Ðen (Black Box) khiến user chỉ
biết lấy đức tin mà dùng chớ không biết có cái gì bên trong. Ngày nay, Microsoft mở ra
(expose) hết mọi ActiveX, nên cho phép ta:
1. Sừa đổi cách Microsoft xử lý một vấn đề bằng cách thay thế một Function của
Microsoft bằng một Function khác do ta viết.
2. Viết thêm những Functions mới rồi cho vào Menu bar của nhu liệu để dùng y
như chính Microsoft đã cung cấp các Function ấy. Trường hợp nầy ActiveX ta
viết để gắn vô được gọi là AddIn.
OOD là gì ?
OOD là viết tắt chữ Object Oriented Design. Ðây nói về đường hướng thão chương mới
trong 15 năm nay. Có khi người ta còn gọi là OOP ( Object Oriented Programming).
So sánh với các tiến bộ của hardware, nhu liệu có phần chậm tiến. Trong khi người ta
có thể chế một mạch điện mới bằng cách sắp xếp những bộ phận rời rạc (các miếng
IC Integrated Circuits) lại với nhau thì hầu như mỗi lần bắt đầu một dự án mới các
thão chương viên lại bắt đầu từ con số không.
Nếu quan sát Toolbox của Visual Basic, ta sẽ thấy nó chứa nhiều Control (còn gọi là
Object) như Label, TextBox, ListBox, CommandButton .v.v.. Ta có thể đặt các control
ấy lên một Form khi thiết kế một nhu liệu. Các Control đó cűng giống như các IC trong
mạch điện. Ngày nay khi viết VB ta có thể dùng ngay các Control mà Microsoft đã làm
sẵn.
Thiết kế những Control sao cho các thão chương viên khác có thể dùng lại được thì
gọi là OOD. Nói tóm lại với OOD ta có thể thão chương dùng những Control tiền chế.
Microsoft còn gọi các Control nầy là Component. Bây giờ ta thử bàn thêm xem Object
là gì? Nếu chỉ xem Object như một miếng vách xi măng tiền chế được cần trục nhắt
lên để ráp thành một vách tường của một building thì rất là giới hạn. Object sống động
hơn một miếng xi măng vô tri, vô giác.
Ta thử xem ListBox. Nó là một Object điển hình. ListBox có những đặc tính sau:
1. Properties: như Listcount ( số hàng trong ListBox), Font, BackColor, ListIndex,
List .v.v.
2. Methods: như Clear, AddItem, RemoveItem .v.v..
3. Events: như Click, Mousedown, LostFocus .v.v..
Thật ra Listbox chỉ là một ý niệm. Khi ta đặt một ListBox đầu tiên lên một Form,
by default (tự nhiên nếu không lên tiếng) VBIDE đặt tên nó là List1 (dĩ nhiên
bạn có thể đổi tên đó). List1 mới là một Object hiện hữu mà ta dùng. Từ Class
ListBox ta có thể tạo nhiều Listboxes như List1, List2, List3, MyListBox,
YourListBox .v.v.., giống như từ một khuôn bánh ta có thể làm rất nhiều cái
bánh.
Mặc dầu hai chữ Class và Object thường được dùng lẫn lộn như một thứ nhưng ở đây
ta thử phân biệt cho rõ ràng để lấy le với con cháu. Listbox là một Class, trong khi
List1 là một Object hay Instance của Class ListBox. Ta nói ListBox Class instantiate
để cho ra List1. Giai đoạn List1 lọt lòng mẹ ta gọi là instantiation.
Như vậy ta đã thừa hưởng những lợi ích của OOD lâu nay khi dùng MSWindows và
thão chương VB. Mỗi Window mà ta thấy trên Desktop là một Object.
Khi thão chương ta thấy ListBox tự lo liệu việc display các hàng trong ListBox. Khi ta
cho thêm hay lấy ra một hàng nó tự cập nhật hóa display và thay đổi giá trị (value) của
Listcount một cách tự động. Khi ai đã click lên một hàng thì ListBox nhớ hàng đó bằng
cách chứa value trong List1.ListIndex. Khi ta cho một hàng mới vào, ngay cả khi
List1.Sorted=True, ta có thể biết hàng mới cho vào nằm ở đâu trong ListBox bằng
cách xem List1.NewIndex. Ngoài ra khi ta cho List1.BackColor một màu mới, không
phải List1 chỉ ghi nhớ sự kiện ấy thôi, nó lập tức display Listbox trở lại với màu
Background mới. Các Events của ListBox cho ta những dịp để có phản ứng hợp thời
cho chúng bằng cách viết code trong các Sub Events như List1_Click,
List1_MouseDown .v.v..
Ngoài những đặc tính như Properties (những phẩm chất), Methods (những công
chuyện Object làm được) và Events (những biến cố Object sẽ báo cho ta biết khi nó
xãy ra), Nhìn từ mặt khác, một Object có những đặc tính sau:
• Encapsulation: (được gói ghém lại) Trừ khi một Property của Class được
tuyên bố xuất khẩu (ở đây chữ Class và Property có nghĩa tổng quát, chớ
không phải Class và Property của VB), không ai ở ngoài có thể đụng đến nó
được. Thí dụ muốn nói đến một variable Var1 của Form2 ta viết: Form2.Var1.
Nhưng ta chỉ có thể làm được điều nầy khi ta tuyên bố trong Form2 :
Public Var1
• Inheritance: (thừa kế) Ta có thể chế một Class Con mới từ một Class Mẹ có
sẵn. Và Class mới nầy sẽ tự động mang tất cả đặc tính của Class Mẹ . Thí dụ
hầu hết các Control ta thấy trong VB ToolBox đều là Window, chúng là những
đứa con mặt műi hơi khác nhau nhưng đều thừa kế những đặc tính của Class
Window Mẹ. Chúng đều có thể display hình chữ nhật, có khung, nhận
MouseClick, Keystroke và gởi các message cho nhau. VB không phải là ngôn
ngữ thão chương cho ta làm Inheritance cách tự nhiên như C++, Java hay
Delphi. Tuy nhiên ta cűng có cách để làm được chuyện đó mặc dầu không
thanh nhả (elegant) lắm.
• Polymorphism: (đa dạng) Nói cùng một câu nhưng tác dụng khác nhau tùy
hoàn cảnh. Thí dụ ta có nhiều Hình chữ nhật, Hình tròn, Hình tam giác trên
màn ảnh. Tất cả các Class Hình nầy đều là con của Class Hình Vẽ. Class Mẹ
Hình Vẽ có một Method tên là Draw (tự vẽ). Khi các Class Hình con được tạo ra
mỗi Class đều có một Method mang cùng tên Draw nhưng cái thì vẽ hình chữ
nhật, cái thì vẽ hình tròn, cái thì vẽ hình tam giác. Trong chương trình ta có thể
nói khơi khơi là bảo mọi hình tự vẽ. Lúc ấy các method Draw tuy cùng tên,
nhưng khác nhau sẽ display các hình vẽ.
Ngoài đời ta có trường hợp tương tự như vậy. Khi tôi phải hủy bỏ chuyến nghỉ phép
sau khi đã dặn chỗ mọi thứ, tôi sẽ dùng cùng một câu 'Cancel Booking' nói với ba chỗ
để hồi lại Vé phi cơ, Phòng ngủ và Xe hơi mướn. Nhân viên làm việc mỗi nơi đều hiểu
ý tôi muốn Cancel Booking gì. Như thế cùng một câu 'Cancel Booking' nhưng có ba
nghĩa khác nhau tùy theo cảnh huống (context).
Polymorphism liên hệ trực tiếp với Inheritance. Vì VB không phải là một ngôn ngữ thão
chương yểm trợ Inheritance cách tự nhiên, nên muốn thực hiện polymorphism bằng
VB cűng được, nhưng hơi mắc công.
Thão chương theo cách Procedural là dùng chỉ một process hay task. Giống như một
người vừa ẳm em, vừa nấu cơm, vừa bửa củi, mọi chuyện do một tay mình chịu trách
nhiệm, buông bên nầy, bắt bên kia. Còn thão chương theo cách OOD thì phân công ra
cho nhiều người (Object), mỗi người khi nào làm xong một giai đoạn hay cần thiết điều
gì thì báo cáo.
Trong OOD ta không ngồi đợi chuyện gì xãy ra để giải quyết, nhưng cứ làm công
chuyện bình thường, còn cái gì cần mình giải quyết nó phải phát sinh một biến cố
(Event) để lôi cuốn sự chú ý của ta và nhờ ta giải quyết.
Client/ Server là gì?
Client là khách hàng, Server là người phục vụ. Thường thường chữ Client / Server nói
đến trường hợp nhu liệu (Client) chạy ở nhiều computers cần lấy dữ kiện từ một
database ở một computer nào nó trong mạng. Database nầy tự nó là một nhu liệu
đang chạy trong một process riêng để phục vụ (gọi là Database Server). Khi nó nhận
được lời yêu cầu từ Client nào nó sẽ phục vụ Client ấy. Thí dụ Database Oracle chạy
trên máy WindowsNT Server. Oracle là Database Server.
Còn Access Database để trong một Disc Folder cho nhiều nhu liệu trên mạng xài
chung thì có phải là Server không? Vì Access không tự nó chạy như một process nên
được gọi là Shared File Database chớ không phải là một Server Database.
Dùng Access giống như làm việc trong một sở nhỏ, mọi nhân viên tự nấu mì gói, pha
cà phê để dùng cơm trưa. Còng dùng Database Server giống như làm việc trong sở
lớn có mướn người nấu mì, pha ca phê cho nhân viên, nên không ai động đến một ấm
nước.
Vậy tại sao ta phải cần đến Database Server? Sản phẩm SQL Server, Database
Server của Microsoft là database cấp bậc kỹ nghệ so với Access là database dùng
trong các ứng dụng nho nhỏ. Access có giới hạn về cở lớn và nếu 4, 5 nhu liệu dùng
database cùng một lúc ta sẽ gặp khó khăn. Ngoài ra SQL Server cho phép ta sắp đặt
cho ai được phép đọc/viết database với LogIn và Password.
ODBC Driver là gì?
ODBC và viết tắt chữ Open Database Connectivity, một chuẩn do Microsoft đặt ra. Vì
mỗi database đều có một ngôn ngữ thão chương khác nhau nên trong kỹ nghệ người
ta đều đồng ý dùng một ngôn ngữ database phổ thông. Ðó là Structured Query
Language (SQL). Mỗi nhà sản xuất Database đều cung cấp một ODBC Driver yểm trợ
SQL để ta dùng trong MSWindows.
Một Database có ODBC Driver thì xem như mở ra (Open) cho thiên hạ móc nối
(Connect) để tiếp xúc. Ðối với thão chương viên VB, ta chỉ cần biết Database ở đầu
kia yểm trợ ODBC là đủ, không cần biết nó hiệu gì. Mai mốt có thay đổi database
cűng không ảnh hưởng nhu liệu ta đã viết bằng VB.
ADO là gì ?
ADO là viết tắt chữ Active Data Objects. Ðây là một bộ các Object dùng để làm việc
với Database. Mặc dù ta có thể nói chuyện với mọi Database bằng cách dùng ODBC
Driver của nó. Nhưng ngôn ngữ SQL tương đối khó nhớ và không uyển chuyễn. Ðiển
hình là Oracle đặt ra một ngôn ngữ tên là PLSQL (Procedure Language SQL), là tập
hợp của Modula2 (giống Pascal) và SQL để làm việc dễ hơn trong Oracle database.
Microsoft có tham vọng muốn chế một loại ActiveX có thể đọc tất cả mọi loại
database, kể cả trường hợp database đó là một textfile. ActiveX đó được gọi là OLE
DB. Microsoft gói các ODBC Drivers và những database driver khác vào bên trong
OLE DB. ADO là em của OLE DB, nó yểm trợ cách thão chương dễ nhớ, dễ hiểu dùng
collection để làm việc với cấu trúc và bộ phận trong database.
ADO cho phép chúng ta dùng nhiều phương tiện phong phú hơn để tạo các Table hay
làm những Query bằng cách dùng hình ảnh thay vì viết SQL code. Cùng những
phương tiện nầy ta có thể dùng cho bất cứ Database nào ADO yểm trợ, ngay cả một
Database mới ra mà chính nó cűng không có phương tiện thiết kế data structure/
query bằng hình ảnh.
ADO là kỹ thuật mới nhất đã trưởng thành mà Microsoft đang dùng cho tất cả mọi nhu
liệu. Ta phải lần lượt thay thế các chỗ dùng DAO (Data Access Object) bằng ADO.
Nếu trong Code có dùng cả hai DAO và ADO, ta phải nói rõ Object kỹ thuật nào, nếu
Object có trùng tên bằng cách dùng:
Dim Myset as ADO.Recordset
thay vì
Dim MySet as Recordset
để khỏi làm VB lầm lẫn.