Chương IV: THỰC HIỆN CÀI ĐẶT CHƯƠNG TRÌNH
IV.3 MỘT SỐ ĐOẠN CHƯƠNG TRÌNH TRONG BÀI SỬ DỤNG CÁC PHƯƠNG THỨC TRÊN.
PHƯƠNG THỨC TRÊN.
Để hiển thị dư liệu đã có trên table ta có đoạn mã lệnh sau:
Private Sub Display_Listview() Dim rs As New ADODB.Recordset
Dim Str
Dim mItem As listItem listItem.ListItems.Clear
Str = "select * from tblTinh order by Matinh asc"
Set rs = cn.Execute(Str) 'Thuc Hien Mot Lenh SQL duoc chi ra boi str If rs.EOF = False Then
While Not rs.EOF
Set mItem = listItem.ListItems.Add(, , rs!MaTinh) mItem.SubItems(1) = rs!TenTinh
rs.MoveNext Wend
End If End Sub
Ơû đây ListItem là đối tượng Listview có chức năng hiển thị dữ liệu, trong
đoạn chương trình trên ta sử dụng phương thức (Set rs = cn.Execute(Str)) để thực hiện một câu truy vấn (Câu truy vấn trả về một Record là thông tin của table tỉnh)kết quả
trả về từ câu truy vấn này được gán cho rs và được hiển thị trên Listview.
Để thêm mới một tỉnh (thành) ta có mã lệnh sau
DE.Sp_NhapTinh MaTinh, TenTinh
Trong đó DE là đối tượng Data Environment mà ta đã nói ở trên còn SP_NhapTinh là các hàm (hay các Stored Procedure) đã được viết và lưu trong cơ sở
dữ liệu, câu lệnh truy vấn tạo mới một tỉnh như sau: Create proc Sp_NhapTinh
@MaTinh nchar(3), -- MaTinh và TenTinh là các tham số dầu vào của @TenTinh char(30) -- Stored Procedure
AS
Insert Into tblTINH ( MaTinh, TenTinh ) Values ( @MaTinh,@TenTinh ) GO
Tương tự với phương Stored Procedure sửa tên tỉnh
Với việc xố một tỉnh có khác chút ít việc xố một tỉnh có liên quan đến các ràng buộc tồn vẹn. Việc xố một tỉnh không chỉ xóa đi tỉnh đó, việc này phải đi kém với việc xố tất cả các huyện cũng như các xa thuộc tỉnh ngồi ra ta còn phải xố tất các các bệnh nhân và nhân viên (cùng giấy tờ kèm theo) thuộc tỉnh cần xố. Mã lệnh có dạng như sau:
--- Thủ tục dùng để xố một tỉnh --- CREATE PROCEDURE Sp_XoaTinh
@Matinh nchar(3), ‘Tham sốđầu vào của Stored Procedure
AS
--- Xố khám bệnh úng với bệnh nhân thuộc tỉnh DELETE From tblKhamBenh
Where tblKhamBenh.MaBenhNhan in ( Select MaBenhNhan
From TblBenhNhan
Where tblBenhNhan.maXa in (Select MaXa From tblXa Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh)))
--- Xố khám bệnh úng với nhân viên thuộc tỉnh DELETE From tblkhamBenh
Where tblKhamBenh.MaNhanVien in ( Select MaNhanVien
From TblNhanVien
Where tblNhanVien.maXa in (Select MaXa From tblXa Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh)))
---- Xóa dùng thuốc ứng với đơn thuốc của bệnh nhân DELETE From tblDungThuoc
Where tblDungThuoc.MaDonThuoc in (Select MaDonThuoc From tblDonThuoc Where tblDonThuoc.MaBenhNhan in (Select MaBenhNhan From tblBenhNhan Where tblBenhNhan.maXa in (Select MaXa From tblXa Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh))))
-- Xốđơn thuốc của bệnh nhân thuộc tỉnh DELETE From tblDonThuoc
Where tblDonThuoc.MaBenhNhan in
(Select MabenhNhan
From tblBenhNhan
Where tblBenhNhan.maXa in (Select MaXa From tblXa Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh)))
--- Xố tạm ứng của bệnh nhân thuộc tỉnh DELETE From tblTamUng
Where tblTamUng.MaBenhNhan in ( Select MaBenhNhan
From TblBenhNhan
Where tblBenhNhan.maXa in (Select MaXa From tblXa Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh)))
--- Xố bệnh án của bệnh nhân DELETE From tblBenhAn
Where tblBenhAn.MaBenhNhan in ( Select MaBenhNhan From TblBenhNhan
Where tblBenhNhan.maXa in (Select MaXa From tblXa Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh)))
---Xố các bệnh nhân thuộc tỉnh --- DELETE From tblBenhNhan
Where tblBenhNhan.maXa in (Select MaXa From tblXa Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh))
--- Xố dùng thuốc mà nhân viên thuộc tỉnh lập DELETE From tblDungThuoc
Where tblDungThuoc.MaDonThuoc in (Select MaDonThuoc From tblDonThuoc Where tblDonThuoc.MaNhanVien in (Select MaNhanVien From tblNhanVien Where tblNhanVien.maXa in
(Select MaXa From tblXa Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh))))
--- Xốđơn thuốc mà nhân viên lập DELETE From tblDonThuoc
Where tblDonThuoc.MaNhanVien in
(Select MaNhanVien
From tblNhanVien
(Select MaXa From tblXa Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh)))
--- Xố bệnh án mà nhân viên lập DELETE From tblBenhAn
Where tblBenhAn.MaNhanVien in ( Select MaNhanVien From TblNhanVien
Where tblNhanVien.maXa in (Select MaXa From tblXa
Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh)) )
---Xố tất cả nhân viên thuộc tỉnh--- DELETE From tblNhanVien
Where tblNhanVien.maXa in (Select MaXa From tblXa Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh))
--- Xố tất cả các xã thuộc tỉnh--- DELETE From tblXa
Where tblXa.MaHuyen in
(Select MaHuyen From tblHuyen Where tblHuyen.MaTinh = @Matinh) ---Xố tất cả các huyện thuộc tỉnh--- DELETE From tblHuyen
Where tblHuyen.Matinh = @Matinh --- Xố tỉnh có mã tỉnh được chỉ ra-- DELETE From tblTinh
Where MaTinh=@Matinh GO
Đối với các thủ tục xố một huyện cũng nhaư một xã ta cũng phải đi xó tất cả
các bệnh nhân và nhân viên trực thuộc địa danh đó.
Trong qúa trình trình bày dữ liệu chúng tôi đã sử dụng một số View để kết nối bảng ví dụ với View địa chỉ như sau:
CREATE VIEW dbo.vwDiaChi AS
SELECT dbo.tblTINH.TenTinh, dbo.tblHUYEN.TenHuyen, dbo.tblXA.TenXa, dbo.tblXA.Maxa FROM dbo.tblHUYEN INNER JOIN
dbo.tblTINH ON dbo.tblHUYEN.MaTinh = dbo.tblTINH.MaTinh INNER JOIN
dbo.tblXA ON dbo.tblHUYEN.MaHuyen = dbo.tblXA.MaHuyen
Để tìm kiếm một bệnh nhân chúng tôi sử dụng một hàm tìm kiếm hàm này trả
về một table các tiêu chí tìm kiếm được chỉ ra bằng các tham sốđầu vào của hàm. Ví dụ về một hàm tìm kiếm bệnh nhân theo họ và tên đầy đủ trong chương trình.
CREATE FUNCTION udf_TimBenhNhanTheoHoTen
(@HoBenhNhan Char(20), @TenBenhNhan char(20)) RETURNS Table --- AS --- Return Select * From tblBenhNhan
Where (tblBenhNhan.HoBenhNhan= @HoBenhNhan) and (tblBenhNhan.TenBenhNhan= @TenBenhNhan) GO
---
Trọng đoạn chương trình trên việc tìm một bệnh nhân là khá đơn giản. Giả sử
ta nhớ đầy đủ họ và tên đầy đủ của bệnh nhân ta có thể tìm theo phương pháp trên. Song nếu chỉ nhớ được họ hoặc tên của bệnh nhân thi ta cũng có thể tìm được bệnh nhân bằng các hàm tìm theo họ, theo tên bệnh nhân, trong chương trình còn sử dụng một số hàm khác mà chúng tôi không tiện trình bày trong báo cáo này.
Thoạt tiên ta có cảm giác một hàm (Function) hơi giống với một View song với View thì không có dữ liệu đầu vào còn với hàm thì ngược lại. Rõ ràng để truy xuất dữ liệu với hàm là linh hoạt hơn với View rất nhiều.