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.

Một phần của tài liệu Tài liệu Luận văn Hệ quản trị cơ sở dữ liệu và SQL Server 2000 ppt (Trang 33 - 38)

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.

Một phần của tài liệu Tài liệu Luận văn Hệ quản trị cơ sở dữ liệu và SQL Server 2000 ppt (Trang 33 - 38)