0

IV.3 MỘT SỐ ĐOẠN CHƯƠNG TRÌNH TRONG BAØI SỬ DỤNG CÁC PHƯƠNG THỨC TRÊN.

Một phần của tài liệu QUẢN LÝ BỆNH NHÂN.DOC (Trang 38-44 )

Chương IV: THỰC HIỆN CAØI ĐẶT CHƯƠNG TRÌNH

IV.3 MỘT SỐ ĐOẠN CHƯƠNG TRÌNH TRONG BAØ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

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 xoá một tỉnh có khác chút ít việc xoá một tỉnh có liên quan đến các ràng buộc toàn vẹn. Việc xoá 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 xoá tất cả các huyện cũng như các xa thuộc tỉnh ngoài ra ta còn phải xoá 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 xoá. Mã lệnh có dạng như sau:

--- Thủ tục dùng để xoá một tỉnh --- CREATE PROCEDURE Sp_XoaTinh

@Matinh nchar(3), ‘Tham số đầu vào của Stored Procedure @TenTinh char(30)

AS

--- Xoá 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))) --- Xoá khám bệnh úng với nhân viên thuộc tỉnh

DELETE From tblkhamBenh

( 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)))) -- Xoá đơ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))) --- Xoá 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))) --- Xoá 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))) ---Xoá 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)) --- Xoá 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)))) --- Xoá đơn thuốc mà nhân viên lập

DELETE 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

--- Xoá 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))) ---Xoá 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)) --- Xoá 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) ---Xoá tất cả các huyện thuộc tỉnh--- DELETE From tblHuyen

Where tblHuyen.Matinh = @Matinh --- Xoá tỉnh có mã tỉnh được chỉ ra-- DELETE From tblTinh

Where MaTinh=@Matinh GO

Đối với các thủ tục xoá 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.

Một phần của tài liệu QUẢN LÝ BỆNH NHÂN.DOC (Trang 38 -44 )