24/05/2018, 16:52

Sử dụng Visual Data Manager của Visual Basic 5

.0 Khi sử dụng Visual Basic (VBasic), điều khiến bạn hài lòng có lẽ là số lượng "đồ nghề" dồi dào của nó trong Tool Box. Bạn đang thiết kế một form cho ứng dụng có xử lý đến cơ sở dữ liệu và đang phân vân sẽ đặt vào đấy Data control hay DBGrid? ...

.0 

    Khi sử dụng Visual Basic (VBasic), điều khiến bạn hài lòng có lẽ là số lượng "đồ nghề" dồi dào của nó trong Tool Box. Bạn đang thiết kế một form cho ứng dụng có xử lý đến cơ sở dữ liệu và đang phân vân sẽ đặt vào đấy Data control hay DBGrid? Chưa hết, bạn cần những thao tác nào trên form để quyết định sẽ có bao nhiêu nút lệnh? Muốn có nhiều thao tác, ắt phải cần càng nhiều nút lệnh mà việc lập trình cho các nút lệnh có khi không đơn giản. VBasic có tiện ích hỗ trợ trong trường hợp bạn cần một form có khả năng duyệt từng record trong một Table cùng với những thao tác thêm, xóa, sửa, di chuyển, dò tìm và xếp thứ tự. Dĩ nhiên, tiện ích ấy cũng tự động phát sinh mã lệnh cho các thao tác. Đó là trình Data Manager vốn được xem là "trị giá gia tăng" có sẵn trong VBasic 4.0. Nhưng kể từ phiên bản VBasic 5.0, trình tiện ích ấy được "lột xác" hoàn toàn và gọi bằng tên mới là Visual Data Manager (VisData).

    Với chức năng nói trên, tiện ích này khác với hệ Microsoft Access ở chỗ nó cho phép bạn tạo bất cứ CSDL nào: Access, dBase, FoxPro hay Paradox. Và vì đó là trình quản trị dữ liệu nên VisData sẵn lòng chấp nhận những chỉ thị SQL nếu bạn muốn có các queries trong CSDL. Nếu đó vẫn chưa phải là lý do để bạn sử dụng VisData, thì hãy tưởng tượng bạn đang viết một ứng dụng bằng VBasic, nhưng cũng cần đến những thông tin về một CSDL nào đó bằng cách sử dụng MS-Access ở chế độ Inactive Window, bạn có tin rằng tốc độ máy của bạn sẽ chậm lại không? Và nếu VBasic của bạn cũng đang cần đến CSDL mà MS-Access đang mở thì sao? Hẳn bạn phải đóng CSDL đó trong MS-Access. Duy trì một cửa sổ MS-Access trống rỗng trong chế độ Inactive là một sự phí phạm tài nguyên của máy và thời gian của bạn. Bạn có sẵn lòng "xài sang" những thứ đó không?

    VisData còn có những chức năng liên quan đến việc sử dụng CSDL phân tán. Nghĩa là một CSDL dùng trong môi trường mạng. Tuy nhiên trong bài này, chúng ta chỉ xét đến những chức năng của nó trên máy đơn.

    Từ trong menu chính của VBasic, bạn có thể gọi sử dụng VisData bằng lệnh: Add-Ins, Visual Data Manager. Cây lệnh mô tả qua Hình 1.

LƯnh gäi VisData

     Sau đó cửa sổ VisData xuất hiện trên mặt trước của cửa sổ VBasic như Hình 2. 

Cưu si VisData

    Menu và thanh công cụ của VisData tương đối đơn giản. Menu File gồm những lệnh liên quan đến mở/tạo lập, bảo trì CSDL. Menu Utilities phản ánh hai tiện ích quan trọng là trình Query Builder giúp xây dựng SQL trực quan và bộ Data Form Designer giúp tự động tạo form nếu bạn đang dùng VBasic và muốn VisData hỗ trợ tạo form để xử lý dữ liệu trong table. Các nút công cụ chia thành ba nhóm. Nhóm thứ nhất giúp người sử dụng xác định xem mình sẽ mở/tạo một CSDL theo kiểu nào trong những kiểu Tableset, Dynaset, hay Snapshot. Nhóm nút công cụ thứ hai được dùng khi bạn muốn tạo một form và trong form đó sẽ đặt một Data control hay DBGrid control. Nhóm nút công cụ thứ ba dành cho những trường hợp dùng đến CSDL phân tán. Trong VisData có thể hiển thị hai cửa sổ Database Windows và SQL Statement.

    Đối với một CSDL đã có sẵn, trước khi mở bạn hãy xác định VisData sẽ mở nó theo kiểu nào trong những kiểu Tableset, Dynaset, hay Snapshot. Những nút công cụ cho trong Hình 3 cho biết nút nào giúp bạn làm việc đó. Bạn sẽ dùng lệnh File.Open Database để mở CSDL hay lệnh File.New nếu muốn tạo một CSDL mới.

Quy định kiểu CSDL

    Hình 4 mô tả cây lệnh cho thao tác này.

Hình 4. C©y lƯnh më/tạo CSDL

    Trường hợp muốn tạo CSDL FoxPro, bạn phải khai báo đường dẫn cho CSDL sẽ tạo trong hộp thoại như VisData trình bày ở Hình 5.

Hình 5. Khai báo ®ưêng dÉn khi tạo CSDL FoxPro

Nếu muốn tạo CSDL .MDB của MS-Access, bạn sẽ khai báo tên của CSDL trong hộp thoại như Hình 6.

Hình 6. Tạo CSDL .MDB cđa MS-Access

    Giả sử bạn muốn tạo một CSDL dưới format của Access 7.0 có tên magazin.mdb trong đĩa D:, lúc đó vùng làm việc của VisData sẽ có hai cửa sổ Database Window và SQL Statement. Cửa sổ Database Window là nơi thể hiện về các properties của bản thân CSDL này và của những đối tượng trong CSDL như Table, Query, ... Những properties này được thể hiện dưới dạng cây thư mục. Cửa sổ SQL Statement là nơi để phát những chỉ thị SQL với những nút lệnh Execute thi hành chỉ thị, nút lệnh Clear để xóa chỉ thị và nút lệnh Save để lưu chỉ thị SQL hiện hành dưới một tên, tên đó được gọi là QueryDef. Hình 7 minh họa những mô tả trên.

Hình 7. Cưa sỉ Database và SQL Statement

    Bạn có thể tạo một table bằng lệnh SQL phát ra trong cửa sổ SQL Statement theo dạng lệnh: CREATE TABLE Table (Field1, Type(Size),...) và sau đó bấm vào nút lệnh Execute để thi hành. Ví dụ muốn tạo Table Writer cho CSDL magazin.mdb, bạn có thể nhập vào dòng lệnh: Create Table Writer (writerid Text(5), Name Text(25), Title Text(32), ReceiveDate Date time)

    Bây giờ trên màn hình sẽ hỏi bạn đây có phải là một chỉ thị PassThrough SQL không, bạn nhớ trả lời "No" vì một chỉ thị PassThrough SQL sẽ dành riêng cho ODBC xử lý. ở đây chúng ta chưa bàn đến ODBC là gì.

    Với một table vừa khai báo xong, bạn có muốn xem những properties của bảng này? Hãy bấm vào dấu Aà+' kế bên tên của bảng trong cửa sổ Database Window. Bạn muốn nhập liệu vào bảng? Hãy nhấn đúp vào tên của bảng. Lúc đó một bộ duyệt nội dung sẽ thể hiện dưới dạng form như trong Hình 8.

Hình 8. Form nhËp liƯu và duyƯt bảng Writer

    Các nút lệnh liên quan đến những thao tác trên record; các hộp Text box để nhập nội dung cho từng trường và thanh trượt để duyệt nội dung từng record.

    Xin lưu ý tùy bạn đang mở bảng theo kiểu nào trong những kiểu TableSet, DynaSet hay SnapShot và có đặt Data Control vào form hay không mà hình thức của form nhập liệu có thay đổi đôi chút về các nút lệnh trong form. Nhưng điều đó sẽ không làm bạn lúng túng khi sử dụng form. Dưới đây, chúng tôi sẽ mô tả đôi nét về việc sử dụng form trong trường hợp mở bảng theo kiểu DynaSet và trong form không có Data Control.

    Sau khi đã làm xuất hiện form nhập liệu như Hình 8, hẳn bạn cũng muốn nhập một số record đầu tiên cho bảng. Form không cho phép bạn nhập nội dung các trường vào hộp text box. Bạn hãy bấm chuột vào nút lệnh Add để bắt đầu. Hình 9 minh họa form nhập liệu.

Hình 9. NhËp néi dung record

    Khi nhập xong, bạn bấm chuột vào nút lệnh Update để ghi nhận hoặc Cancel trong trường hợp ngược lại. Để chỉnh sửa nội dung record, dùng Edit; để loại bỏ record hiện hành trong form, dùng Delete; để thay đổi record hiện hành, dùng Move và cung cấp độ dời tính từ record hiện hành. Độ dời là một số nguyên dương hay nguyên âm tùy theo bạn muốn dời về hướng đầu bảng hay cuối bảng. Bạn có muốn xếp thứ tự bảng theo một trường nào đó không? Chỉ cần nhấn chuột vào nút lệnh Sort và khai báo tên trường mà bạn muốn dùng làm khoá. Hình 10 là hộp thoại mà bạn sẽ cung cấp tên khóa sắp xếp. 

Hình 10. Khai báo khóa sắp xếp cho bảng.

    Nếu muốn dò tìm một record nào đó, thay vì sử dụng thanh trượt, bạn dùng nút lệnh Find và chọn khóa dò tìm, chọn toán tử và chọn giá trị cho khóa dò tìm. Với những record trùng khóa dò tìm thì sao? Liệu VisData chỉ có khả năng tìm duy nhất một record đầu tiên trùng khóa? VisData chấp nhận dò tìm cả những record trùng khóa khác nếu ở lần dò tìm sau bạn chọn nhiệm ý Find Next. Hình 11 minh họa cách dùng lệnh Find để dò tìm record liên quan đến tác giả Knuth,D.

Hình 11. Khai báo biĨu thøc dß tìm.

    Cuối cùng là thao tác lọc những record thỏa mãn một điều kiện cho trước mà với những bạn quen dùng Fox thì đó là chỉ thị SET FILTER. Chẳng hạn, bạn muốn lọc tất cả những record về tác giả Knuth,D., hãy nhấn chuột vào nút lệnh Filter rồi cung cấp điều kiện lọc record vào hộp thoại như Hình 12 chỉ ra.

Hình 12. Läc những record theo mét ®iỊu kiƯn

    VisData cũng có khả năng chạy những chỉ thị SQL nếu bạn nhập dòng lệnh vào cửa sổ SQL Statement rồi bấm chuột vào nút lệnh Execute để thi hành. Khi có hộp thoại hỏi bạn chỉ thị SQL sắp thi hành có phải là một SQLPassThrough hay không, bạn nhớ chọn "No". Nếu không bị bắt lỗi, Queries thu được sẽ là một form. Để làm ví dụ, bạn thử mở CSDL Biblio.mdb (là CSDL cài đặt theo VBasic) bằng lệnh File.Open và phát chỉ thị chọn tên, địa chỉ, mã của những nhà xuất bản của thành phố New York. Bạn có nhập dòng lệnh SELECT Name, Address, PubID FROM Publishers WHERE City="New York" hay không?

    Nếu muốn thử công cụ tạo Query, chẳng hạn như wizard, hãy dùng lệnh Utility.Query Builder. Bạn muốn chọn các bảng và trường cần cho Query, dĩ nhiên phải chọn trong hai hộp liệt kê Tables và Fields to Show. Để cung cấp điều kiện cần truy vấn, bạn có thể dùng các hộp combo Field Name, Operator, Value. Nếu trong điều kiện cần những toán tử And, Or bạn dùng hai nút And into Criteria, và Or into Criteria.

Hình 13. Tạo Query bằng wizard thông qua Query Builder

    Giả sử trong một CSDL mới, bạn đã tạo một bảng có tên Reader với các trường ReaderID TEXT(5), Name TEXT(25), Address TEXT(255) và đang định tạo form nhập record cho bảng này với mã lệnh bằng VBasic. Từ VisData, bạn mở CSDL đó, quyết định sẽ mở CSDL theo kiểu nào trong những kiểu TableSet, DynaSet hay SnapShot. Và bạn sẽ đặt đối tượng Data Control hay DBGrid vào trong form tương lai. Bạn chọn những ấn định đó bằng nút công cụ như mô tả ở Hình 2. Sau đó bạn sẽ lấy lệnh Utility. Data Form Designer. Hình 14 cho thấy những gì bạn phải khai báo để tạo lập một form: nhập tên của table vào hộp RecordSource, nhập tên form vào hộp Form Name w/o Extension, và chọn các trường mà bạn muốn thể hiện trong form. Các trường này được chọn từ hộp list box Available Fields để chuyển vào Include Fields. Công việc chấm dứt bằng nút lệnh Build the Form. Bây giờ có thể đóng VisData bằng lệnh File.Exit để trở về VBasic. Hẳn bạn sẽ ngạc nhiên với form mới tạo với những chi tiết khá chuyên nghiệp. Thích thú hơn nữa khi chuyển sang màn hình Code, bạn sẽ thấy mã lệnh đã có sẵn.

Hình 14. Hép thoại cđa Data Form Designer

    Đến đây bạn có thể nói gì về phiên bản mới của VBasic? Đáng để nâng cấp phải không?

Xây dựng chương trình để khởi động các chương trình khác

Để bày vẻ và quảng cáo thêm cho máy tính có rất nhiều cách. Nhưng nếu bạn là người chuyên ráp máy hay một cửa hàng tin học thì có lẻ bạn nên viết 1 chương trình tự động chạy lúc khởi động (Start Up) để trưng bày các phần mềm đã cài đặt trên máy, luôn tiện giới thiệu chút ít về mình hay cửa hàng. Ta tạm đặt tên cho chương trình đầu tiên này là "Launch" nhé.

Viết chương trình, có rất nhiều ngôn ngữ lập trình dư sức để viết một chương trình như vậy. Nhưng dễ dàng hơn hết, có lẻ và Visual Basic. Viết chương trình này bằng Visual Basic không đòi hỏi gì bạn nhiều, chỉ cần chút khéo léo và áp dụng các công cụ của Visual Basic một cách thích hợp cộng thêm chút ít sáng tạo mà thôi.

Chương trình Launch đã hoàn tất

Có rất nhiều cách để phân loại các phần mềm cài đặt trên máy. Chương trình thí dụ này phân nhóm các ứng dụng cài đặt trong Windows thành 3 nhóm: Windows System (các công cụ chuẩn của Windows), Applications (các ứng dụng của người dùng cài thêm), Vietnamese Utilities (các tiện ích về tiếng việt).

Cơ chế hoạt động của chương trình này là "mồi lửa" cho người sử dụng khởi động chương trình mà mình cần bằng menu hay các button của chương trình, sau đó chương trình này tự động "biến".

Để mồi lửa cho người sử dụng, ta buộc phải biết chính xác vị trí của các file chương trình mà người dùng cần.

Đầu tiên là các tiện ích kèm theo Windows như WordPad, Notepad, Paint, ... (tôi chỉ xin thí dụ 3 chương trình thôi). Các file thực thi của chương trình này chủ yếu nằm trong thư mục Windows, vậy chỉ cần tìm ra thư mục Windows là ta có thể giải quyết được vấn đề.

Chuyện này cũng rất dễ dàng và vô cùng may mắn là Windows có khả năng tự động tìm kiếm các file thực thi trong thư mục Windows và WindowsSystem cho nên chúng ta khỏe (ta có thể hiểu là nó tự đặt dường dẫn đến thư mục Windows và WindowsSystem).

Chú ý: Khi muốn gọi WordPad bạn phải gọi file write.exe và Paint phải gọi file Pbrush.exe. 2 file này không phải là file chương trình chính, chúng chỉ có nhiệm vụ gọi file thực thi của Paint (MSPaint.exe) và WordPad (WordPad.exe) nằm trong Program filesAccessories mới thực sự là file chương trình chính.Microsoft phải làm như vậy để tương thích với các chương trình cũ của Windows 3.x. Sau đây là tên file của một số chương trình có sẵn trong Windows (với điều kiện bạn phải cho cài đặt khi setup Windows).

Tên file Thư mục Chương trình
notepad.exe Windows Notepad
write.exe Windows WordPad
Pbrush.exe Windows Paint
Cleanmgr.exe Windows Disk Cleanup (W98)
Defrag.exe Windows Disk Defragmenter
Scandskw.exe Windows Scan Disk
Sndvol32.exe Windows Volume Control
Winfile.exe Windows File manager
Msconfig.exe System System Configuration Utility
Sfc.exe System System file checker
Sysedit.exe System System Configuration Editor
.... .... ....

Vậy là chuyện gọi 1 chương trình của Windows không có gì khó khăn, chỉ cần biết tên file là xong, mọi chuyện còn lại là của Windows.

Còn các ứng dụng khác do người dùng hay người lắp máy cài đặt thêm chỉ có cách là gọi theo đường dẫn chính xác vì mỗi máy mỗi khác, công sức cho việc tìm kiếm khá gian nan, chưa hợp với các tay nghiệp dư như chúng ta. Khuyết điểm của chương trình là phải viết riêng cho từng máy, chúng ta sẽ giải quyết vấn đề này ở bài viết sau "Nâng cấp chương trình Launch".

Bạn cũng có thể viết chương trình này cho chức năng Auto Run của CD chương trình, lúc nay mọi chuyện lại càng dễ dàng vì các đường dẫn và chương trình trên CD đều nằm trong tay ta, cứ đi từ thư mục gốc vào là xong chuyện.

0