FrequentlyAskedQuestions (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 Real-time 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, Roll-Out): 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à in-process. 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à Add-In. 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à PL-SQL (Procedure Language SQL), là tập hợp của Modula-2 (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. . Frequently Asked Questions (Faq) VB 6. 0 Một File đã được Add vào trong Project nhưng sao không. 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,