Chương IV : HIỆN THỰC CHƯƠNG TRÌNH Gi ới thiệu một số thuật toán và chương trình cài đặt chính

Một phần của tài liệu luận văn ứng dụng việc quản lý bằng tin học vào trong việc quản lý bệnh nhân và nhân viên của bệnh viện tỉnh khánh hòa (Trang 36 - 44)

tác mới Thêm xoá sửa thông tin về Khen thưởng - KL Thêm xoá sửa thông tin về Đơn vị công tác Thêm thông tin về quá trình công tác mới Thêm xoá sửa thông tin về quá trình CT Thêm thông tin về Khen thưởng - KL mới

CHƯƠNG TRÌNH QUẢN LÝ BỆNH NHÂN

Thêm thông tin về hồ sơ bệnh Thêm xoá sửa thông tin về Thêm thông tin về Bảo hiểm y Thêm xoá sửa thông tin về Thêm xoá sửa thông tin về Bảo Thêm thông tin về cơ quan Thêm xoá sửa thông tin về Thêm thông tin về Đối tượng

Chương IV : HIỆN THỰC CHƯƠNG TRÌNH Một số thuật toán cài đặt chương trình:

1. Cách tạo kết nối dữ liệu : Database Access Component

Database Access Component còn gọi là ADO (ActiveX Data Object), các object của ADO cung cấp cơ chế kết nối (connection) với hầu hết các kiểu database,

cũng như việc truy xuất, cập nhật các database này.

ADO Interface

Các đối tượng trong ADO giao tiếp với database thông qua ODBC (Open

Database Connectivity), chúng có thể được sử dụng với bất kỳ loại database nào nếu như có ODBC driver hỗ trợ.

Các đối tượng trong ADO :

Gồm : Connection, Recordset và Command. Sử dụng Connection ta có thể thiết

lập sự liên kết với dữ liệu, thông qua đó ta có thể lấy các Record hoặc cập nhật một

record bằng cách sử dụng Command Object. Kết quả thực hiện các query trên database sẽ được lưu vào đối tượng Recordset, trên đối tượng này có thể duyệt và lấy ra một

hay nhiều record.

Cách kết nối để mở một cơ sở dữ liệu từ Acceess

Option Explicit

Public Test_connection As Boolean Public mahuyen As String

Public cn As New ADODB.Connection Public ConnectionString As String Sub open_mdb()

**************************************************************** Dim db_name, str As String

db_name = App.Path & "\QLCNVC_MoiNhat.mdb"

ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db_name & ""

DE1.CE1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & db_name & ""

DE1.CE1.Open

cn.Open ConnectionString Test_connection = True End Sub

1. Các phương thức đối tượng Connection

- Open method :

Được sử dụng để mở một liên kết với database. Ngay sau tạo instance cho

Connection Object, ta có thể mở một kết nối với Data Soure để truy xuất dữ liệu.

+ Execute method:

Cho phép thực thi một câu lệnh tác động lên Data Soure. (adsbygoogle = window.adsbygoogle || []).push({});

Trong đó CommandText là chuỗi lệnh cần thực hiện, thông quá số option các

giá trị khác nhau quy định loại CommandText.

Giá trị Danh hiệu hằng tương ứng

Loại của CommandText

0 adCmdUnknown Mặc định khi định nghĩa

1 adCmdText Là một câu lệnh, ví dụ như

là SQL

2 adCmdTable Tên của table mà ta sẽ tạo

Recordset từ đó

3 adCmdStoreProc Một Store procedure trong

Data soure

Thông thường các giá trị trên được gán sẵn vào các danh hiệu hằng và được đặt

Connection.Close 2. Command object:

Thay vì dùng phương thức Execute của Connection để query hay update data soure, ta có thể sử dụng Command.

Methods

CreateParameter: Dùng để tạo một đối tượng Parameter

Execute: Dùng để thực thi câu lệnh được đặc tả trong phương thức

CommandText.

Properties

ActiveConnection: Chỉ định đối tượng Connection nào được sử dụng trong đối tượng Command.

CommandText: Chỉ định câu lệnh cần thực hiện trên cơ sở dữ liệu.

CommandTimeout: Xác định thời gian thực thi lệnh, giá trị thời gian này tính theo second.

CommandType: Cho biết kiểu của query đặc tả trong CommandText

Prepared: Tạo ra lệnh chuẩn bị trước khi thực thi.

3. Recordset Oject:

Là kết quả trả về khi thực hiện một query, thực chất nó là một bảng trong bộ

nhớ, ta có thể truy xuất các record của nó qua các phương thức và thuộc tính.

Methods:

Open: Mở recordset mới

Addnew:Tạo một record trong Recordset. (adsbygoogle = window.adsbygoogle || []).push({});

Update:Cập nhật các thay đổi vào record hiện hành.

Delete: Xoá record hiện hành.

Move: Dịch chuyển con trỏ record hiện hành.

MoveFirst: Đến record đầu tiên.

MoveNext: Đến record kế tiếp.

MovePrevious: Trở về record trước đó.

MoveLast: Đến record cuối cùng.

Requery: Thực thi lại query tạo ra recordset.

GetRow: Chứa các record vào một query.

Close: Đóng lại đối tượng Recordset.

Properties:

AbsolutePosition: Số thứ tự (vật lý) của record hiện tại.

BOF: Là True nếu con trỏ nằm trước record đầu tiên.

EOF: Là True nếu con trỏ nằm sau record cuối cùng.

CursorType: Kiểu của con trỏ được sử dụng trong recordset.

Tạo Recordset:

Trước tiên ta instace cho record bằng phát biểu

Recordset_name = Server.CreataObject(“ADODB.Recordset”)

Sau đó dùng phương thức Execute của đối tượng Connection hay Command để

tạo ra recordset.

Recordset_name = ConnectionObject.Execute (CommandText,_ Recordaffected, Options)

Trong đó:

Soure: Là một CommandObject hay một lệnh SQL hoặc là Store Procedure.

ActiveConnection: Là tên của Connection đã được mở kết nối với database.

CursorType: Là kiểu con trỏ sử dụng với recordset, thông số này có kiểu số và

được gán trị qua các tên hằng tương ứng như sau:

+ AdOpen ForwardOnly = 0: Là giá trị mặc định, chỉ cho phép duyệt các

record theo một chiều từ đầu đến cuối, không cho phép cập nhật hay xoá bỏ các record trong đó.

+ AdOpenKeyset = 1: Chế độ này cho phép cập nhật các record, nhưng cấm

truy xuất đến record của user khác thêm vào record. (adsbygoogle = window.adsbygoogle || []).push({});

+ AdOpenDynamic = 2 : Chế độ này cho phép tất cả các thao tác trên như:

thêm vào, loại bỏ, cập nhật và duyệt theo tất cả chiều lên xuống tuỳ ý.

+ AdOpenStatic = 3: Gần giống như chế độ OpenForwardOnly.

Một số đoạn chương trình xây dựng các thao tác: Thêm, xoá, sửa, lưu và thoát khỏi một record. Ví dụ đối với formChứcvụ

--- Option Explicit

Private flag As String

--- Private Sub cmdClose_Click()

Unload Me End Sub

--- Private Sub cmdDel_Click()

Xoa_Du_Lieu End Sub

--- Private Sub cmdNew_Click()

set_null End Sub

Private Sub cmdSave_Click() If flag <> "Update" Then flag = "Save"

End If

Luu_Du_Lieu End Sub

--- Private Sub cmdUpdate_Click()

txtTenCV.Enabled = True txtTenCV.SetFocus End Sub

--- Private Sub Form_Load()

Display_listView End Sub

--- Private Sub Display_listView()

Dim rs As New ADODB.Recordset Dim str

Dim mItem As ListItem

ListItem.ListItems.Clear

str = "select * from chucvu order by Macv asc"

rs.Open str, cn, adOpenKeyset, adLockOptimistic, adCmdText If rs.EOF = False Then

While Not rs.EOF

Set mItem = ListItem.ListItems.Add(, , rs!MaCV) mItem.SubItems(1) = rs!tencv rs.MoveNext Wend End If txtMaCV.Enabled = False txtTenCV.Enabled = False End Sub --- Private Sub ListItem_ItemClick(ByVal Item As MSComctlLib.ListItem) txtMaCV = Item.Text

txtTenCV = Item.SubItems(1) txtMaCV.Enabled = False End Sub

Private Sub Xoa_Du_Lieu() Dim str

Dim response (adsbygoogle = window.adsbygoogle || []).push({});

Dim rs As New ADODB.Recordset If Trim(txtMaCV) = "" Then Exit Sub

End If

response = MsgBox(" Bạn có chắc chắn xoá Chức Vụ này ? ", vbYesNo + vbQuestion, "Thong Bao")

If response = vbNo Then Exit Sub

Else

str = "delete from Chucvu where Macv = '" & Trim(txtMaCV) & "'" cn.Execute (str) End If set_null Display_listView End Sub --- Private Sub Luu_Du_Lieu()

Dim rs As New ADODB.Recordset Dim str

Dim Nghiamap

'kiểm tra độ dài mã Chức Vụ

If Len(Trim(txtMaCV)) <> 2 Then

MsgBox "Ban phải nhập mã số có 2 số. Vui lòng nhập lại", vbOKOnly +

vbInformation, "Thông báo" txtMaCV.SetFocus Exit Sub

End If

--- 'kiem tra mãcv va Têncv trước khi lưu

'Neu Macv="" va Tencv="" thi không cho nhập

If Trim(txtMaCV) = "" Or Trim(txtTenCV) = "" Then

MsgBox " Chu y : Bạn phải nhập vào mã và tên Chức Vụ trước khi lưu ",

vbOKOnly + vbExclamation, "Thông báo" Me.MousePointer = 0

Exit Sub End If

'kiểm tra nhập có phải là số không?

If Not IsNumeric(txtMaCV.Text) Then

vbOKOnly + vbExclamation, "Thông báo" txtMaCV.SetFocus txtMaCV.Text = "" Exit Sub End If ' mở table Chức Vụ

str = "select * from Chucvu where Macv = '" _ & Trim(txtMaCV) & "'"

rs.Open str, cn

'kiểm tra tên ChứcVụ có trùng không? nếu trùng thì không cho nhập

If TrungTen = True Then

MsgBox "Tên Chức Vụ này đã nhập rồi bạn không cần nhập nữa", _

vbOKOnly + vbExclamation, "Thông báo" Exit Sub

End If

'lưu vào table 1 recordset mới (adsbygoogle = window.adsbygoogle || []).push({});

If rs.EOF = True Then

str = "insert into Chứcvụ values('" _

& Trim(txtMaCV) & "','" & Trim(txtTenCV) & "')" cn.Execute (str)

Else

Nghiamap = MsgBox("Chức vụ có mã [" & txtMaCV & "] đã tồn tại.

Bạn có muốn sửa không?", vbYesNo + vbExclamation, "Thông báo")

If Nghiamap = vbNo Then Exit Sub

Else

'sua lai Tên chức vụ

str = "Update chucvu set TenCV = '" & Trim(txtTenCV) & "' where Macv = '" & Trim(txtMaCV) & "'"

cn.Execute (str) End If End If 'hiển thị danh sách Chức Vụ Display_listView cmdNew.SetFocus Me.MousePointer = 0 End Sub 'tao txtMãcv va txtTêncv tính rỗng

Private Sub set_null() txtMaCV.Enabled = True

txtTenCV.Enabled = True txtMaCV.Text = "" txtTenCV.Text = "" txtMaCV.SetFocus End Sub --- Private Function TrungTen() As Boolean

Dim rs As New ADODB.Recordset Dim str

Dim kiemtra

str = "select * from CHucvu "

rs.Open str, cn, adOpenKeyset, adLockOptimistic, adCmdText

Một phần của tài liệu luận văn ứng dụng việc quản lý bằng tin học vào trong việc quản lý bệnh nhân và nhân viên của bệnh viện tỉnh khánh hòa (Trang 36 - 44)