B iểu đồ luồng dữ liệu iểu đồ mức ngữ cảnh:
6.2.5 Phân tích công cụ ngôn ngữ
6.2.5.1 Phân tích về dữ liệu và việc kết nối với dự liệu
Để xây dựng đợc chơng trình vấn đề đầu tiên của chúng ta phải có dữ liệu. Chơng trình phải nhập đợc dữ liệu, hay nói cách khác phải cập nhật đợc thông tin hệ thống. Không chỉ có cập nhật vào cơ sở dữ liệu mà có thể xóa dữ liệu, sửa đổi dữ liệu …
Visual Basic cho phép ta kết nối với Microsoft Acess 97 do đó đầu tiên các tệp cơ sở dữ liệu ta tạo ở Microsoft Acess 97, đây chính là các kho dữ liệu. Nh vậy vấn đề đặt ra làm sao để kết nối giữa Visual Basic và cơ sở dữ liệu ? Rất may cho chúng ta Visual Basic cung cấp các công cụ để kết
nối đó là Data, Adodc. Trong chơng trình này chúng ta sẽ kết nối cơ sở dữ liệu với Form thông qua Adodc.
Sau khi tạo form cập nhật thông tin ta kết nối với cơ sở dữ liệu thông qua một Adodc, để kết nối đợc thì trên Form phải có một Adodc. Thuộc tính Connectionstring của Adodc phải là đờng dẫn đến tệp cơ sở dữ liệu. ở đây muốn có đợc kết nối này ta chỉ click chuột vào thuộc tính sau đó làm theo chỉ dẫn của VB, nh vậy ta chúng ta đã kết nối đợc.
Để cho cho chơng trình có tính linh hoạt tức là để các tệp cơ sở dữ liệu ở đâu cũng đợc chơng trình chạy không bị lỗi chúng ta thiết kế việc kết nối với dữ liệu là động. Lợi dụng Visual Basic cung cấp cho câu lệnh tạo đ- ờng dẫn động ta thiết kế một đoạn chơng trình đặt trong menu mở hệ thống gọi là mở cơ sở dữ liệu. Trong đoạn này ta sử dụng câu lệnh tạo đờng dẫn động. Khi nào cần kết nối với dữ liệu để làm việc ta chỉ việc click vào menu mở hệ thống.
Cụ thể nh sau:
Private Sub open_Click() On eroror GoTo het
Set cn = New ADODB.Connection Me.CommonDialog1.ShowOpen
cn.ConnectionString = " Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" _
& Me.CommonDialog1.FileName cn.open Me.nhapdl.Enabled = True Me.xembd.Enabled = True Exit Sub het:
MsgBox "sai duong dan hoac ten tep " Else
MsgBox Err.Number & Err.Description End If
End Sub
Đoạn chơng trình mở từng bảng một kết nối với từng Adodc cụ thể : Public Sub mobang(adoctrl As Adodc)
Set Myrs = New ADODB.Recordset
Myrs.Open sqlstr, cn, adOpenDynamic, adLockOptimistic Set adoctrl.Recordset = Myrs
Set Myrs = Nothing End Sub:
Khi cần kết nối với một Adodc của một form nào đó ta gọi nh sau: Private Sub toadodiem_Click()
sqlstr = "select * from diem" Call mobang(frmnhdiem.Adodc1) frmnhdiem.Show
End Sub
6.2.5.2 Một vài phân tích về thiết kế Form
Thiết kế Form cập nhật thông tin sẽ nh thế nào? Đây là vấn đề cũng rất đơn giản nhng cũng rất khó khăn, bởi vì Form phải thể hiện đợc các chức năng của nó còn phải đảm bảo đợc tính mỹ thuật. Muốn đảm bảo đợc tính mỹ thuật thì đây là khả năng trang trí của từng ngời. Nhng trên Form tối thiểu cũng phải có một số đối tợng chẳng hạn nh có một lới DataGrid. L- ới này dùng để hiện thị các thông tin trong cơ sở dữ liệu của ta. Cách thức thiết kế nó, ta vẽ lên Form một DataGrid. Trên form đã có Adodc và Adodc cũng đã kết nối với cơ sở dữ liệu, do đó ta chỉ việc kết nối lới với Adodc. Kết nối bằng cách Thuộc tính Datasource ta chọn là Adodc. Nh vậy
đến đây nếu ta thử chạy chơng trình thì thông tin trong tệp cơ sở dữ liệu sẽ đợc hiện thị lên Form.
Để trang trí cho đẹp ta có thể dựa vào các thuộc tính của DataGrid để đổi tên của nó, đổi tên Caption, tức là đổi tiêu đề của nó. Cũng có thể chọn Font chữ, kiểu chữ, màu…
Khi Form đã đợc nh vậy rồi thì muốn nhập dữ liệu thì ta nhập vào đâu ? Để nhập đợc dữ liệu thì có bao nhiêu thông tin cần nhập ta thiết kế bấy nhiêu Textbox. Textbox này dùng để nhập thông tin vào đó. Để tiện cho việc nhập thông tin cũng nh là để trang trí trớc mỗi textbox ta đặt một Label. Caption của mỗi Label ta viết các thông tin chỉ dẫn Textbox. Việc nhớ tên của các Textbox cũng nh Label chúng ta có thể đặt lại tên cho chúng thông qua thuộc tính Name trong Properties của chúng.
Việc cập nhật thông tin phải thêm vào các nút thêm, xóa, sửa, ghi, huỷ, thoát. Ta thêm các nút này bằng cách dùng công cụ CommandButton trên thanh công cụ vẽ vào form các nút đó. Sau đó dùng Properties để sửa đổi tên, cũng nh Caption của mỗi nút. Lúc này Form bề ngoài đã hoàn chỉnh. Việc trang trí màu sắc cho Form cũng nh các đối tợng khác trong Form là tuỳ ở sở thích của mỗi ngời. Visual Basic đã cung cấp cho chúng ta các thuộc tính ta chỉ việc chọn các tham số cho các thuộc tính...
Có thể nói công việc bên ngoài nh vậy đã đợc, công việc quan trọng và khó đối với mỗi chúng ta là phải lập trình viết các hàm để đáp ứng các sự kiện. Chẳng hạn nh khi ấn nút ghi thì Visual Basic biết lấy dữ liệu ở các Textbox ghi vào tệp cơ sở dữ liệu.
Dới đây là Form nhập tọa độ các điểm của mạng lới giao thông
( Form nhập các thông tin về đờng )
Form chính là Form vẽ bản đồ. Trên Form này thể hiện toàn bộ ý t- ởng ban đầu của chúng ta. Để lấy đợc dữ liệu cũng phải có một Adodc và Adodc này kết nối với cơ sở dữ liệu.
Nh chúng ta đã tìm hiểu qua phần đồ họa Visual Basic chỉ cho phép làm đồ họa trên Form hoặc trên các Picture box, hay trên các Image do đó mọi việc ta phải thiết kế trên Form.
Dữ liệu hiện tại đã đợc kết nối với Form vậy thì làm thế nào để lấy dữ liệu và vẽ đợc lên Form. ở đây bắt buộc chúng ta phải lập trình bởi vì
Visual Basic không có công cụ để cho chúng ta làm một việc cụ thể nh vậy. Chúng ta sẽ viết một thủ tục vẽ, mọi cái bắt buộc phải vẽ ta đều phải vẽ trong thủ tục này. Khi cho chơng trình chạy ta cũng gặp một vấn đề nữa đó là sự kiện Form_Active() chỉ cho phép ta gọi một lần thủ tục vẽ, mà thực tế cơ sở dữ liệu có rất nhiều điểm cần phải vẽ. Vậy nếu làm theo cách thông thờng đọc dữ liệu đến đâu thì vẽ đến đó, thì không thể làm đợc. Giải pháp để giải quyết vấn đề này đó là Visual Basic cho phép sử dụng mảng. Chúng ta sẽ tạo một mảng động, khi chạy chơng trình toàn bộ dữ liệu sẽ đợc đẩy vào mảng động này. Sau đó ta gọi thủ tục vẽ chỉ một lần và ta sẽ vẽ đợc toàn bộ dữ liệu.
Để bản đồ đợc đẹp hơn thuận tiện hơn trong khi sử dụng ta vẽ mỗi đầu đoạn, cuối đoạn một nút nhỏ. Các nút này là các ảnh do đó ta phải vẽ trên các Image. Làm thế nào để tạo đợc nhiều Image nh vậy ? Khi ta thiết kế ta cũng chỉ phải vẽ một Image, làm thế nào để khi vẽ đến đâu nó tự sinh ra Image đến đó. ý tởng của giải thuật hoàn toàn giống nh khi ta vẽ điểm. Toàn bộ lệnh vẽ các nút này bắt buộc chúng ta cũng phải viết trong thủ tục
vẽ. Tơng tự nh khi ta vẽ các điểm ta cũng phải sử dụng một mảng động các Image. Khi chạy tự động sinh ra các Image để cho ta vẽ lên các Image này.