Để hiển thị dữ liệu trong trong một Table ta sử dụng đối tởng Listview
đối tợng này tơng đối tiện lợi để hiển thị dữ liệu cụ thể 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
Trong đó listItem là đối tợng Listview có chức năng hiển thị dữ liệu, biến rs có kiểu Recordset để lu trữ dữ liệu trong một Recor (dữ liệu trong bảng). Trong đoạn chơng trình trên ta còn sử dụng phơng thức Set rs = cn.Execute(Str) để thực hiện câu truy vấn (SQL) trong ngoặc, câu truy vấn này lấy về dữ liệu đợc cất trong biến Record (rs) và đợc hiển thị trên Listview.
Để thêm mới dữ liệu vào một Table trong chơng trình ta sử dụng đối t- ợng Data Environment đối tợng này cho phép gọi các hàm hoặc các thủ tục nh cách gọi của Visual Basic. Dới đây là ví dụ cách gọi một hàm có tên Sp_NhapTinh có chức năng thêm một tỉnh mới
DE.Sp_NhapTinh MaTinh, TenTinh
38
Trong đó DE là đối tợng Data Environment và hàm Sp_NhapTinh là hàm (có thể là các thủ tục thậm chí là một View) đợc viết và lu trong cơ sở dữ liệu.
Tơng tự với các thủ tục khác cũng đợc thực hiện bằng cách gọi nh trên, tuy nhiên đối với thủ tục xóa dữ liệu trong một Table lại là một việc khá
phức tạp bởi việc này còn liên quan đế một số ràng buộc về khóa. Ví dụ việc xóa một tỉnh thành, ta phải đi xóa toàn bộ các huyện, xã trực thuộc tỉnh đó, không những vậy ta còn phải xóa tất cả các bệnh nhân và nhân viên cùng các giấy tờ có liên quan, cụ thể ta có mã lệnh nh sau:
CREATE PROCEDURE Sp_XoaTinh
@MaTinh Char(2) AS
---
-- Xoa Tat ca can bo la benh nhan truc thuoc tinh Delete From tblCanBo
Where tblCanBo.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)))
--- ---
-- Xoa Tat ca cac bao hiem y te cua benh nhan thuoc tinh Delete From tblBaoHiemYTe
Where tblBaoHiemYte.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)))
--- --
-- Xoa tam ung cua cac benh nhan thuoc tinh Delete From tblTamUng
39
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)))
--- ---
-- Xoa Dung dich vu ma benh an dung Delete From tblDichVuDung
Where tblDichVuDung.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)))
--- ---
-- Xoa Dung Dich Vu
Delete From tblDichVuDung
Where tblDichVuDung.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)))
--- ---
-- Xoa Benh An cua Benh Nhan thuoc tinh tren Delete From tblBenhAn
Where tblBenhAn.MaBenhNhan in(Select MaBenhNhan
From tblBenhNhan
40
Where tblBenhNhan.MaXa in(Select MaXa
From tblXa
Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh)))
--- ---
-- Xoa Benh An ma Nhan Vien lap 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)))
--- ---
--Xoa dong kham benh cua benh nhan Delete From tblDongKhamBenh
Where tblDongKhamBenh.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)))
--- ---
-- Xoa Dong Kham Benh Ma Nhan Vien kham Delete From tblDongKhamBenh
Where tblDongKhamBenh.MaNhanVien in (Select MaNhanVien
From tblNhanVien
Where tblNhanVien.MaXa in (Select MaXa
41
From tblXa
Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen
Where tblHuyen.matinh=@MaTinh)))
--- ---
--- Xoa Thuoc ma Nhan vien cap cho don thuoc Delete From tblThuocDung
Where tblThuocDung.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)))
--- ---
-- Xoa thuoc dung cho benh nhan thuoc tinh Delete From tblThuocDung
Where tblThuocDung.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)))
--- ---
-- Xoa benh nhan thuoc tinh Delete From tblBenhNhan Where tblBenhNhan.MaXa
in(Select MaXa From tblXa
Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh))
42
--- ---
-- Xoa Nhan Vien thuoc tinh Delete From tblNhanVien Where tblNhanVien.MaXa
in(Select MaXa From tblXa
Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@MaTinh))
--- ---
-- Xoa Xa truc thuoc tinh Delete From tblXa Where tblXa.MaHuyen
in(Select MaHuyen From tblHuyen
Where tblHuyen.MaTinh=@Matinh)
--- ---
-- Xoa Huyen trong tinh Delete From tblHuyen
Where tblHuyen.MaTinh=@MaTinh
--- ---
-- Xoa Tinh can Xoa Delete From tblTinh
Where tblTinh.MaTinh=@Matinh
--- ---
GO
Đối với các thủ tục xóa huyện, xã cũng tơng tự nh việc xóa một tỉnh nên cũng phải xóa tất cả các dữ liệu có liên quan.
Để trình bày dữ liệu em dùng view để kết nối các bảng. Ví dụ đối với view địa chỉ la sự kết nối của ba bảng Tỉnh, Huyện, Xã 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
43
dbo.tblXA ON dbo.tblHUYEN.MaHuyen = dbo.tblXA.MaHuyen
Để tìm kiếm dữ liệu trong chng trình em sử dụng hàm tìm kiếm đợc xây dựng sẵn trong cơ sở dữ liệu ví dụ tìm kiếm một bệnh nhân ta có đoạn truy vấn sau:
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
Hàm này trả về một Table và các tiêu chí tìm kiếm đợc chỉ ra trong dữ
liệu đầu vào là @HoBenhNhan và @TenBenhNhan. Tơng tự nh vậy ta có thể tìm kiếm bất kỳ dữ liệu nào có trong cơ sở dữ liệu và với các tiêu chí đ- ợc đa ra ở đầu vào.
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 không có dữ liệu đầu vào, song với hàm thì ngợc lại. Do đó
để truy xuất dữ liệu thì với hàm là linh hoạt hơn rất nhiều so với view.