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.
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.
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.
+ 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
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
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