SlideShare a Scribd company logo
1 of 92
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC QUẢN LÝ VÀ KINH DOANH HÀ NỘI
KHOA TIN HỌC
Giáo viên hướng dẫn : TS. Hoàng Xuân Thảo
Sinh Viên thực hiện : Đỗ Đức Chung
Mã sinh viên : 99CV17
Khóa : IV
Đề tài:
QUẢN LÝ TÀI SẢN CỐ ĐỊNH
Ngành đào tạo: Tin học quản lý
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 2
Mục lục
Nội dung Trang
Lời cảm ơn 3
Lời giới thiệu 4
Phần I Giới thiệu về ngôn ngữ Visual Basic 5
1 Các công cụ để thiết kế giao diện 5
2 Lập trình vớI ngôn ngữ Visual Basic 8
Phần II Phần mềm Quản lý tài sản cố định 14
1 Mục đích và nhu cầu thực tế của phần mềm 14
2 Các chức năng chính 14
3 Cơ sở dữ liệu 16
Phần III Mã nguồn 22
1 Một số Form chính 22
2 Một số Modul chính 85
Kết luận 92
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 3
Lời Cảm ơn
Hơn bốn năm học vất vả nhưng đầy thú vị đã trôi qua.
Ngày ra trường đã đến gần. Chúng tôi, những sinh viên lớp
tin 4, trường Đại học Quản lý và Kinh doanh Hà Nội đã
hoàn tất nốt những trang cuối của Luận văn tốt nghiệp.
Luận văn này là kết quả học tập, rèn luyện của tôi trong bốn
năm học và hơn 6 tháng thực tập. Để có thể hoàn thành luận
văn này, tôi đã nhận được rất nhiều sự chỉ bảo, hướng dẫn
của các thầy, cố giáo, sự động viên, giúp đỡ của bạn bè, gia
đình…
Trước hết, tôi xin được chân thành cảm ơn Thầy giáo,
TS. Hoàng Xuân Thảo đã tận tình hướng dẫn và giúp đỡ tôi
hoàn thành đề tài luận văn tôt nghiệp.
Tôi xin được bày tỏ lòng biết ơn các thầy, cô giáo
trường Đại Học Quản lý và Kinh doanh Hà Nội, đặc biệt là
Khoa Tin Học, đã giảng dạy, truyền thụ những kiến thức quý
báu, cũng như tạo mọi điều kiện thuận lợi cho tôi trong suốt
quá trình học tập tại trường.
Xin được gửi lời cảm ơn đến những người thân trong
gia đình, bạn bè đã giúp đỡ, động viên tôi trong quá trình
thực hiện luận văn.
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 4
Lời giới thiệu
Trong thời đại ngày nay, bất kể tổ chức, cá nhân nào, từ các
doanh nghiệp tư nhân đến cơ quan nhà nước, hay các tổ
chức xã hội tất cả đều không thể không sử dụng công nghệ
thông tin để phát triển và tồn tại. Các hoạt động của nhà
nước, mà quản lý tài sản là một phần nhỏ, cũng không nằm
ngoài quy luật trên.
Hàng năm, nhà nước ta đều tiến hành kiểm kê các tài sản cố
định để nhằm nắm được số lượng, chất lượng, giá trị và thực
trạng sử dụng của các tài sản cố định đang sử dụng trong các
cơ quan nhà nước. Tài sản cố định ở đây là tất cả các tài sản
có nguồn gốc từ vốn của nhà nước, đang được các đơn vị
hành chính sử dụng. Việc kiểm kê này bao gồm rất nhiều
công đoạn như: Xác định hiện trạng, định giá lại tài sản, lập
phiếu kiểm kê, thống kê số liệu, lưu giữ dữ liệu…Công việc
này đòi hỏi một số lượng lớn thời gian, nhân lực, vật lực.
Chính vì vậy, tôi đã chọn đề tài Quản lý tài sản cố định làm
đề tài cho Luận văn tốt nghiệp. Chương trình được viết ra
nhằm mục đích tin học hoá các hoạt động trên để giảm bớt
chi phí về thời gian cho công việc thống kê, tìm kiếm, lập
phiếu kiểm, lưu giữ dữ liệu. Chương trình có thể áp dụng
trong TP. Hà Nội.
Công tác quản lý, thống kê các tài sản cố định là một bài toán
lớn, phức tạp. Trong khi đó, thời gian để thực hiện đồ án là có
hạn, cũng như kinh nghiệm về lập trình, hiểu biết về nghiệp vụ
thực tế còn hạn chế, nên chắc chắn chương trình phần mềm
và luận văn nay sẽ còn nhiều hạn chế. Tôi rất mong sẽ nhận
được sự đóng góp ý kiến, chỉ bảo của các thầy, cô giáo, cũng
như các bạn có quan tâm đến đề tài này.
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 5
Phần I : Giới thiệu ngôn ngữ Visual Basic
Ngôn ngữ Visual Basic ngày càng được sử dụng rộng rãi trong các đề án,
chương trình thực hiện trong và ngoài nước. Visual Basic được xem là
một công cụ phát triển phần mềm thông dụng hiện nay.
Sau phiên bản Visual Basic 1.0 là Visual Basic 2.0, đã từng chạy nhanh
hơn, dễ sử dụng hơn. Đến Visual Basic 3.0 bổ sung thêm một số phương
thức đơn giản, dễ điều khiển cơ sở dữ liệu hơn. Visual Basic 4.0 bổ sung
thêm hơn hỗ trợ phát triển 32 bit và bắt đầu tiến trình chuyển Visual Basic
thành ngôn ngữ lập trình hướng đốI tượng. Visual Basic 5.0 bổ sung khả
năng tạo các điều khiển riêng. Visual Basic 6.0 có thêm nhiều chức năng
mạnh như các ứng dụng Internet/ Intranet. . .v.v…..
Visual Basic gắn liền vớI khái niệm lập trình trực quan, nghĩa là khi thiết kế
chương trình, bạn thấy ngay được kết quả qua từng thao tác. Visual Basic
cho phép chỉnh sửa một cách đơn giản, nhanh chóng giao diện của các
đốI tượng trong ứng dụng. Đó là một thuận lợI cho ngườI lập trình.
VớI Visual Basic, việc lập trình trong Windows đã trở nên hiệu quả hơn và
đơn giản hơn rất nhiều. Một khả năng nữa của Visual Basic là khả năng
kết hợp các thư viện liên kết động DLL (Dynamic Link Library). DLL chính
là phần mở rộng cho Visual Basic, tức là khi xây dựng một chương trình
có một số yêu cầu mà Visual Basic không đáp ứng đầy đủ ta có thể viết
các DLL để phụ thêm cho chương trình.
1 Các công cụ để thiết kế giao diện:
Như chúng ta đã biết Visual Basic là ngôn ngữ lập trình có tính hướng đốI
tượng nên công việc thiết kế giao diện là rất đơn giản. Chúng ta chỉ việc
tiến hành đưa các đốI tượng cần thiết trong thanh công cụ vào Form bằng
cách kích – kéo sau đó thay đổI các thuộc tính của chúng trên cửa sổ
Properties cho phù hợp vớI mục đích lập trình.
1.1 Form:
Form là một biểu mẫu của mỗI ứng dụng trong Visual Basic. Ta dùng
Form nhằm mục đích định vị và sắp xếp các bộ phận trên nó khi thiết kế
giao diện vớI ngườI sử dụng. Ta có thể xem Form như một bộ phận mà nó
có thể chứa các bộ phận khác. Các thành phần trong Form chính của ứng
dụng tương tác vớI các Form khác và các bộ phận của chúng tạo nên giao
tiếp cho ứng dụng. Form chính là giao diện chính của ứng dụng, các Form
khác có thể chứa các công cụ để nhập dữ liệu, xem xét v.v…
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 6
Trong nhiều ứng dụng của Visual Basic, kích cỡ và vị trí của biểu mẫu lúc
thiết kế là kích cỡ mà ngườI dùng sẽ gặp vào lúc sử dụng. Điều này, có
nghĩa là Visual Basic cho phép ta thay đổI kích cỡ và di chuyển vị trí Form
đến bất cứ nơi nào trên màn hình khi chạy một đề án, bằng cách thay đổI
một số thuộc tính của nó trên cửa sổ thuộc tính đốI tượng (Properties
Windows ). Thực tế, một trong tính năng thiếu của Visual Basic là khả
năng tiến hành các thay đổI động để đáp ứng sự kiện ngườI dùng.
1.2 Toolbox (hộp công cụ):
Toolbox là hộp công cụ chưa các biểu tượng, biểu thị cho các điều khiển
mà ta có thể biểu mẫu là bảng chứa các đối tượng đã được định nghĩa
sẵn của Visual Basic. Các đối tượng này được sử dụng trong Form để tạo
thành giao diện cho các chương trình ứng dụng của Visual Basic. Ta có
thể coi hộp công cụ là một hộp “đồ nghề” của người thiết kế chương trình.
1.3 Scrollbar (thanh cuốn):
Scrollbar là đối tượng cho phép nhận từ người dùng một giá trị tuỳ theo vị
trí con chạy trên thanh cuốn thay cho các giá trị số.
Thanh cuốn có một số thuộc tính quan trọng sau:
 Thuộc tính Min: xác định cận dưới của thanh cuốn.
 Thuộc tính Max: xác định cận trên của thanh cuốn.
 Thuộc tính Value: xác định giá trị tạm thời của thanh cuốn.
1.4 Option Button (Nút chọn):
Đối tượng nút chọn (thường được dùng nhiều nút) cho phép người dùng
chọn một trong những lựa chọn đưa ra. Như vậy, tại 1 thời điểm chỉ có thể
là 1 trong những nút chọn đuợc chọn
1.5 Checkbox( hộp kiểm)
Cũng như nút chọn, đối tượng hộp kiểm được dùng nhiều hộp một lần.
Nhưng khác với nút chọn, hộp kiểm cho phép người dùng lựa một hay
nhiều điều kiện. Như vậy tại 1 thời điểm có thể có nhiều hộp kiểm được
chọn
1.6 Label(nhãn)
Đối tượng nhãn cho phép người dùng gắn nhãn 1 bộ phận nào đó của
giao diện trong lúc thiết kế giao diện cho chương trình ứng dụng .
Các nhãn dùng để hiển thị thông tin không muốn người dùng thay đổi.
Trong thực tế, các nhãn thường được dùng để định danh 1 hộp văn bản
hoặc 1 điều khiển khác bằng việc mô tả nội dung của điều khiển đó. Một
công cụ phổ biến cho việc hiển thị thông tin trợ giúp,
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 7
1.7 Picturebox, Image ( hộp ảnh, điều khiển ảnh )
Đối tượng Image và Picturebox dùng để hiển thị ảnh . Nó cho phép người
thiết kế đưa hình ảnh từ các file ảnh ( .bmp , .gif …) lên Form
1.8 Textbox ( hộp văn bản )
Đối tượng Textbox dùng làm hộp nhập dữ liệu cho phép đưa các chuỗi ký
tự vào Form. Có thể dùng hộp văn bản để nhập dữ liệu hoặc hiển thị văn
bản . Tất cả các công cụ trong windows về chỉnh sửa văn bản như : cut ,
copy , paste đều dùng trong hộp văn bản
1.9 Command Button ( nút lệnh )
Khi người dùng kích vào 1 nút lệnh trong biểu mẫu, một thao tác nào đó
sẽ được thực hiện tuỳ theo thủ tục sự kiện được viết để đáp ứng sự kiện
kích chuột đó .
1.10 Listbox ( hộp danh sách )
Đối tượng Listbox cho phép kết xuất các thông tin về nhiều chuỗi kí tự vào
trong nó thông qua phương thức additem. Thường được dùng để hiển thị
thông tin dưới dạng danh sách có liên quan với nhau. Listbox không cho
phép người dùng nhập dữ liệu vào.
1.11 Combo box ( hộp kết hợp )
Công cụ này cho phép người dùng gõ vào thông tin và hiển thị thông tin .
nó có tác dụng như hộp danh sách và hộp văn bản . Hộp kết hợp có 3 loại:
- Hộp kết hợp thả xuống ( drop-down combo ) : là 1 hộp văn bản cho
phép người dùng gõ vào, kế bên có 1 mũi tên mà khi nhấn vào nó sẽ
xổ ra 1 danh sách cho phép người sử dụng chọn lựa .
- Hộp kết hợp đơn giản ( simple combo ) : luôn hiển thị danh sách và cho
phép người dùng gõ vào hộp văn bản.
- Hộp danh sách thả xuống ( drop- down list box) : tương tự như hộp kết
hợp thả xuống. Danh sách sẽ không hiển thị sẵn nếu người dùng
không nhấn vào mũi tên bên cạnh. người sử dụng chỉ có thể chọn từ
danh sách, gõ vào hộp văn bản thì danh sách sẽ cuộn đúng đến phần
tử yêu cầu và đánh dấu nó.
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 8
1.12 Ole ( đối tượng nhúng )
Ole là viết tắt của Object - Linking and Embedding . Nó cho phép ta nhúng
toàn bộ ứng dụng và dữ liệu từ một ứng dụng khác vào chương trình . Ole
không chỉ là 1 hệ thống cho phép nhúng hay kết nối dữ liệu từ 1 ứng dụng
khác mà vào thời gian chạy của chương trình ta sẽ có 1 bản sao của ứng
dụng đó trong chương trình của ta. Nó có khả năng automation cho phép
đóng gói các đối tượng chức năng của ứng dụng để có thể sử dụng trong
ứng dụng khác.
1.13 Project explorer
Project explorer trong Visual Basic 6.0 giúp quản lý và định hướng các đề
án, biểu mẫu, các module,…. Visual Basic cho phép tổ chức nhiều đề án
trong 1 nhóm gọi là project groups. Ta có thể lưu tập hợp các đề án trong
Visual Basic thành 1 tập tin nhóm đề án. Các tập tin này có phần mở rộng
là .Vbg .
1.14 Propeties windows ( cửa sổ thuộc tính )
Là nơi chứa danh sách các thuộc tính của một đối tượng cụ thể. Các
thuộc tính này có thể khác nhau với từng đối tượng cụ thể. Ta có thể đặt
các thuộc tính cho phù hợp với các chương trình ứng dụng.
2 Lập trình với ngôn ngữ Visual Basic
Ở phần một, chúng ta mới chỉ biết tuỳ biến biểu mẫu bằng cách bổ xung
các điều khiển vào cho phù hợp với yêu cầu của chương trình. Tuy nhiên,
đó chỉ có thể coi là bộ mặt của chương trình. Muốn chương trình chạy
được thì chúng ta phải thêm vào các thành phần khác như lệnh, dữ liệu. .
và cách thức thể hiển chúng trong chương trình.
Khi lập trình trong Visual Basic thì phần lớn các mã được xử lý để đáp ứng
sự kiện. Ví dụ như sự kiện kích chuột, bấm phím, load form…Các dòng
mã thi hành trong một chương trình Visual Basic phải nằm trong các thủ
tục hoặc hàm, các dòng lệnh nằm ngoài sẽ không làm việc. Toàn bộ mã
lệnh được gõ vào trong cửa sổ code.
2.1 Cửa sổ code
Cửa số code bao gồm các thành phần sau:
Thanh tách: cửa sổ code có một thanh tách (Split bar) nằm đầu thanh
cuộn dọc. Mục đích của nó là: khi các dòng mã trở nên nhiều, ta có thể
chia cửa sổ code thành 2 phần.
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 9
Hộp liệt kê Object: nằm ở đầu cửa sổ code bên trái, nó liệt kê tất cả các
điều khiển có trên biểu mẫu và thêm vào một đối tượng có tên là: General.
Khi thả hộp liệt kê và nhắp vào một đối tượng nào đó thì sẽ đưa ta đến
phần mã viết cho đối tượng đó.
Hộp Procedure: hộp này cung cấp mọi sự kiện mà đối tượng đã được lựa
chọn trong hộp liệt kê object.
2.2 Intellisence:
Intellisence là một công cụ thông minh, nó giúp ta đỡ mất công gõ và tra
cứu. Intellisence mở các hộp liệt kê cùng với các thông tin về đối tượng
mà ta đang tiếp cận. Nó có 3 phần:
- QuickInfo: cho ta thông tin về cú pháp của 1 lệnh Visual Basic. Mỗi khi
nhập một từ khoá theo sau là một dấu cách hoặc dấu chấm. . .một hộp
thoại sẽ hiện ra cung cấp cú pháp của thành phần đó.
- List properties/Methods: tính năng này đưa ra một danh sách các tính
chất và phương pháp của đối tượng ngay khi ta gõ dấu chấm.
- Available constant : tính năng này cung cấp một danh sách các hằng
sẵn có.
2.3 Biến
Trong Visual Basic, tên biến có thể dài tối đa 255 kí tự. Kí tự đầu tiên phải
là một chữ cái và tên biến có thể là một tổ hợp chữ cái, chữ số và dấu
gạch dưới. Không được dùng các từ khoá trong Visual Basic ( như end,
print. . .) làm tên biến. Visual Basic không phân biệt chữ hoa, chữ thường.
Cách khai báo biến: Dim <Tên biến> as <Kiểu biến>
Phạm vi sử dụng biến phụ thuộc vào cách khai báo biến và vị trí đặt dòng
lênh khai báo.
2.4 Các kiểu dữ liệu:
- String: các biến string lưu giữ các kí tự. Một chuỗi có thể có một hay
nhiều kí tự.
- Integer: biến nguyên lưu giữ các giá trị số nguyên từ -32768 đến
+32767.
- Long Integer: biến số nguyên dài lưu giữ các số nguyên giữa:
-2147483648 đến +214783647.
- Single precision: các số có phần thập phân gồm: Single precision có độ
chính xác đến 7 chữ số và double precision có độ chính xác lên đến 16
vị trí.
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 10
- Currency: Biến tiền tệ là một kiểu mới. Kiểu này cho ta 15 chữ số trước
dấu thập phân và 4 chữ số sau dấu thập phân.
- Date: kiểu dữ liệu ngày tháng.
- Byte: kiểu byte có thể lưu giữ các số nguyên từ 0 đến 255.
- Boolean: đây là kiểu logic với các giá trị True/False.
- Variant: kiểu này được thiết kế để lưu mọi dữ liệu khác nhau của Visual
Basic.
2.5 Các toán tử:
2.5.1 Các toán tử tính toán
Các toán
tử
Ý nghĩa Ví dụ
+ Có thể dùng để cộng hai toán hạng
hoặc hai chuỗi với nhau.
X=y+1
A=”A”+”B”
- trừ 2 số hạng X=y-1
* Nhân 2 số hạng X=y*2
/ Chia, trả về kiểu số thực Y=4/2
 Chia lấy nguyên X=32(x=1)
Mod Chia lấy dư X=7 mod 4 (x=3)
^ Lấy luỹ thừa X=y^3 (X=y3
)
2.5.2 Các toán tử so sánh:
Toán tử Ý nghĩa
> So sánh xem số thứ nhất có lớn hơn số thứ 2 không
< So sánh xem số thứ nhất có nhỏ hơn số thứ 2 không.
= So sánh số thứ nhất có bằng số thứ 2 không.
<> So sánh số thứ nhất có khác số thứ 2 không.
>= So sánh số thứ nhất có lớn hơn hay bằng số thứ 2 không
<= So sánh số thứ nhất có nhỏ hơn hay bằng số thứ 2 không
2.5.3 Các toán tử Boolean
Toán tử Ý nghĩa
And Chỉ nhận giá trị True nếu cả 2 số hạng đều là True
Or Chỉ nhận giá trị False nếu cả 2 số hạng đều là False
Not Phủ định giá trị của số hạng
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 11
2.6 Cấu trúc điều khiển
2.6.1 Các cấu trúc chọn:
2.6.1.1 Cấu trúc If….Then…
Dạng 1: If <Biểu thức logic> then < lệnh> End If
Khi gặp một điều lệnh If…..then, Visual Basic sẽ kiểm tra <Biểu thức
logic>, nếu là True thì máy sẽ thực hiện <lệnh> nếu kêt quả là False thì
máy sẽ bỏ qua lệnh và thực hiện những lệnh sau End If.
Dạng 2: If <Biểu thức logic> then <lệnh 1> else <lệnh 2>
Khi gặp lệnh này, nếu <Biểu thức logic> lấy giá trị True thì thực hiện < lệnh
1> bỏ qua <lệnh 2>, còn nếu <Biểu thức logic> lấy giá trị False thì bỏ qua
<lệnh 1> và thực hiện <lệnh 2>.
Nhiều khi bạn phải thực hiện nhiều lệnh ứng với điều kiện là True hay
False. Để làm được điều đó, ta sử dụng dạng khác của cấu trúc If
…..then, có dạng tổng quát như sau:
If <Biểu thức điều kiện> then
<Các câu lệnh thực hiện>
else
<Các câu lệnh thực hiện>
end if
2.6.1.2 Cấu trúc Select Case:
Cú pháp:
Select case <Biến hay biểu thưc>
Case <giá trị 1>
<Các câu lệnh>
…………………
Case <giá trị 2>
……………..
Case else
<Các câu lện>
End Select
2.6.2 Cấu trúc lặp
2.6.2.1 Cấu trúc lặp có điều kiện
Cú pháp 1:
While < Biểu thức điều kiện>
<Các câu lệnh>
Wend
Cú pháp 2:
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 12
Do
<Các câu lệnh>
While <Biểu thức điều kiện>
<Các câu lệnh> được thực hiện lặp đi lặp lại nếu <Biểu thức điều kiện>
vẫn nhận giá trị True. Do đó, để thoát khỏi vòng lặp thì trong <Các câu
lệnh phải có lệnh thay đổi gia trị của <Biểu thức điều kiện>. Trong cú pháp
1, thì <Biều thức điều kiện> được xét trước khi thực hiện các câu lệnh,
còn trong cú pháp 2 thì các câu lệnh được thực hiện trước khi xét đến
<Biểu thức điều kiện>.
2.6.2.2 Cấu trúc For …Next
Cú pháp:
For <biến> = <giá trị đầu> to <giá trị cuối> [Step <bước nhẩy>]
<Các câu lệnh>
Next <biến>
Đây là lệnh lặp biết trước số lần lặp. Khi gặp cấu trúc lệnh này, Visual
Basic sẽ gán giá trị <biến> cho <giá trị đầu>, thực hiện <Các câu lệnh>, rồi
tăng <biến> lên một giá trị tuỳ theo <bước nhẩy>. Vòng lặp này sẽ kết thúc
khi <biến> có giá trị lớn hơn <giá trị cuối>
2.2.1 Cấu trúc For Each….Next
For Each <phần tử> In <nhóm>
<Khối lệnh>
Next <phần tử>
Khi gặp cấu trúc này, Visual Basic sẽ lặp lại <Khối lệnh> cho từng phần tử
của mảng, hay các điều khiển…Người ta thường dùng cấu trúc này để
duyệt nhiều đối tượng điều khiển.
2.7 Thủ tục
Trong Visual Basic, một thủ tục mà trước khi ta muốn sử dụng nó thì ta
phải định nghĩa nó và ta phải dùng từ khoá “Sub” để khai báo nó.
Private/Public Sub <Tên thủ tục>
<Các câu lệnh>
End Sub <phần tử>
Nếu dùng từ khoá Public, thủ tục có thể được dùng trong bất kì Form nào
trong chương trình.
Nếu ta khai báo bằng từ khoá Private thì thủ tục chỉ có thể được dùng
được trong Form,module chứa nó mà thôi.
Giá trị được truyền cho thủ tục thông qua tham số. Một thủ tục có thể có
hoặc không có tham số. Khi gọi một thủ tục có tham số, ta phải truyền giá
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 13
trị cho tham số của thủ tục đó. Trong Visual Basic, có 2 cách để truyền
thám số : By Ref ( truyền tham chiếu) và By Val ( truyền tham trị ).
Private/Public Sub <Tên thủ tục> (<Tham số1> as <Kiểu>, <Tham số 2>
as <Kiểu 2>, v.v…)
<Các câu lệnh>
End Sub
2.8 Hiển thị và nhận thông tin
Ta sử dụng các hộp đối thoại để hiển thị thông tin cho người dùng hoặc
nhận thông tin. Trong Visual Basic có 4 hộp thoại, đó là:
2.8.1 Thông điệp: (MesageBox)
Là một hộp thoại đơn giản nhất, gồm 2 loại:
- Chỉ cung cấp thông tin
- Tương tác với người sử dụng.
2.8.2 Hộp nhập (InputBox)
InputBox dùng để nhập thông tin từ người dùng, nó bao gồm một dòng
thông báo, hộp soạn thảo và 2 nút “OK” và “Cancel”. Nó có mặt hạn chế là
chỉ cho người sử dụng nhập rất ít thông tin.
2.8.3 Các hộp thoại thông dụng
Bởi hộp thoại này xuất hiện mọi nơi, nên thay vì phải viết chương trình
nhiều lần, Windows chứa chúng trong cùng một DLL, Comdlg32.dll hay
Comdlg.ocx
Có 6 hộp thoại:
- Mở tập tin (File Open)
- Lưu tập tin (File save).
- Chọn mầu (Color).
- Chọn phông (Font).
- Trợ giúp (Help).
- In ấn (Print).
2.8.4 Hộp thoại hiệu chỉnh (Custom Dialog).
Đây là loại hộp đối thoại do người lập trình định nghĩa để tương thích với
yêu cầu nhận thông tin của người sử dụng. Nó có ưu điểm là ta có thể
thiết kế theo ý thích. Trở ngại của nó là khi thi hành từng biểu mẫu thì sẽ
sử dụng tài nguyên hệ thống như bộ nhớ, thời gian CPU. Nếu dùng nhiều
hộp thoại hiệu chỉnh trong ứng dụng có thể mất tài nguyên hệ thống và dễ
bị treo máy.
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 14
Phần II: Phần mềm Quản lý tài sản cố định
1 Mục đích và nhu cầu thực tế của phần mềm
Việc quản lý tài sản cố định đang sử dụng trong các cơ quan hành chính
là một hoạt động quan trọng trong các hoạt động của nhà nước. Chính vì
vậy, hàng năm, nhà nước ta đều tiến hành công việc kiểm kê các tài sản
này, để nắm được số lượng, chất lượng, hiện trạng sử dụng. Từ đó đưa
ra các số liệu thống kê nhằm sử dụng tài sản cố định một cách hiệu quả,
giảm thiểu các chi phí, thất thoát.
Nếu như thực hiện công việc này theo cách cổ điển bằng giấy tờ, sổ sách
thì sẽ cần đến rất nhiều nhân lực, vật lực cho việc nhập số liệu, tính toán,
lưu giữ chứng từ. Và cho dù có đầy đủ nhân lực, vật lực, thì công việc trên
sẽ tiêu tốn một thời gian rất lớn. Khi có nhu cầu tìm kiếm, thống kê, ta
không thể tìm kiếm nhanh chóng trong một đống giấy tờ. Trong khi đấy, ta
vẫn không đảm bảo là tránh được các sai sót.
Vì vậy, việc áp dụng công nghệ thông tin vào công việc trên là điều tất
yếu. Khi phần mềm “Quản lý tài sản cố định ra đời” sẽ khắc phục được
các nhược điểm của cách làm việc cổ điển. Đó là:
- Giảm thiểu nhân lực, vật lực, thời gian cho việc thống kê, quản lý tài
sản.
- Tránh được các sai sót do con người gây ra.
- Đưa ra các số liệu tìm kiếm, thống kê trong thời gian nhanh nhất.
2 Các chức năng chính của Phần mềm Quản lý TSCĐ
Phần mềm có các chức năng chính sau:
- Quản lý quyền truy cập.
- Quản lý các đơn vị hành chính. (về mặt tài sản)
- Quản lý các tài sản cố định.
- Quản lý các giao dịch.
- Tìm kiếm, thống kê.
- In báo cáo theo mẫu của Bộ tài chính
Sơ đồ chức năng:
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 15
2.1 Quản lý quyền truy cập.
Vì chương trình Quản lý TSCĐ phục vụ cho việc quản lý, thống kê tài sản
cố định do các cơ quan, đơn vị nhà nước sử dụng, nên bảo mật dữ liệu là
một công tác vô cùng quan trọng. Сhức năng quản lý quyền truy cập của
những người được phép sử dụng chương trình có thể, cho phép, hạn chế,
hoặc không cho phép sử dụng các chức năng của chương trình. Ta có thể
chia những người được phép sử dụng chương trình thành 3 nhóm chính:
người quản trị, người sử dụng cấp cao và người sử dụng thông thường.
 Người sử dụng thông thường: là nhóm người có quyền thấp nhất.
Những người thuộc nhóm này chỉ có quyền được xem các dữ liệu của
chương trình.
 Người sử dụng cấp cao: là nhóm người có quyền như người sử dụng
thông thường nhưng được phép nhập, chỉnh sửa dữ liệu.
 Người quản trị: Đây là nhóm người có quyền cao nhất. Ngoài các
quyền của nhóm người sử dụng cấp cao, nhóm này còn được phép
quản lý các nhóm người khác. (Như được phép thêm, xoá, sửa chữa
dữ liệu của các người dùng.)
2.2 Quản lý đơn vị hành chính
Các đơn vị hành chính ở đây chính là các đơn vị đang quản lý, sử dụng
các tài sản cố định của nhà nước. Việc quản lý này được tiến hành theo
nghành dọc. Chức năng này cho phép nắm được các thông tin của từng
đơn vị, như tên, địa chỉ, số điện thoại… của tưng đơn vị
Các chức năng
QL Quyền truy cập QL Đơn vị hành chính
QL Tài sản cố định QL Giao dịch
Tìm kiếm, thống kê In Báo cáo
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 16
2.3 Quản lý Tài sản cố định
Đây là chức năng chính của chương trình. Chức năng này có liên quan
trực tiếp đến chức năng trên. Bởi vì, chúng ta quản lý tài sản theo từng
đơn vị. Để dễ dàng cho việc quản lý, nhà nước đã quy định chia tài sản cố
định thành 7 loại chính: Đất đai, nhà cửa, vật kiến trúc, phương tiện vận
tải, máy móc thiết bị, các tài sản cố định khác. Vì đặc điểm riêng, ta có thể
phân chia tài sản cố định ra thành tài sản là đất và tài sản không là đất.
Chức năng này cho phép nhập mới, chỉnh sửa một cách chi tiết về các tài
sản cố định. Giúp cho người quản lý nắm được chi tiêt các đặc điểm của
từng tài sản, như: Tên, giá trị, thông số kỹ thuật…Trong chức năng này,
chương trình cho phép tính toán hao mòn của các tài sản cố định.
2.4 Quản lý Giao dịch
Chức năng Quản lý giao dịch cho phép ta quản lý được việc mua, bán các
tài sản giữa các đơn vị hành chính với nhau cũng như giữa các đơn vị
hành chính và các đơn vị, công ty khác. Cho phép ta nắm được các tài
sản thanh lý, huỷ…
2.5 Tìm kiếm, thống kê
Đây là chức năng trợ giúp người quản lý chương trình có thể tìm kiếm các
tài sản, các đơn vị có trong chương trình. Ngoài ra, nó còn cho phép đưa
ra các số liệu thống kê theo yêu cầu. Với chức năng này, ta có thể có cái
nhìn từ tông thể đến chi tiết về các tài sản cố định của từng đơn vị cũng
như từng loại tài sản cố định. Từ đó nắm được số lượng, chất lượng, thực
trạng của các tài sản.
2.6 In báo cáo theo mẫu của Bộ Tài Chính.
Chức năng này cho phép in ra các báo cáo theo mẫu của Bộ Tài Chính.
3 Cơ sở dữ liệu
Mô hình quan hệ trong cơ sở dữ liệu
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 17
3.1 Bảng tblDonvi: Lưu giữ thông tin về các đơn vị.
3.2 Bảng tblDonviNgoai
3.3 Bảng tblHopdong
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 18
3.4 Bảng tblHopdongBenA
3.5 Bảng tblHopdongBenB
3.6 Bảng tblHopdongMaDVN
3.7 Bảng tblLoaiTS_Detail
3.8 Bảng tblLoaiTS_Master
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 19
3.9 Bảng tblNhom
3.10 Bảng tblPhieu
3.11 Bảng tblSe_Group
3.12 Bảng tblTongHopDat_Detail
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 20
3.13 Bảng tblTongHopDat_Master
3.14 Bảng tblTongHopTSCD_KLD_Detail
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 21
3.15 Bảng tblTongHopTSCD_KLD_Master
3.16 Bảng tblTonghopTSCD_KLD_Detail2
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 22
Phần III: Mã nguồn
Sau đây là một số Form và Modul quan trọng trong chương trình.
1 Một số Form chính
1.1 Form: MDIForm
Đây là giao diện chính của chương trình:
Public BExit As Boolean
Private Sub MDIForm_Load()
Path = App.Path & "csdl.mdb"
Me.Icon = LoadResPicture(1, vbResIcon)
BExit = False
Skin = 0
MaDV = "H0000"
helppath = App.Path & "helphelp.chm"
MDIload
Init_icon
Set_Icon
Set_Panel
Set_Code
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 23
Set_Font
End Sub
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then
Call mnuThoat_Click
Cancel = Not BExit
End If
End Sub
Private Sub mnuAbout_Click()
frmAbout.Show
End Sub
Private Sub mnuAdmin_Click()
frmAdmin.Show
End Sub
Private Sub mnuBC1A_Click()
Report3
mnuTH3B.Checked = False
mnuBC1B.Checked = False
mnuBC2.Checked = False
mnuBC1A.Checked = True
mnuTH4.Checked = False
mnuTH3A.Checked = False
End Sub
Private Sub mnuBC1B_Click()
report4
mnuTH3B.Checked = False
mnuBC1B.Checked = True
mnuBC2.Checked = False
mnuBC1A.Checked = False
mnuTH4.Checked = False
mnuTH3A.Checked = False
End Sub
Private Sub mnuBC2_Click()
Report1
mnuTH3B.Checked = False
mnuBC1B.Checked = False
mnuBC2.Checked = True
mnuBC1A.Checked = False
mnuTH4.Checked = False
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 24
mnuTH3A.Checked = False
End Sub
Private Sub mnuChonDV_Click()
'Call CloseActiveForm("frmChonDV")
frmChonDV.Show
End Sub
Private Sub mnuDat_Click()
'Call CloseActiveForm("frmNhapDS")
frmNhapDS.Show
frmNhapDS.SSTab1.Tab = 0
End Sub
Private Sub mnuDonvi_Click()
'Call CloseActiveForm("frmNhapDV")
frmDonVi.Show
End Sub
Private Sub mnuFont_Click()
Dim f As Form
Dim a As Control
' Set Cancel to True.
Dialog.CancelError = True
On Error GoTo ErrHandler
' Set the Flags property.
Dialog.Flags = cdlCFBoth Or cdlCFEffects
' Display the Font dialog box.
Dialog.ShowFont
If frmMDI.Dialog.FontSize > 14 Then frmMDI.Dialog.FontSize = 14
If frmMDI.Dialog.FontName <> "" Then
Default.Name = frmMDI.Dialog.FontName
Default.Bold = frmMDI.Dialog.FontBold
Default.Italic = frmMDI.Dialog.FontItalic
Default.Size = frmMDI.Dialog.FontSize
End If
For Each f In Forms
If f.Name <> "frmMDI" Then
For Each a In f.Controls
Set_Child_font f, a
Next
End If
Next
ErrHandler:
' User pressed Cancel button.
Resume Next
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 25
End Sub
Private Sub mnuGiaodich_Click()
'Call CloseActiveForm("frmGiaodich")
frmGiaoDich.Show
End Sub
Private Sub mnuKK1_Click()
Report1
End Sub
Private Sub mnuHaomon_Click()
frmHaoMon.Show
End Sub
Private Sub mnuHuongDan_Click()
HH_DISPLAY_Click
HH_HELP_Click
End Sub
Private Sub mnuKLD_Click()
'Call CloseActiveForm("frmNhapDS")
frmNhapDS.Show
frmNhapDS.SSTab1.Tab = 1
End Sub
Private Sub mnuLoai_Click()
'Call CloseActiveForm("frmNhapTS")
frmChonTS.Show
End Sub
Private Sub mnuLogOn_Click()
frmLogin.Show vbModal
End Sub
Private Sub mnuLogOut_Click()
'CloseActiveForm Me.Name
GroupCode = 0
Set_Menu
End Sub
Private Sub SkinChange()
Dim f As Form
For Each f In Forms
If f.Name <> "frmMDI" Then Set_Skin f
Next
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 26
Private Sub mnuskin1_Click()
mnuskin1.Checked = True
mnuSkin2.Checked = False
mnuSkin3.Checked = False
Skin = 0
SkinChange
End Sub
Private Sub mnuSkin2_Click()
mnuSkin2.Checked = True
mnuskin1.Checked = False
mnuSkin3.Checked = False
Skin = 1
SkinChange
End Sub
Private Sub mnuSkin3_Click()
mnuSkin3.Checked = True
mnuSkin2.Checked = False
mnuskin1.Checked = False
Skin = 2
SkinChange
End Sub
Private Sub mnuStatus_Click()
StatusBar.Visible = Not StatusBar.Visible
mnuStatus.Checked = Not mnuStatus.Checked
End Sub
Private Sub mnThanhmenu_Click()
Dim ctl As Control
On Error GoTo a
If mnuThanhmenu.Checked Then
For Each ctl In Me.Controls
If TypeOf ctl Is Menu Then
ctl.Visible = False
End If
Next
mnuThanhmenu.Checked = False
Else
For Each ctl In Me.Controls
If TypeOf ctl Is Menu Then
ctl.Visible = True
End If
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 27
Next
mnuThanhmenu.Checked = True
End If
a: Resume Next
End Sub
Private Sub mnuTH3A_Click()
Report6
mnuTH3B.Checked = False
mnuBC1B.Checked = False
mnuBC2.Checked = False
mnuBC1A.Checked = False
mnuTH4.Checked = False
mnuTH3A.Checked = True
End Sub
Private Sub mnuTH3B_Click()
Report5
mnuTH3B.Checked = True
mnuBC1B.Checked = False
mnuBC2.Checked = False
mnuBC1A.Checked = False
mnuTH4.Checked = False
mnuTH3A.Checked = False
End Sub
Private Sub mnuTH4_Click()
Report2
mnuTH3B.Checked = False
mnuBC1B.Checked = False
mnuBC2.Checked = False
mnuBC1A.Checked = False
mnuTH4.Checked = True
mnuTH3A.Checked = False
End Sub
Private Sub mnuThoat_Click()
If MMsgbox("B¹n thùc sù muèn tho¸t khái ch-¬ng tr×nh ?", vbYesNo, "Tho¸t
ch-¬ng tr×nh !!!") = vbYes Then
BExit = True
CloseActiveForm ("frmMDI")
Unload Me
End If
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 28
Private Sub mnuThongke_Click()
frmThongKeDV.Show
End Sub
Private Sub mnuTimDV_Click()
'Call CloseActiveForm("frmTimkiem")
frmTimKiem.Show
frmTimKiem.SSTab1.Tab = 0
End Sub
Private Sub mnuTimGD_Click()
frmTimKiemGD.Show
End Sub
Private Sub mnuTimPhieu_Click()
'Call CloseActiveForm("frmTimkiem")
frmTimKiem.Show
frmTimKiem.SSTab1.Tab = 2
End Sub
Private Sub mnuTimTS_Click()
'Call CloseActiveForm("frmTimkiem")
frmTimKiem.Show
frmTimKiem.SSTab1.Tab = 1
End Sub
Private Sub mnuTKBD_Click()
'Call CloseActiveForm("frmThongKeKQ")
frmDothi.Show
End Sub
Private Sub mnuTKSL_Click()
'Call CloseActiveForm("frmThongKeKQ")
frmThongKeKQ.Show
'frmThongKeKQ.SSTab1.Tab = 0
End Sub
Private Sub mnuToolbar_Click()
mnuToolbar.Checked = Not mnuToolbar.Checked
Toolbar.Visible = Not Toolbar.Visible
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 29
Public Sub amnuSep10_Click(Index As Integer)
On Error GoTo a
Dim i As Integer
Dim f As Form
If mnuSep10.UBound > 0 Then
For i = 1 To mnuSep10.UBound
If mnuSep10(i).Checked And i <> Index Then disp(Index) = i
mnuSep10(i).Checked = False
Next
mnuSep10(Index).Checked = True
For Each f In Forms
If f.Caption = mnuSep10(Index).Caption And f.Caption <> "" Then
f.Show
f.SetFocus
End If
Next
End If
a: Resume Next
End Sub
Private Sub mnuTreeView_Click()
'Call CloseActiveForm("frmTreeView")
frmTreeView.Show
End Sub
Private Sub amnuWin_Click(Index As Integer)
Dim i As Integer
Dim f As Form
For i = 1 To 4
mnuWin(i).Checked = False
Next
Select Case Index
Case 4: ' Center
For i = 1 To mnuSep10.UBound
For Each f In Forms
If f.Caption = mnuSep10(i).Caption Then Child_Center f
Next
Next
End Select
mnuWin(Index).Checked = True
End Sub
Private Sub Timer1_Timer()
Dim mnu As Control
On Error GoTo Ehandle
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 30
If none <> 0 Then
frmLogin.Show vbModal
Else
For Each mnu In frmMDI.Controls
If TypeOf mnu Is Menu Then mnu.Visible = False
Next
MMsgbox "H·y t¹o ng-êi sö dông míi ®Ó ®¨ng nhËp hÖ thèng", vbOKOnly,
"B¹n lµ ng-êi ®Çu tiªn sö dông ch-¬ng tr×nh"
frmAddUser.Show
End If
Timer1.Interval = 0
Ehandle:
Resume Next
End Sub
Private Sub Timer2_Timer()
HienDV
End Sub
Private Sub Toolbar_ButtonClick(ByVal Button As MSComctlLib.Button)
Dim i As Integer
If Button.Value = tbrUnpressed Then
For i = 1 To Me.Toolbar.buttons.Count
Me.Toolbar.buttons(i).Value = tbrUnpressed
Next
Select Case Button.key
Case "ChonDV": mnuChonDV_Click
Case "Thongke": mnuThongke_Click
Case "Timkiem": mnuTimDV_Click
Case "Baocao": frmBaocao.Show
Case "Taisan": mnuDat_Click
End Select
'Button.Value = tbrPressed
End If
End Sub
1.2 Form : frmTreeview
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 31
Option Explicit
Dim NodX As Node
Dim Li As ListItem
Dim rs As ADODB.Recordset
Dim root As String
Dim code As String
Dim nname As String
Dim DV As String
Dim Ma As String
Dim rsDat As ADODB.Recordset
Dim rsKDat As ADODB.Recordset
Dim qryDat As String
Dim qryKDat As String
Dim i As Integer
Private Sub Command1_Click()
Child_Unload Me
End Sub
Private Sub Form_Load()
Set rs = New ADODB.Recordset
rs.Open "SELECT tblDonVi.*, tblDonVi.CapDV From tblDonVi ORDER BY
tblDonVi.CapDV;", cnn, adOpenDynamic, adLockOptimistic
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 32
qryDat = "SELECT tblTongHopDat_Master.*, tblLoaiTS_Detail.TenTS,
tblLoaiTS_master.TenloaiTS, tblDonVi.TenDV " _
& "FROM ((tblLoaiTS_Detail INNER JOIN tblLoaiTS_master ON
tblLoaiTS_Detail.MaloaiTS = tblLoaiTS_master.MaloaiTS) INNER JOIN
tblTongHopDat_Master ON tblLoaiTS_Detail.MaTS =
tblTongHopDat_Master.MaTS) INNER JOIN tblDonVi ON
tblTongHopDat_Master.MaDV = tblDonVi.MaDV;"
qryKDat = "SELECT tblLoaiTS_Detail.TenTS, tblLoaiTS_master.TenloaiTS,
tblDonVi.TenDV, tblTongHopTSCD_KLD_Master.* " _
& "FROM (tblLoaiTS_Detail INNER JOIN tblLoaiTS_master ON
tblLoaiTS_Detail.MaloaiTS = tblLoaiTS_master.MaloaiTS) INNER JOIN (tblDonVi
INNER JOIN tblTongHopTSCD_KLD_Master ON tblDonVi.MaDV =
tblTongHopTSCD_KLD_Master.MaDV) ON tblLoaiTS_Detail.MaTS =
tblTongHopTSCD_KLD_Master.MaTS;"
Set rsDat = New ADODB.Recordset
rsDat.Open qryDat, cnn, adOpenDynamic, adLockOptimistic
Set rsKDat = New ADODB.Recordset
rsKDat.Open qryKDat, cnn, adOpenDynamic, adLockOptimistic
rs.MoveFirst
Set NodX = Tree.Nodes.Add(, , rs!MaDV, rs!TenDV)
rs.MoveNext
While Not rs.EOF
root = rs!DonViCT
code = rs!MaDV
nname = rs!TenDV
Set NodX = Tree.Nodes.Add(root, tvwChild, code, nname)
rs.MoveNext
Wend
Call MakeColumns
Child_Load Me
End Sub
Private Sub MakeColumns()
' Clear the ColumnHeaders collection.
List.ColumnHeaders.Clear
' Add four ColumnHeaders.
'List.ColumnHeaders.Add , , "STT", 550
List.ColumnHeaders.Add , , "M· TS", 1000
List.ColumnHeaders.Add , , "Tªn TS", 3000
List.ColumnHeaders.Add , , "Lo¹i TS", 2000
'List.ColumnHeaders.Add , , "Nhãm ", 2000
' Set the EventFlag variable so this doesn't get done again and again.
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 33
End Sub
Private Sub AddListItem(ByRef xItem As ListItem, ByRef xRec As
ADODB.Recordset, i As Integer)
' Add a ListItem setting its text, icon and small icon. Then
' add three ListSubItems setting the Key and Text of each.
Set xItem = List.ListItems.Add
xItem.Text = xRec!MaTS
'xItem.ListSubItems.Add key:="Ma TS", Text:=xRec!MaTS
xItem.ListSubItems.Add key:="Tªn TS", Text:=xRec!TenTS
xItem.ListSubItems.Add key:="Lo¹i TS", Text:=xRec!TenloaiTS
'xItem.ListSubItems.Add key:="Nhãm", Text:=xRec!Tennhom
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single,
Y As Single)
Mre Me
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then Child_Unload Me
End Sub
Private Sub List_ColumnClick(ByVal ColumnHeader As ColumnHeader)
If List.SortOrder = 0 Then List.SortOrder = 1 Else List.SortOrder = 0
List.SortKey = ColumnHeader.Index - 1
' Set Sorted to True to sort the list.
List.Sorted = True
End Sub
Private Sub Mybutton1_Click()
Command1_Click
End Sub
Private Sub Timer1_Timer()
If DV <> Tree.SelectedItem Then
i = 0
DV = Tree.SelectedItem
List.ListItems.Clear
If Not (rsDat.BOF And rsDat.EOF) Then rsDat.MoveFirst
If Not (rsKDat.BOF And rsKDat.EOF) Then rsKDat.MoveFirst
While Not rsDat.EOF
If rsDat!TenDV = DV Then
Ma = rsDat!MaDV
i = i + 1
AddListItem Li, rsDat, i
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 34
End If
rsDat.MoveNext
Wend
While Not rsKDat.EOF
If rsKDat!TenDV = DV Then
Ma = rsKDat!MaDV
i = i + 1
AddListItem Li, rsKDat, i
End If
rsKDat.MoveNext
Wend
End If
End Sub
Private Sub Tree_MouseDown(Button As Integer, Shift As Integer, x As Single, Y
As Single)
Dim Node As MSComctlLib.Node
If Button = 2 Then
Button = 1
frmPopUpMenu.SetDV DV, Ma
Me.PopupMenu frmPopUpMenu.mnuDonvi
End If
End Sub
1.3 Form: frmNhapDat
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 35
Dim sD As String
Dim rsPh As ADODB.Recordset
Dim rsDat As ADODB.Recordset
Dim rsDat0 As ADODB.Recordset
Dim AddFlag As Boolean
Dim rsDV As ADODB.Recordset
Dim rsTS As ADODB.Recordset
Dim rsNhom As ADODB.Recordset
Dim Dongia(100) As String
Dim MaNhom(100) As String
Dim nhom As String
Private Sub cboNhomDat_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub cboNhomDat_GotFocus()
CEmpty txtDiachi
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 36
If cboNhomDat.ListIndex = -1 Then cboNhomDat.ListIndex = 0
Hien " Chän nhãm ®Êt t-¬ng øng cho tµi s¶n ®Êt"
End Sub
Private Sub cmdGhiDL_Click()
If Dat = 1 Then
rsTS.AddNew
rsPh.AddNew
rsDat.AddNew
rsDat0.AddNew
End If
'rsPh!MaPhieu = txtMaphieu.Text
rsDat0!MaDV = MaDV
rsDat!diachits = txtDiachi.Text
rsPh!NgayLP = txtNgayLP.Text
rsPh!TenNLP = txtTenNLP.Text
rsDat!DientichKT = Val(txtDienTichTKT.Text)
rsDat!DientichTT = Val(txtDientichTTT.Text)
rsDat!GiatriTT = Val(txtGiaTriTT.Text)
rsDat!GiayCN = Val(txtGiayCN.Text)
rsDat!KoGiayCN = Val(txtKoGiayCN.Text)
rsDat!ChiphiKT = Val(txtChiphiKT.Text)
rsDat!Tang = Val(txtTang.Text)
rsDat!Giam = Val(txtGiam.Text)
rsDat!CSD = Val(txtCSD.Text)
rsDat!Thue = Val(txtThue.Text)
rsDat!Chia = Val(txtChia.Text)
rsDat!Xaydungnha = Val(txtXaydungnha.Text)
rsDat!Sudung = Val(txtSudung.Text)
rsDat!Dichvu = Val(txtDichvu.Text)
rsDat!MDC = Val(txtMDC.Text)
rsDat!SDMDK = Val(txtSDMDK.Text)
rsDat!GiatriCN = Val(txtGiatriCN.Text)
rsDat!GiatriCCN = Val(txtGiatriCCN.Text)
rsTS!TenTS = txtTenTS.Text
If Dat = 1 Then
CodeTS(1) = TangCode(CodeTS(1), 4)
CodeP = TangCode(CodeP, 5)
rsDat0!MaTS = CodeTS(1)
rsDat0.Update
rsTS!MaloaiTS = "001"
rsPh!Maphieu = CodeP
rsDat0!Maphieu = rsPh!Maphieu
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 37
rsTS!MaTS = rsDat0!MaTS
rsDat0.Update
End If
rsPh.Update
rsTS!MaNhom = MaNhom(cboNhomDat.ListIndex)
rsDat!STT = rsDat0!STT
rsDat.Update
rsTS.Update
cmdNhapMoi.Enabled = True
Mybutton3.Enabled = True
Mybutton3.Refresh
Dat = 0
Set_Code
End Sub
Private Sub cmdNhaplai_Click()
Dim c As Control
If Dat = 1 Then
For Each c In Me.Controls
If TypeOf c Is TextBox And c.Name <> txtTenDV And c.Name <>
txtMaphieu Then
c.Text = ""
End If
Next
End If
If Dat = 0 Then Form_Load
End Sub
Private Sub cmdNhapMoi_Click()
Dim c As Control
For Each c In Me.Controls
If TypeOf c Is TextBox And c.Name <> "txtTenDV" And c.Name <>
"txtMaphieu" Then
c.Text = ""
End If
Next
Dat = 1
Form_Load
If SSTab1.Tab = 1 Then SSTab1.Tab = 0
AddFlag = True
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 38
Private Sub cmdThoat_Click()
Child_Unload frmNhapDat
frmNhapDS.SSTab1.Tab = 0
frmNhapDS.Show
End Sub
Private Sub Form_Load()
Child_Load Me
Set rsPh = New ADODB.Recordset
rsPh.Open "Select * from tblPhieu", cnn, adOpenDynamic, adLockOptimistic
Set rsDat0 = New ADODB.Recordset
rsDat0.Open "select * from tblTongHopDat_Master", cnn, adOpenDynamic,
adLockOptimistic
Set rsDat = New ADODB.Recordset
rsDat.Open "Select * from tblTongHopDat_Detail", cnn, adOpenDynamic,
adLockOptimistic
Set rsTS = New ADODB.Recordset
rsTS.Open "tblLoaiTS_Detail", cnn, adOpenDynamic, adLockOptimistic
Set rsDV = New ADODB.Recordset
rsDV.Open "tblDonVi", cnn, adOpenDynamic, adLockOptimistic
Set rsNhom = New ADODB.Recordset
rsNhom.Open "Select * from tblNhom", cnn, adOpenDynamic, adLockOptimistic
If Dat = 0 Then
rsDat0.MoveFirst
rsDat.MoveFirst
While rsDat0!MaTS <> MaTS
rsDat.MoveNext
rsDat0.MoveNext
Wend
rsTS.MoveFirst
While rsTS!MaTS <> MaTS
rsTS.MoveNext
Wend
Set rsPh = New ADODB.Recordset
rsPh.Open "Select * from tblPhieu where tblPhieu!MaPhieu ='" &
rsDat0!Maphieu & "' ;", cnn, adOpenDynamic, adLockOptimistic
Set rsNhom = New ADODB.Recordset
rsNhom.Open "Select * from tblNhom where tblNhom!Manhom ='" &
rsTS!MaNhom & "' ;", cnn, adOpenDynamic, adLockOptimistic
txtDiachi.Text = rsDat!diachits
txtNgayLP.Text = Format(rsPh!NgayLP, "dd/mm/yyyy")
txtTenNLP.Text = rsPh!TenNLP
txtDienTichTKT.Text = rsDat!DientichKT
txtDientichTTT.Text = rsDat!DientichTT
txtGiaTriTT.Text = rsDat!GiatriTT
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 39
txtGiayCN.Text = rsDat!GiayCN
txtKoGiayCN.Text = rsDat!KoGiayCN
txtChiphiKT.Text = rsDat!ChiphiKT
txtTang.Text = rsDat!Tang
txtGiam.Text = rsDat!Giam
txtCSD.Text = rsDat!CSD
txtXaydungnha.Text = rsDat!Xaydungnha
txtMDC.Text = rsDat!MDC
txtSDMDK.Text = rsDat!SDMDK
txtDichvu.Text = rsDat!Dichvu
txtThue.Text = rsDat!Thue
txtChia.Text = rsDat!Chia
txtGiatriCN.Text = rsDat!GiatriCN
txtGiatriCCN.Text = rsDat!GiatriCCN
txtTenTS = rsTS!TenTS
txtSudung.Text = rsDat!Sudung
txtMaphieu.Text = rsPh!Maphieu
txtDongia.Text = rsNhom!Dongia
nhom = rsNhom!MaNhom
End If
Set rsNhom = New ADODB.Recordset
rsNhom.Open "Select * from tblNhom where tblnhom!MaloaiTS = '001' ;", cnn,
adOpenDynamic, adLockOptimistic
With rsDV
If .EOF And .BOF Then
.AddNew
Else
.MoveFirst
While .EOF = False
If rsDV!MaDV = MaDV Then
txtTenDV.Text = rsDV!TenDV
End If
.MoveNext
Wend
End If
End With
If Dat = 1 Then txtMaphieu = TangCode(CodeP, 5)
Dim i As Integer
cboNhomDat.Clear
i = 0
With rsNhom
If Not (.EOF And .BOF) Then
.MoveFirst
While .EOF = False
cboNhomDat.AddItem !tennhom
Dongia(i) = !Dongia
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 40
MaNhom(i) = !MaNhom
i = i + 1
.MoveNext
Wend
End If
End With
If cboNhomDat.ListCount > 0 Then
For i = 0 To cboNhomDat.ListCount - 1
If MaNhom(i) = nhom Then cboNhomDat.ListIndex = i
Next
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single,
Y As Single)
Mre Me
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then cmdThoat_Click
End Sub
Private Sub Mybutton1_Click()
cmdGhiDL_Click
End Sub
Private Sub Mybutton2_Click()
cmdNhaplai_Click
End Sub
Private Sub Mybutton3_Click()
cmdNhapMoi_Click
End Sub
Private Sub Mybutton4_Click()
cmdThoat_Click
End Sub
Private Sub Text3_Change()
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 41
Private Sub Timer1_Timer()
'nut ghi du lieu
On Error Resume Next
Dim c As Control
Dim ok As Boolean
ok = True
For Each c In Me.Controls
If TypeOf c Is TextBox Or TypeOf c Is ComboBox Then
If c.Text = "" Then ok = False
End If
Next
If ok Then
cmdGhiDL.Enabled = True
Else
cmdGhiDL.Enabled = False
End If
' tinh don gia cua cac loai gia tri
If cboNhomDat.ListIndex <> -1 Then
txtDongia = Dongia(cboNhomDat.ListIndex)
If txtDientichTTT <> "" Then
txtGiaTriTT.Text = Val(txtDientichTTT.Text) * Val(txtDongia.Text)
Else
txtGiaTriTT.Text = ""
End If
If txtDienTichTKT <> "" Then
txtChiphiKT.Text = Val(txtDienTichTKT.Text) * Val(txtDongia.Text)
Else
txtChiphiKT.Text = ""
End If
If txtGiayCN <> "" Then
txtGiatriCN = Val(txtGiayCN.Text) * Val(txtDongia.Text)
Else
txtGiatriCN.Text = ""
End If
If txtKoGiayCN <> "" Then
txtGiatriCCN.Text = Val(txtKoGiayCN.Text) * Val(txtDongia.Text)
Else
txtGiatriCCN.Text = ""
End If
End If
'tinh dien tich xay dung nha
If txtXaydungnha.Text <> "" Then
txtSudung.Text = Val(txtDientichTTT.Text) - Val(txtXaydungnha.Text)
Else
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 42
txtSudung.Text = ""
End If
'tinh dien tich tang giam
If txtDienTichTKT.Text <> "" Then
Dim i As Variant
i = Val(txtDientichTTT.Text) - Val(txtDienTichTKT.Text)
If i > 0 Then
txtTang.Text = i
txtGiam.Text = 0
ElseIf i < 0 Then
txtGiam.Text = -i
txtTang.Text = 0
ElseIf i = 0 Then
txtTang.Text = i
txtGiam.Text = i
End If
End If
'xet dieu kien cua txtdientichttt
If Val(txtDientichTTT.Text) < Val(txtXaydungnha.Text) Then
txtDientichTTT.Text = ""
txtDientichTTT.SetFocus
txtXaydungnha.Text = ""
End If
If txtDientichTTT.Text = "" Then
txtXaydungnha.Text = ""
txtSudung.Text = ""
txtTang.Text = ""
txtGiam.Text = ""
txtMDC.Text = ""
txtGiayCN.Text = ""
txtSDMDK.Text = ""
'xet dieu kien dien tich txtSDMDK
If Dat = 0 Then
If Val(txtSDMDK.Text) - Val(txtDichvu.Text) < Val(txtThue.Text) Then
txtDichvu.Text = ""
txtDichvu.SetFocus
txtThue.Text = ""
txtChia.Text = ""
End If
End If
End If
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 43
' xet dieu kien txtMDC
If Val(txtMDC.Text) > Val(txtDientichTTT.Text) Then
txtMDC.SetFocus
txtMDC.Text = ""
txtSDMDK.Text = ""
txtDichvu.Text = ""
txtChia.Text = ""
txtThue.Text = ""
txtCSD.Text = ""
End If
If txtMDC.Text = "" Then
txtSDMDK.Text = ""
txtDichvu.Text = ""
txtThue.Text = ""
txtChia.Text = ""
txtCSD.Text = ""
End If
' tinh dien tich dich vu, thue, chia
If txtDichvu.Text <> "" Then
If Val(txtDichvu.Text) = Val(txtSDMDK.Text) Then
txtThue.Text = 0
txtThue.Enabled = False
txtChia.Text = 0
End If
End If
If txtThue <> "" Then
If txtThue.Text < Val(txtSDMDK.Text) - Val(txtDichvu.Text) Then
txtChia.Text = Val(txtSDMDK.Text) - Val(txtDichvu.Text) -
Val(txtThue.Text)
End If
If txtThue.Text > Val(txtSDMDK.Text) - Val(txtDichvu.Text) Then
txtThue.SetFocus
txtThue.Text = ""
End If
If Val(txtThue.Text) + Val(txtDichvu.Text) = Val(txtSDMDK.Text) Then
txtChia.Text = 0
End If
End If
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 44
End Sub
Private Sub txtChia_GotFocus()
CEmpty txtMDC
End Sub
Private Sub txtChia_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtChiphiKT_Click()
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End Sub
Private Sub txtChiphiKT_GotFocus()
CEmpty txtDienTichTKT
End Sub
Private Sub txtChiphiKT_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtCSD_GotFocus()
CEmpty txtMDC
End Sub
Private Sub txtCSD_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtDiachi_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 45
Private Sub txtDiaChi_GotFocus()
CEmpty txtTenTS
Hien " NhËp ®Þa chØ khu ®Êt vµo ®©y"
End Sub
Private Sub txtDichvu_Change()
If txtDichvu.Text = "" Then
txtChia.Text = ""
txtThue.Text = ""
End If
If Val(txtDichvu.Text) > Val(txtSDMDK.Text) Then
txtDichvu.SetFocus
txtDichvu.Text = ""
txtThue.Text = ""
End If
txtChia.Enabled = True
txtThue.Enabled = True
End Sub
Private Sub txtDichvu_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub txtDichvu_GotFocus()
CEmpty txtSDMDK
Hien " NhËp diÖn tÝch ®Êt ®ang dïng cho s¶n xuÊt vµ kinh doanh ( chØ nhËp
sè ) ko lín h¬n sö dông môc ®Ých kh¸c "
End Sub
Private Sub txtDientichCSD_Click()
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End Sub
Private Sub txtDientichCSD_GotFocus()
CEmpty txtNgayLP
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 46
Private Sub txtDientichCSD_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtDienTichTKT_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub txtDienTichTKT_GotFocus()
CEmpty txtGiaTriTT
Hien " NhËp diÖn tÝch theo sæ kÕ to¸n vµo ®©y ( chØ nhËp sè )"
End Sub
Private Sub txtDienTichTKT_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtDienTichTKT_LostFocus()
If SSTab1.Tab = 0 Then SSTab1.Tab = 1
End Sub
Private Sub txtDientichTTT_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub txtDientichTTT_GotFocus()
Hien " Nh¹p diÖn tÝch t¹i thêi ®iÓm kiÓm kª ( chØ nhËp sè ) "
txtSDMDK.Enabled = True
txtCSD.Enabled = True
CEmpty txtDongia
End Sub
Private Sub txtDientichTTT_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtdungsx_KeyPress(KeyAscii As Integer)
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 47
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtDongia_GotFocus()
CEmpty cboNhomDat
txtGiaTriTT.Enabled = True
End Sub
Private Sub txtGiam_Click()
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End Sub
Private Sub txtGiam_GotFocus()
CEmpty txtTang
End Sub
Private Sub txtGiam_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtGiamCD_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtGiatriCCN_GotFocus()
CEmpty txtKoGiayCN
End Sub
Private Sub txtGiatriCCN_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtGiatriCN_GotFocus()
CEmpty txtGiayCN
End Sub
Private Sub txtGiatriCN_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 48
Private Sub txtGiaTriTT_GotFocus()
CEmpty txtXaydungnha
End Sub
Private Sub txtGiatriTT_KeyPress(KeyAscii As Integer)
SubKeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtGiayCN_Change()
If txtGiayCN.Text <> "" Then
txtKoGiayCN.Text = Val(txtDientichTTT.Text) - Val(txtGiayCN.Text)
Else
txtKoGiayCN.Text = ""
End If
If Val(txtGiayCN.Text) > Val(txtDientichTTT.Text) Then
txtGiayCN.SetFocus
txtGiayCN.Text = ""
End If
End Sub
Private Sub txtGiayCN_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub txtGiayCN_GotFocus()
CEmpty txtCSD
Hien " NhËp diÖn tÝch ch-a cã giÊy chøng nhËn quyÒn sö dông ®Êt ( chØ
nhËp sè ) ko ®-îc lín h¬n tæng diÖn tÝch ®Êt "
End Sub
Private Sub txtGiayCN_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtKoGiayCN_GotFocus()
CEmpty txtGiatriCN
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 49
Private Sub txtKoGiayCN_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtMDC_Change()
txtSDMDK.Enabled = True
txtCSD.Enabled = True
If Val(txtMDC.Text) = Val(txtDientichTTT.Text) Then
txtSDMDK.Text = "0"
txtSDMDK.Enabled = False
txtCSD.Text = "0"
txtCSD.Enabled = False
txtDichvu.Enabled = False
txtChia.Enabled = False
txtThue.Enabled = False
End If
End Sub
Private Sub txtMDC_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub txtMDC_GotFocus()
Hien " NhËp diÖn tÝch sö dông cho môc ®Ých chÝnh ( chØ nhËp sè )"
CEmpty txtDongia
End Sub
Private Sub txtMDC_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtNgayLP_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 50
Private Sub txtNgayLP_GotFocus()
CEmpty txtTenNLP
Hien " B¹n cÇn nhËp ngµy vµo _/_/_/"
End Sub
Private Sub txtNgayLP_Validate(Cancel As Boolean)
If Not IsDate(txtNgayLP) Then
txtNgayLP.SetFocus
txtNgayLP.Text = ""
Cancel = True
ElseIf DateValue(txtNgayLP) > Now() Or DateValue(txtNgayLP) <
DateValue(Format("01/01/1998", "dd/mm/yyyy")) Then
txtNgayLP.SetFocus
txtNgayLP.Text = ""
Cancel = True
Else: txtNgayLP = Format(txtNgayLP, "dd/mm/yyyy")
End If
End Sub
Private Sub txtQuan_Click()
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End Sub
Private Sub txtQuan_GotFocus()
CEmpty txtDiachi
End Sub
Private Sub txtSDMDK_Change()
If Val(txtSDMDK.Text) = 0 Then
txtDichvu.Text = 0
txtThue.Text = 0
txtChia.Text = 0
End If
If txtSDMDK.Text <> "" Then
If Val(txtSDMDK.Text) = Val(txtDientichTTT.Text) - Val(txtMDC.Text) Then
txtCSD.Text = 0
txtCSD.Enabled = False
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 51
ElseIf Val(txtSDMDK.Text) < Val(txtDientichTTT.Text) - Val(txtMDC.Text) Then
txtCSD.Text = Val(txtDientichTTT.Text) - Val(txtMDC.Text) -
Val(txtSDMDK.Text)
txtCSD.Enabled = False
ElseIf Val(txtSDMDK.Text) > Val(txtDientichTTT.Text) - Val(txtMDC.Text) Then
txtSDMDK.SetFocus
txtSDMDK.Text = ""
txtThue.Text = ""
txtDichvu.Text = ""
txtChia.Text = ""
End If
Else
txtSDMDK.Text = ""
txtThue.Text = ""
txtDichvu.Text = ""
txtChia.Text = ""
txtCSD.Text = ""
End If
End Sub
Private Sub txtSDMDK_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub txtSDMDK_GotFocus()
Hien " NhËp diÖn tÝch sö dung cho môc ®Ých kh¸c ( chØ nhËp sè )"
txtCSD.Enabled = True
CEmpty txtMDC
txtChia.Enabled = True
End Sub
Private Sub txtSDMDK_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtSudung_Click()
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 52
Private Sub txtSudung_GotFocus()
CEmpty txtXaydungnha
Hien " NhËp diÖn mtÝch ®É x©y dùng c«ng tr×nh vËt kiÕn tróc( chØ nhËp
sè)"
End Sub
Private Sub txtSudung_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtTang_Click()
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End Sub
Private Sub txtTang_GotFocus()
CEmpty txtChiphiKT
End Sub
Private Sub txtTang_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtTenNLP_Change()
If txtTenNLP.Text <> "" Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub txtTenNLP_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub txtTenNLP_GotFocus()
Hien "B¹n cÇn nhËp lµ ch÷ vµo ®©y"
End Sub
Private Sub txtTenNLP_KeyPress(KeyAscii As Integer)
KeyAscii = Char_Check(KeyAscii)
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 53
End Sub
Private Sub txtTenTS_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub txtTenTS_GotFocus()
CEmpty txtNgayLP
Hien " NhËp tªn ®¬n vÞ vµo ®©y"
End Sub
Private Sub txtThue_Change()
If txtThue.Text = "" Then
txtChia.Text = ""
End If
If Val(txtThue.Text) > Val(txtSDMDK.Text) - Val(txtDichvu.Text) Then
txtThue.SetFocus
txtThue.Text = ""
txtChia.Text = ""
End If
End Sub
Private Sub txtThue_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub txtThue_GotFocus()
Hien " NhËp diÖn tÝch ®©ng dïng cho thuª ( chØ nhËp sè ) diÖn tÝch ko ®-îc
lín h¬n (sö dông cho môc ®Ých kh¸c - ®ang dïng cho s¶n xuÊt kinh doanh.)"
CEmpty txtSDMDK
txtChia.Enabled = True
End Sub
Private Sub txtThue_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 54
Private Sub txtXaydungnha_Change()
If Val(txtXaydungnha.Text) > Val(txtDientichTTT.Text) Then
txtXaydungnha.SetFocus
txtXaydungnha.Text = ""
txtSudung.Text = ""
End If
End Sub
Private Sub txtXaydungnha_Click()
If Dat = 0 Then
cmdNhaplai.Enabled = True
Mybutton2.Enabled = True
End If
End Sub
Private Sub txtXaydungnha_GotFocus()
Hien " NhËp diÖn tÝch ®· dïng ®Ó x©y dùng nhµ ( chØ nhËp sè ) ko ®-îc lín
h¬n tæng diÖn tÝch ®Êt "
txtSudung.Enabled = True
CEmpty txtDientichTTT
End Sub
Private Sub txtXaydungnha_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
1.4 Form : frmGiaoDich
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 55
Dim rsDVA As ADODB.Recordset
Dim rsDVB As ADODB.Recordset
Dim rsDVN As ADODB.Recordset
Dim rsTSD As ADODB.Recordset
Dim rsTSKD As ADODB.Recordset
Private rs As ADODB.Recordset
Public mo As Integer
Dim benA As String
Dim benB As String
Dim TS As String
Dim DVN As String
Const sql = "Select tblDonvi.MaDV, tblDonvi.TenDV from tblDonvi "
Dim sqlTSD As String
Dim sqlTSKD As String
Dim i As Integer
Dim CodeTS(100) As String
Dim bA(100) As String
Dim bB(100) As String
Dim a As Integer
Dim d As Integer
Dim soluong(100) As Integer
Private Sub cboBenA_GotFocus()
Dim i As Integer
Dim j As Integer
cboBenA.Clear
i = 0
Set rsDVA = New ADODB.Recordset
rsDVA.Open sql, cnn, adOpenDynamic, adLockBatchOptimistic
rsDVA.MoveFirst
While Not rsDVA.EOF
If rsDVA!TenDV <> benB Then
cboBenA.AddItem rsDVA!TenDV
If rsDVA!MaDV = MaDV Then j = i
bA(i) = rsDVA!MaDV
i = i + 1
End If
rsDVA.MoveNext
Wend
rsDVA.Close
Set rsDVA = Nothing
cboBenA.ListIndex = j
Me.Refresh
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 56
Private Sub cboBenA_LostFocus()
benA = cboBenA
End Sub
Private Sub cboBenB_Gotfocus()
Dim i As Integer
cboBenB.Clear
Set rsDVB = New ADODB.Recordset
rsDVB.Open sql, cnn, adOpenDynamic, adLockBatchOptimistic
rsDVB.MoveFirst
While Not rsDVB.EOF
If rsDVB!TenDV <> benA Then
cboBenB.AddItem rsDVB!TenDV
bB(i) = rsDVB!MaDV
i = i + 1
End If
rsDVB.MoveNext
Wend
rsDVB.Close
Set rsDVB = Nothing
End Sub
Private Sub cboBenB_LostFocus()
benB = cboBenB
End Sub
Private Sub cboDVN_Lostfocus()
DVN = cboDVN
End Sub
Private Sub cboTS_GotFocus()
Dim i As Integer
cboTS.Clear
Set rsTSD = New ADODB.Recordset
Set rsTSKD = New ADODB.Recordset
i = 0
Select Case cboSort.ListIndex
Case 1, 3:
If benA <> "" Then
a = 0
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 57
qryTSD = "SELECT tblDonVi.TenDV, tblLoaiTS_Detail.* " _
& "FROM (tblTongHopDat_Master INNER JOIN tblDonVi ON
tblTongHopDat_Master.MaDV = tblDonVi.MaDV) INNER JOIN tblLoaiTS_Detail
ON tblTongHopDat_Master.MaTS = tblLoaiTS_Detail.MaTS " _
& "Where tblDonVi.TenDV ='" & benA & "';"
qryTSKD = "SELECT tblDonVi.TenDV, tblLoaiTS_Detail.* " _
& "FROM (tblLoaiTS_Detail INNER JOIN tblTongHopTSCD_KLD_Master
ON tblLoaiTS_Detail.MaTS = tblTongHopTSCD_KLD_Master.MaTS) INNER
JOIN tblDonVi ON tblTongHopTSCD_KLD_Master.MaDV = tblDonVi.MaDV " _
& "Where tblDonvi.tenDV ='" & benA & "';"
End If
Case 0, 2:
a = 1
If benB <> "" And cboBenB.Enabled Then
qryTSD = "SELECT tblDonVi.TenDV, tblLoaiTS_Detail.* " _
& "FROM (tblTongHopDat_Master INNER JOIN tblDonVi ON
tblTongHopDat_Master.MaDV = tblDonVi.MaDV) INNER JOIN tblLoaiTS_Detail
ON tblTongHopDat_Master.MaTS = tblLoaiTS_Detail.MaTS " _
& "Where tblDonVi.TenDV ='" & benB & "';"
qryTSKD = "SELECT tblDonVi.TenDV, tblLoaiTS_Detail.* " _
& "FROM (tblLoaiTS_Detail INNER JOIN tblTongHopTSCD_KLD_Master
ON tblLoaiTS_Detail.MaTS = tblTongHopTSCD_KLD_Master.MaTS) INNER
JOIN tblDonVi ON tblTongHopTSCD_KLD_Master.MaDV = tblDonVi.MaDV " _
& "Where tblDonvi.tenDV ='" & benB & "';"
End If
End Select
If qryTSD <> "" And qryTSKD <> "" Then
rsTSD.Open qryTSD, cnn, adOpenDynamic, adLockOptimistic
rsTSKD.Open qryTSKD, cnn, adOpenDynamic, adLockOptimistic
While Not rsTSD.EOF
cboTS.AddItem rsTSD!TenTS
CodeTS(i) = rsTSD!MaTS
i = i + 1
rsTSD.MoveNext
Wend
While Not rsTSKD.EOF
cboTS.AddItem rsTSKD!TenTS
CodeTS(i) = rsTSKD!MaTS
i = i + 1
rsTSKD.MoveNext
Wend
End If
End Sub
Private Sub cmdBenA_Click()
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 58
Dim ok As Boolean
ok = False
Set rsDVA = New ADODB.Recordset
rsDVA.Open sql, cnn, adOpenDynamic, adLockBatchOptimistic
rsDVA.MoveFirst
While Not rsDVA.EOF
If rsDVA!TenDV = benA Then
MaDV = rsDVA!MaDV
ok = True
End If
rsDVA.MoveNext
Wend
rsDVA.Close
Set rsDVA = Nothing
If ok Then frmNhapDV.Show
End Sub
Private Sub CmdBenB_Click()
Dim ok As Boolean
ok = False
Set rsDVB = New ADODB.Recordset
rsDVB.Open sql, cnn, adOpenDynamic, adLockBatchOptimistic
rsDVB.MoveFirst
While Not rsDVB.EOF
If rsDVB!TenDV = benB Then
MaDV = rsDVB!MaDV
ok = True
End If
rsDVB.MoveNext
Wend
rsDVB.Close
Set rsDVB = Nothing
If ok Then frmNhapDV.Show
End Sub
Private Sub CmdDVN_Click()
Dim ok As Boolean
ok = False
Set rsDVN = New ADODB.Recordset
rsDVN.Open "tblDVNgoai", cnn, adOpenDynamic, adLockBatchOptimistic
rsDVN.MoveFirst
While Not rsDVN.EOF
If rsDVN!TenDVN = DVN Then
MaDVN = rsDVN!MaDVN
ok = True
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 59
End If
rsDVN.MoveNext
Wend
rsDVN.Close
Set rsDVN = Nothing
If ok Then frmNhapDV.Show
End Sub
Private Sub cmdExit_Click()
If mo = 1 Then frmNhapDS.Show
Child_Unload Me
End Sub
Private Sub cmdNew_Click()
cmdReset_Click
Form_Load
End Sub
Private Sub cmdReset_Click()
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is ComboBox And ctl.Name <> "cboSort" Then ctl.Clear
If TypeOf ctl Is TextBox Then ctl.Text = ""
'If TypeOf ctl Is MaskEdBox Then ctl = ""
Next
End Sub
Private Sub cmdSave_Click()
Dim dk As String
If a = 0 Then
dk = bB(cboBenB.ListIndex)
Else
dk = bA(cboBenA.ListIndex)
End If
If Left(CodeTS(cboTS.ListIndex), 1) = "1" Then
Set rsTSD = New ADODB.Recordset
rsTSD.Open "select * from tblTongHopDat_Master where
tblTongHopDat_Master.MaTS ='" & CodeTS(cboTS.ListIndex) & "' ;", cnn,
adOpenDynamic, adLockOptimistic
rsTSD!MaDV = dk
rsTSD.Update
Else
Set rsTSKD = New ADODB.Recordset
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 60
rsTSKD.Open "select * from tblTongHopTSCD_KLD_Master where
tblTongHopTSCD_KLD_Master.MaTS ='" & CodeTS(cboTS.ListIndex) & "' ;",
cnn, adOpenDynamic, adLockOptimistic
rsTSKD!MaDV = dk
rsTSKD.Update
End If
Dim rs As ADODB.Recordset
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Set rs = New ADODB.Recordset
Set rs1 = New ADODB.Recordset
Set rs2 = New ADODB.Recordset
rs.Open "tblHopDong", cnn, adOpenDynamic, adLockOptimistic
rs1.Open "tblHopDongbenA", cnn, adOpenDynamic, adLockOptimistic
rs2.Open "tblHopDongbenB", cnn, adOpenDynamic, adLockOptimistic
rs.AddNew
rs1.AddNew
rs2.AddNew
rs!NgayHD = Text1.Text
rs!LoaiHD = cboSort
rs!MaTS = CodeTS(cboTS.ListIndex)
rs1!benA = bA(cboBenA.ListIndex)
rs2!benB = bB(cboBenB.ListIndex)
rs.Update
rs1!Mahd = rs!Mahd
rs2!Mahd = rs!Mahd
rs1.Update
rs2.Update
cmdReset_Click
Form_Load
End Sub
Private Sub Form_Load()
If mo <> 0 Then Unload frmNhapDS
Child_Load Me
cboDVN.Visible = False
'CmdDVN.Visible = False
benA = ""
benB = ""
'Add cac item cho cboSort
cboSort.AddItem "Mua"
cboSort.AddItem "B¸n"
cboSort.AddItem "Thuª"
cboSort.AddItem "Cho thuª"
cboSort.ListIndex = 0
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 61
Set rsDVN = New ADODB.Recordset
rsDVN.Open "tblDVNgoai", cnn, adOpenDynamic, adLockBatchOptimistic
If Not (rsDVN.EOF And rsDVN.BOF) Then rsDVN.MoveFirst
While Not rsDVN.EOF
cboDVN.AddItem rsDVN!TenDVN
rsDVN.MoveNext
Wend
rsDVN.Close
Set rsDVN = Nothing
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single,
Y As Single)
Mre Me
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then Child_Unload Me
End Sub
Private Sub Frame2_DragDrop(Source As Control, X As Single, Y As Single)
End Sub
Private Sub Mybutton2_Click()
cmdReset_Click
End Sub
Private Sub Mybutton3_Click()
cmdReset_Click
End Sub
Private Sub Mybutton4_Click()
cmdExit_Click
End Sub
Private Sub optBenB_Click()
cboDVN.Visible = False
CmdDVN.Visible = False
cboBenB.Visible = True
CmdBenB.Visible = True
End Sub
Private Sub optDVN_Click()
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 62
cboDVN.Visible = True
CmdDVN.Visible = True
cboBenB.Visible = False
CmdBenB.Visible = False
End Sub
Private Sub Text1_lostfocus()
Dim dt As String
dt = Text1.Text
If Not Validdate(dt) Then
Text1.SetFocus
Text1.Text = ""
Else
Text1.Text = Format(dt, "dd/mm/yyyy")
'If Format(Text1.Text) > Format(Now()) Then
' Text1.SetFocus
' Text1.Text = ""
' End If
End If
End Sub
Private Sub Timer1_Timer()
Dim ctl As Control
Dim ok As Boolean
ok = True
For Each ctl In Me.Controls
If TypeOf ctl Is TextBox Then
If ctl.Text = "" Then ok = False
End If
Next
If cboBenA <> "" And (cboBenB <> "" Or cboDVN <> "") Then
cboTS.Enabled = True
'cmdTS.Enabled = True
Else
cboTS.Enabled = False
'cmdTS.Enabled = False
End If
If cboTS <> "" And cboBenA <> "" And (cboBenB <> "" Or DVN <> "") _
And Text1.Text <> "" Then
cmdSave.Enabled = True
Else
cmdSave.Enabled = False
End If
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 63
If txtDate <> "" Or cboTS <> "" Or benA <> "" Or (benB <> "" Or DVN <> "") _
Or Text1.Text <> "" Then
cmdReset.Enabled = True
Else
cmdReset.Enabled = False
End If
End Sub
1.5 Form: frmChonTS
Option Explicit
Dim i As Integer
Dim Li As ListItem
Dim rsLoaiTS As ADODB.Recordset
Dim rsNhom As ADODB.Recordset
Dim MaLoai(6) As String
Dim sSQL As String
Private Sub cboLoai_Click()
List.ListItems.Clear
Call AddListItem(Li, TimMaLoai(cboLoai.Text))
End Sub
Private Sub cmdSua_Click()
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 64
iButton = Sua
MaNhom = List.SelectedItem.ListSubItems(1).Text
frmNhapTS.Show
Child_Unload Me
End Sub
Private Sub cmdThem_Click()
iButton = Them
frmNhapTS.Show
Child_Unload Me
End Sub
Private Sub cmdThoat_Click()
Child_Unload Me
End Sub
Private Sub cmdXoa_Click()
Dim ok As Boolean
With rsNhom
ok = False
.MoveFirst
While Not .EOF And Not ok
If rsNhom!MaNhom = List.SelectedItem.ListSubItems(1).Text Then
ok = True
Else
.MoveNext
End If
Wend
.Delete
If Not .EOF Then
.MoveNext
ElseIf Not .BOF Then
.MovePrevious
Else
Hien "B¹n võa xo¸ nhãm tµi s¶n cuèi cïng"
End If
End With
cmdXoa.Enabled = False
Form_Load
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 65
End Sub
Private Sub Form_Load()
Child_Load Me
cboLoai.Clear
Set rsLoaiTS = New ADODB.Recordset
rsLoaiTS.Open "tblLoaits_master", cnn, adOpenDynamic,
adLockOptimistic
With rsLoaiTS
i = 0
.MoveFirst
While .EOF = False
cboLoai.AddItem !TenloaiTS, i
i = i + 1
.MoveNext
Wend
End With
cboLoai.ListIndex = 0
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As
Integer)
If UnloadMode = 0 Then Child_Unload Me
End Sub
Private Sub AddListItem(ByRef xItem As ListItem, s As String)
Dim i As Integer
sSQL = "SELECT * FROM tblnhom WHERE maloaits='" & s & "';"
Set rsNhom = New ADODB.Recordset
rsNhom.Open sSQL, cnn, adOpenDynamic, adLockOptimistic
With rsNhom
If .EOF And .BOF Then
cmdSua.Enabled = False
cmdXoa.Enabled = False
Hien "Ch-a nhËp nhãm tµi s¶n"
Else
cmdSua.Enabled = True
cmdXoa.Enabled = True
.MoveFirst
i = 1
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 66
While Not .EOF
Set xItem = List.ListItems.Add
xItem.Text = i
xItem.ListSubItems.Add key:="M· nhãm", Text:=!MaNhom
xItem.ListSubItems.Add key:="Tªn nhãm", Text:=!tennhom
.MoveNext
i = i + 1
Wend
End If
End With
End Sub
Function TimMaLoai(tenloai As String)
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "tblloaits_master", cnn, adOpenDynamic, adLockOptimistic
With rs
.MoveFirst
While Not .EOF And tenloai <> !TenloaiTS
.MoveNext
Wend
TimMaLoai = !MaloaiTS
End With
End Function
1.6 Form : frmNhapDV
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 67
Option Explicit
Dim rsDV As ADODB.Recordset
Dim k As Integer
Dim StopWh As Boolean
Dim Temp As String
Dim sSQL As String
Private Sub cboCT_Click()
txtMaDV.Enabled = True
txtMaDV.Text = CodeDV(cboCT.Text)
txtMaDV.Enabled = False
txtTenDV.Enabled = True
'txtTenDV.SetFocus
Check_Empty
End Sub
Private Sub cboQuan_Click()
Check_Empty
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 68
Private Sub cboQuan_GotFocus()
'CEmpty txtDiaChi
Hien "QuËn theo ®Þa chØ cña ®¬n vÞ"
End Sub
Private Sub cboQuan_KeyPress(KeyAscii As Integer)
If UCase(Chr(KeyAscii)) = "D" Then cboQuan.ListIndex = 1
End Sub
Private Sub cmdCapnhat_Click()
If CDublicate(txtTenDV.Text) Then
MMsgbox "§· cã tªn ®¬n vÞ nµy råi, ®Ò nghÞ nhËp l¹i"
Hien "§· cã tªn ®¬n vÞ nµy råi, ®Ò nghÞ nhËp l¹i"
txtTenDV.Text = ""
txtDiachi.Text = ""
txtDT.Text = ""
txtSoNV.Text = ""
Exit Sub
End If
If iButton = 2 Then
If MaDV = txtMaDV.Text Then
GetValue
rsDV.Update
Else
rsDV.Delete
If Not rsDV.EOF Then
rsDV.MoveNext
ElseIf Not rsDV.BOF Then
rsDV.MovePrevious
End If
rsDV.AddNew
GetValue
rsDV.Update
ThemDVCD (cboCT.Text)
Call DoiTS(MaDV, txtMaDV.Text)
End If
ElseIf iButton = 3 Then
With rsDV
rsDV.AddNew
GetValue
rsDV.Update
End With
ThemDVCD (cboCT.Text)
cboCT.Refresh
End If
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 69
cmdThoat_Click
End Sub
Private Sub cmdThoat_Click()
Child_Unload Me
frmDonVi.Show
End Sub
Private Sub Form_Load()
Child_Load Me
Dim i As Integer
Set rsDV = New ADODB.Recordset
rsDV.Open "tblDonvi", cnn, adOpenDynamic, _
adLockOptimistic, adCmdTable
'---------------------------------------------------------
With cboQuan
.AddItem "Ba ®×nh", 0
.AddItem "§èng §a", 1
.AddItem "Hai Bµ Tr-ng", 2
.AddItem "Hoµn KiÕm", 3
.AddItem "Gia L©m", 4
.AddItem "Thanh Xu©n", 5
.AddItem "Tõ Liªm", 6
End With
'---------------------------------------------------------
TenCT
Select Case iButton 'Sua don vi hay them moi
Case 2 'cmdSuaDV
SuaDonVi
Case 3 'cmdThem:
cboCT.ListIndex = 0
cboCT.Refresh
txtTenDV.Enabled = True
'txtTenDV.SetFocus
txtMaDV.Enabled = True
txtMaDV.Text = CodeDV(cboCT.Text)
txtMaDV.Enabled = False
cmdCapNhat.Enabled = False
txtTenDV.Text = ""
txtDiachi.Text = ""
txtDT.Text = ""
txtSoNV.Text = ""
txtTenDV.Enabled = False
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 70
txtDiachi.Enabled = False
txtDT.Enabled = False
txtSoNV.Enabled = False
cboQuan.Enabled = False
End Select
Child_Unload frmDonVi
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then cmdThoat_Click
End Sub
Private Sub GetValue()
rsDV!MaDV = txtMaDV.Text
rsDV!TenDV = txtTenDV.Text
rsDV!DiaChi = txtDiachi.Text
rsDV!Quan = cboQuan.Text
rsDV!SoDT = txtDT.Text
rsDV!DonViCT = MaDV_T(cboCT.Text)
rsDV!sonv = txtSoNV.Text
If optCap2.Value = True Then
rsDV!Capdv = 2
Else
rsDV!Capdv = 3
End If
If optQLNN.Value = True Then
rsDV!chucnang = "QLNN"
Else
rsDV!chucnang = "HCSN"
End If
End Sub
Private Sub optCap2_Click()
TenCT
End Sub
Private Sub optCap3_Click()
TenCT
End Sub
Private Sub Timer1_Timer()
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 71
If cboCT.Text <> "" Then
cboQuan.Enabled = True
txtTenDV.Enabled = True
txtDiachi.Enabled = True
txtDT.Enabled = True
txtSoNV.Enabled = True
End If
End Sub
Private Sub txtDiachi_Click()
Check_Empty
End Sub
Private Sub txtDiaChi_GotFocus()
' CEmpty txtTenDV
Hien "NhËp ®Þa chØ cña ®¬n vÞ"
End Sub
Private Sub txtDT_Change()
Check_Empty
End Sub
Private Sub txtDT_GotFocus()
Call CEmpty(cboQuan)
Hien "§iÖn tho¹i cña ®¬n vÞ"
End Sub
Private Sub txtDT_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtMaDV_Click()
'Check_Empty
End Sub
Private Sub txtSoNV_Change()
Check_Empty
End Sub
Private Sub txtSoNV_GotFocus()
CEmpty txtDT
Hien "Sè nh©n viªn hiÖn t¹i cña ®¬n vÞ"
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 72
Private Sub txtSoNV_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
End Sub
Private Sub txtTenDV_Click()
'Check_Empty
End Sub
Private Sub txtTenDV_GotFocus()
Hien "NhËp tªn ®¬n vÞ vµo ®©y"
End Sub
Private Sub txtTenDV_KeyPress(KeyAscii As Integer)
KeyAscii = Char_Check(KeyAscii)
End Sub
Private Sub TenCT()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
cboCT.Clear
If optCap2.Value Then
cboCT.AddItem "UBND TP Hµ Néi"
Else
sSQL = "SELECT * FROM tbldonvi " & _
"WHERE capdv= 2;"
rs.Open sSQL, cnn, adOpenDynamic, adLockOptimistic
With rs
.MoveFirst
While .EOF = False
cboCT.AddItem !TenDV
.MoveNext
Wend
End With
End If
cboCT.ListIndex = 0
txtMaDV.Enabled = True
txtMaDV.Text = CodeDV(cboCT.Text)
txtMaDV.Enabled = False
End Sub
Function CDublicate(TenDV As String) As Boolean
Dim sSQL As String
Dim Check As Boolean
sSQL = "SELECT * FROM tbldonvi WHERE tendv= '" & TenDV & "';"
Dim rsDV1 As ADODB.Recordset
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 73
Set rsDV1 = New ADODB.Recordset
rsDV1.Open sSQL, cnn, adOpenDynamic, adLockOptimistic
If rsDV1.EOF And rsDV1.BOF Then
Check = False
Else
Check = True
End If
CDublicate = Check
End Function
Private Sub ThemDVCD(TenCT As String)
Dim rsDV2 As ADODB.Recordset
Set rsDV2 = New ADODB.Recordset
rsDV2.Open "tbldonvi", cnn, adOpenDynamic, adLockOptimistic
With rsDV2
.MoveFirst
While .EOF = False And !TenDV <> TenCT
.MoveNext
Wend
!sodvcd = !sodvcd + 1
.Update
End With
End Sub
Public Function MaDV_T(Ten As String) As String 'Tim Ma don vi tu ten don vi
Dim Ma As String
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "Tbldonvi", cnn, adOpenDynamic, adLockOptimistic
With rs
.MoveFirst
While Not .EOF
If !TenDV = Ten Then
Ma = !MaDV
End If
.MoveNext
Wend
End With
MaDV_T = Ma
End Function
Private Sub SuaDonVi()
Dim i As Integer
Dim l As Integer
With rsDV
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 74
.MoveFirst
While Not .EOF And !MaDV <> MaDV
.MoveNext
Wend
If !Capdv = 2 Then
optCap2.Value = True
ElseIf !Capdv = 3 Then
optCap3.Value = True
End If
i = 0
While i < cboCT.ListCount
cboCT.ListIndex = i
If MaDV_T(cboCT.Text) = !DonViCT Then l = i
i = i + 1
Wend
cboCT.ListIndex = l
txtMaDV.Enabled = True
txtMaDV.Text = !MaDV
txtMaDV.Enabled = False
txtTenDV.Text = !TenDV
txtDT.Text = !SoDT
txtDiachi.Text = !DiaChi
txtSoNV.Text = !sonv
i = 0
While i < cboQuan.ListCount
cboQuan.ListIndex = i
If MaDV_T(cboQuan.Text) = !DonViCT Then l = i
i = i + 1
Wend
cboQuan.ListIndex = l
If !chucnang = "qlnn" Then
optQLNN.Value = True
Else
optHCSN.Value = True
End If
End With
End Sub
Private Sub DoiTS(MaCu As String, MaMoi As String)
Dim rsDat As ADODB.Recordset
Dim rsKLD As ADODB.Recordset
Set rsDat = New ADODB.Recordset
Set rsKLD = New ADODB.Recordset
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 75
rsDat.Open "tbltonghopdat_master", cnn, adOpenDynamic, adLockOptimistic
rsKLD.Open "tblTongHopTSCD_KLD_Master", cnn, adOpenDynamic,
adLockOptimistic
With rsDat
If .EOF And .BOF Then
.MoveFirst
While Not .EOF And MaCu <> !MaDV
.MoveNext
Wend
!MaDV = MaMoi
End If
End With
With rsKLD
If .EOF And .BOF Then
.MoveFirst
While Not .EOF And MaCu <> !MaDV
.MoveNext
Wend
!MaDV = MaMoi
End If
End With
End Sub
Private Sub Check_Empty()
Dim ctl As Control
Dim B As Boolean
B = True
For Each ctl In Controls
If TypeOf ctl Is TextBox Or TypeOf ctl Is MaskEdBox _
Or TypeOf ctl Is ComboBox Then
If ctl.Text = "" Then B = False
End If
Next ctl
If B = True Then
cmdCapNhat.Enabled = True
Else
cmdCapNhat.Enabled = False
End If
End Sub
1.7 Form: frmTimKiem
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 76
Dim rsDV As ADODB.Recordset
Dim rsTS As ADODB.Recordset
Dim i As Integer
Dim Flag As Boolean
Dim ok As Boolean
Private Sub cboCap_KeyPress(KeyAscii As Integer)
KeyAscii = Num_Check(KeyAscii)
If Not (KeyAscii = "2" Or KeyAscii = "3") Then
cboCap.Text = ""
End If
End Sub
Private Sub cmdThoat_Click()
Child_Unload Me
End Sub
Private Sub cmdTim_Click()
Flag = True
Select Case SSTab1.Tab
Case 0 'Tim don vi
TimDV
iButton = 0
Case 1 'Tim tai san
TimTS
iButton = 1
Case 2 'Tim phieu
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 77
If txtTu.Text <> "" Or txtDen.Text <> "" Then
If Not IsDate(txtTu.Text) And Not IsDate(txtDen.Text) Then
MsgBox "NhËp sai ®iÒu kiÖn t×m kiÕm!", , "Th«ng b¸o:"
Flag = False
Exit Sub
End If
End If
TimPhieu
iButton = 2
End Select
If Flag Then
MsgBox "Ch-a nhËp ®iÒu kiÖn t×m kiÕm", , "Th«ng b¸o:"
Else
Call cFind(findSQL)
End If
End Sub
Private Sub Form_Load()
Child_Load Me
Set rsDV = New ADODB.Recordset
rsDV.Open "tbldonvi", cnn, adOpenDynamic, adLockOptimistic
i = 0
With rsDV
.MoveFirst
While .EOF = False
cboMaDV.AddItem rsDV!MaDV, i
cboTenDV.AddItem rsDV!TenDV, i
i = i + 1
.MoveNext
Wend
End With
cboCap.AddItem 1, 0
cboCap.AddItem 2, 1
cboCap.AddItem 3, 2
cboCN.AddItem "QLNN", 0
cboCN.AddItem "HCSN", 1
End Sub
Private Sub TimDV()
findSQL = "SELECT * FROM tbldonvi WHERE "
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 78
If cboMaDV.Text <> "" Then
findSQL = findSQL & "( madv LIKE '%" & cboMaDV.Text & "%')"
Flag = False
End If
If cboTenDV.Text <> "" Then
If Not Flag Then
findSQL = findSQL & " AND ( tendv LIKE '%" & cboTenDV.Text & "%')"
Else
findSQL = findSQL & "( tendv LIKE '%" & cboTenDV.Text & "%')"
End If
Flag = False
End If
If cboCap.Text <> "" Then
If Not Flag Then
findSQL = findSQL & " AND ( capdv LIKE '%" & cboCap.Text & "%')"
Else
findSQL = findSQL & "( capdv LIKE '%" & cboCap.Text & "%')"
End If
Flag = False
End If
If cboCN.Text <> "" Then
If Not Flag Then
findSQL = findSQL & " AND ( Chucnang LIKE '%" & cboCN.Text & "%')"
Else
findSQL = findSQL & "( tendv LIKE '%" & cboTenDV.Text & "%')"
End If
Flag = False
End If
End Sub
Private Sub TimTS()
findSQL = "SELECT * FROM tblloaits_master" & _
" INNER JOIN tblnhom" & _
" ON tblloaits_master.maloaits=tblnhom.maloaits" & _
" WHERE "
If cboMaNhomTS.Text <> "" Then
findSQL = findSQL & " (tblnhom.manhom LIKE '%" & cboMaNhomTS.Text &
"%')"
Flag = False
End If
If cboNhom.Text <> "" Then
If Flag Then
findSQL = findSQL & " (tblnhom.tennhom LIKE '%" & cboNhom.Text &
"%')"
Else
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 79
findSQL = findSQL & " AND (tblnhom.tennhom LIKE '%" & cboNhom.Text &
"%')"
End If
Flag = False
End If
If cboLoaiTS.Text <> "" Then
If Flag Then
findSQL = findSQL & " (tblloaits_master.tenloaits LIKE '%" &
cboLoaiTS.Text & "%')"
Else
findSQL = findSQL & " AND (tblloaits_master.tenloaits LIKE '%" &
cboLoaiTS.Text & "%')"
End If
Flag = False
End If
End Sub
Private Sub TimPhieu()
findSQL = "SELECT * " & _
"FROM tblphieu " & _
"WHERE "
If cboMP.Text <> "" Then
findSQL = findSQL & "(tblphieu.maphieu LIKE '%" & cboMP.Text & "%')"
Flag = False
End If
If cboNguoiLP.Text <> "" Then
If Flag Then
findSQL = findSQL & "(tblphieu.tennlp LIKE '%" & cboNguoiLP.Text & "%')"
Else
findSQL = findSQL & " AND (tblphieu.tennlp LIKE '%" & cboNguoiLP.Text &
"%')"
End If
Flag = False
End If
If txtTu.Text <> "" Then
If Flag Then
If txtDen.Text <> "" Then
findSQL = findSQL & " (tblphieu.ngaylp >=DateValue(Format('" &
txtTu.Text & "'))) and " _
& " (tblphieu.ngaylp <=DateValue(Format('" & txtDen.Text & "'))) "
Else
findSQL = findSQL & " (tblphieu.ngaylp >=DateValue(Format('" &
txtTu.Text & "')));"
End If
Else
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 80
If txtDen.Text <> "" Then
findSQL = findSQL & " AND ( tblphieu.ngaylp >=DateValue(Format('" &
txtTu.Text & "'))) and " _
& " (tblphieu.ngaylp <=DateValue(Format('" & txtDen.Text & "'))) "
Else
findSQL = findSQL & " AND (tblphieu.ngaylp >=DateValue(Format('" &
txtTu.Text & "')));"
End If
End If
Flag = False
Else
If Flag Then
If txtDen.Text <> "" Then
findSQL = findSQL & " (tblphieu.ngaylp <=DateValue(Format('" &
txtDen.Text & "'))) "
End If
Else
If txtDen.Text <> "" Then
findSQL = findSQL & " AND (tblphieu.ngaylp <=DateValue(Format('" &
txtDen.Text & "'))) "
End If
End If
Flag = False
End If
'MsgBox findSQL
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then Child_Unload Me
End Sub
Private Sub cFind(sql As String)
Dim hang As String
Dim cot As String
Set rsKQ = New ADODB.Recordset
rsKQ.Open findSQL, cnn, adOpenDynamic, adLockOptimistic
Dim i As Integer
With rsKQ
If .EOF And .BOF Then
If SSTab1.Tab = 0 Then
MsgBox "Kh«ng t×m thÊy ®¬n vÞ ", , "Th«ng b¸o:"
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 81
ElseIf SSTab1.Tab = 1 Then
MsgBox "Kh«ng t×m thÊy tµi s¶n ", , "Th«ng b¸o:"
Else
MsgBox "Kh«ng t×m thÊy phiÕu", , "Th«ng b¸o:"
End If
Exit Sub
rsKQ.Close
Set rsKQ = Nothing
Else
frmTimKiemKQ.Show
End If
End With
End Sub
Private Sub SSTab1_DblClick()
End Sub
1.8 Form: frmTimKiemKQ
Private Sub cmdThoat_Click()
Child_Unload Me
End Sub
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 82
Private Sub Form_Load()
Dim Li As ListItem
Child_Load Me
With rsKQ
Select Case iButton
Case 0: 'Tim don vi
i = 0
List.ColumnHeaders.Clear
List.ColumnHeaders.Add , , "STT", 1000
List.ColumnHeaders.Add , , "M· ®¬n vÞ", 3000
List.ColumnHeaders.Add , , "Tªn ®¬n vÞ", 3000
.MoveFirst
While Not .EOF
Set Li = List.ListItems.Add
i = i + 1
Li.Text = i
Li.ListSubItems.Add Text:=!MaDV
Li.ListSubItems.Add Text:=!TenDV
.MoveNext
Wend
Case 1: 'Tim tai san
List.ColumnHeaders.Clear
List.ColumnHeaders.Add , , "STT", 1000
List.ColumnHeaders.Add , , "M· nhãm tµi s¶n", 3000
List.ColumnHeaders.Add , , "Tªn tµi s¶n", 3000
.MoveFirst
While Not .EOF
Set Li = List.ListItems.Add
i = i + 1
Li.Text = i
Li.ListSubItems.Add Text:=!MaNhom
Li.ListSubItems.Add Text:=!tennhom
.MoveNext
Wend
Case 2: 'Tim phieu
List.ColumnHeaders.Clear
List.ColumnHeaders.Add , , "STT", 1000
List.ColumnHeaders.Add , , "M· PhiÕu", 2000
List.ColumnHeaders.Add , , "Ngµy lËp phiÕu", 2000
List.ColumnHeaders.Add , , "Ng-êi lËp phiÕu", 3000
.MoveFirst
While Not .EOF
Set Li = List.ListItems.Add
i = i + 1
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 83
Li.Text = i
Li.ListSubItems.Add Text:=!Maphieu
Li.ListSubItems.Add Text:=!NgayLP
Li.ListSubItems.Add Text:=!TenNLP
.MoveNext
Wend
End Select
End With
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then Child_Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
rsKQ.Close
Set rsKQ = Nothing
End Sub
Private Sub List_MouseDown(Button As Integer, Shift As Integer, X As Single, Y
As Single)
If Button = 2 Then
Select Case iButton
Case 0:
frmPopUpMenu.SetDV List.SelectedItem.ListSubItems(2).Text,
List.SelectedItem.ListSubItems(1).Text
Me.PopupMenu frmPopUpMenu.mnuDonvi
End Select
End If
End Sub
1.9 Form: frmDoThi
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 84
Option Explicit
Private Sub Command1_Click()
Chart1.Plot.Axis(VtChAxisIdY).AxisTitle.TextLayout.VertAlignment =
VtVerticalAlignmentTop
Chart1.Plot.Axis(VtChAxisIdY).AxisTitle = "(VND)"
Chart1.Plot.Axis(VtChAxisIdY).AxisTitle.VtFont.Size = 18
With Chart1
If lisLoaiDT.ListIndex = 0 Then
.chartType = VtChChartType2dBar
ElseIf lisLoaiDT.ListIndex = 1 Then
.chartType = VtChChartType2dPie
ElseIf lisLoaiDT.ListIndex = 2 Then
.chartType = VtChChartType3dBar
.Plot.View3d.Elevation = 15
.Plot.View3d.Rotation = 30
End If
.Refresh
End With
End Sub
Private Sub Form_Load()
Child_Load Me
With Chart1
.ChartData = gt
.Title = "Gi¸ trÞ Tµi s¶n"
Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh
doanh Hµ Néi
§ç §øc Chung Tin4 85
.FootnoteText = "Tµi s¶n cè ®Þnh"
.Title.VtFont.Name = ".vntime"
.Title.VtFont.Size = 16
.Legend.VtFont.Name = 14
.Legend.VtFont.Name = ".vntime"
.Footnote.VtFont.Name = ".vntime"
.Column = 1
.ColumnLabel = "Gia tri thuc te"
.Column = 2
.ColumnLabel = "Gia tri ke toan"
.Refresh
End With
'--------------------------------------------------------
lisLoaiDT.AddItem "Cét, 2D", 0
lisLoaiDT.AddItem "H×nh Trßn,2D", 1
lisLoaiDT.AddItem "Cét, 3D", 2
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then Child_Unload Me
End Sub
Private Sub lisLoaiDT_dblClick()
Command1_Click
End Sub
2 Các Modul
2.1 Modul:cCodeNTS
Option Explicit
Public Const Them = 0
Public Const Sua = 1
Public MaNhom As String
Function CodeNTS(MaLoai As String)
Dim soN As Integer
Dim Ma As String
Dim MaTaiSan As String
Dim rsLTS As ADODB.Recordset
Set rsLTS = New ADODB.Recordset
rsLTS.Open "tblLoaiTS_master", cnn, adOpenDynamic, adLockOptimistic
With rsLTS
.MoveFirst
While Not (.EOF)
If !TenloaiTS = MaLoai Then
Ma = !MaloaiTS
ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH
ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH
ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH
ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH
ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH
ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH
ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH

More Related Content

Similar to ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH

Báo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngBáo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngVượng Đặng
 
Hướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basicHướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basicnataliej4
 
Về Visual Basic 20 5
Về Visual Basic 20 5Về Visual Basic 20 5
Về Visual Basic 20 5Phong Lữ
 
Giáo trình tổng quan về Vb
Giáo trình tổng quan về VbGiáo trình tổng quan về Vb
Giáo trình tổng quan về VbSun Down
 
Chủ đề 7-Google docs-vũ mạnh cường
Chủ đề 7-Google docs-vũ mạnh cườngChủ đề 7-Google docs-vũ mạnh cường
Chủ đề 7-Google docs-vũ mạnh cườngVũ Mạnh Cường
 
Lập trình với microsoft visual basic 6.0
Lập trình với microsoft visual basic 6.0Lập trình với microsoft visual basic 6.0
Lập trình với microsoft visual basic 6.0Học Huỳnh Bá
 
Visualbasic6lythuyet 121025092821-phpapp01
Visualbasic6lythuyet 121025092821-phpapp01Visualbasic6lythuyet 121025092821-phpapp01
Visualbasic6lythuyet 121025092821-phpapp01hatrungkhien
 
Thiết Kế Giao Diện Người dùng
Thiết Kế Giao Diện Người dùngThiết Kế Giao Diện Người dùng
Thiết Kế Giao Diện Người dùngPhương Minh
 
Giao trinh-microsoft-access2000[bookbooming.com]
Giao trinh-microsoft-access2000[bookbooming.com]Giao trinh-microsoft-access2000[bookbooming.com]
Giao trinh-microsoft-access2000[bookbooming.com]bookbooming1
 
Giao trinh access nguyen son hai
Giao trinh access nguyen son haiGiao trinh access nguyen son hai
Giao trinh access nguyen son haiHung Pham Thai
 
OpenOffice/LibreOffice: Using forms in Writer (Vietnamese)
OpenOffice/LibreOffice: Using forms in Writer (Vietnamese)OpenOffice/LibreOffice: Using forms in Writer (Vietnamese)
OpenOffice/LibreOffice: Using forms in Writer (Vietnamese)Vu Hung Nguyen
 

Similar to ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH (20)

Báo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngBáo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụng
 
Hướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basicHướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basic
 
Về Visual Basic 20 5
Về Visual Basic 20 5Về Visual Basic 20 5
Về Visual Basic 20 5
 
Giáo trình tổng quan về Vb
Giáo trình tổng quan về VbGiáo trình tổng quan về Vb
Giáo trình tổng quan về Vb
 
Giao trinh access_2003
Giao trinh access_2003Giao trinh access_2003
Giao trinh access_2003
 
Chủ đề 7-Google docs-vũ mạnh cường
Chủ đề 7-Google docs-vũ mạnh cườngChủ đề 7-Google docs-vũ mạnh cường
Chủ đề 7-Google docs-vũ mạnh cường
 
Access Toan Tap
Access Toan TapAccess Toan Tap
Access Toan Tap
 
Lập trình với microsoft visual basic 6.0
Lập trình với microsoft visual basic 6.0Lập trình với microsoft visual basic 6.0
Lập trình với microsoft visual basic 6.0
 
Visualbasic6lythuyet 121025092821-phpapp01
Visualbasic6lythuyet 121025092821-phpapp01Visualbasic6lythuyet 121025092821-phpapp01
Visualbasic6lythuyet 121025092821-phpapp01
 
Thiết Kế Giao Diện Người dùng
Thiết Kế Giao Diện Người dùngThiết Kế Giao Diện Người dùng
Thiết Kế Giao Diện Người dùng
 
Giao trinh access2000
Giao trinh access2000Giao trinh access2000
Giao trinh access2000
 
Access Nguyen Son Hai
Access Nguyen Son HaiAccess Nguyen Son Hai
Access Nguyen Son Hai
 
Giao trinh-microsoft-access2000[bookbooming.com]
Giao trinh-microsoft-access2000[bookbooming.com]Giao trinh-microsoft-access2000[bookbooming.com]
Giao trinh-microsoft-access2000[bookbooming.com]
 
Access2000
Access2000Access2000
Access2000
 
Giao trinh access nguyen son hai
Giao trinh access nguyen son haiGiao trinh access nguyen son hai
Giao trinh access nguyen son hai
 
Ky thuat lap trinh
Ky thuat lap trinhKy thuat lap trinh
Ky thuat lap trinh
 
Ktlt
KtltKtlt
Ktlt
 
Thong cao bao_chi
Thong cao bao_chiThong cao bao_chi
Thong cao bao_chi
 
OpenOffice/LibreOffice: Using forms in Writer (Vietnamese)
OpenOffice/LibreOffice: Using forms in Writer (Vietnamese)OpenOffice/LibreOffice: Using forms in Writer (Vietnamese)
OpenOffice/LibreOffice: Using forms in Writer (Vietnamese)
 
Access
AccessAccess
Access
 

More from OnTimeVitThu

Luận văn thạc sĩ kế toán: Phân tích tài chính công ty
Luận văn thạc sĩ kế toán: Phân tích tài chính công tyLuận văn thạc sĩ kế toán: Phân tích tài chính công ty
Luận văn thạc sĩ kế toán: Phân tích tài chính công tyOnTimeVitThu
 
Luận văn thạc sĩ: Pháp luật về thời gian làm việc, thời giờ nghỉ ngơi ở VN
Luận văn thạc sĩ: Pháp luật về thời gian làm việc, thời giờ nghỉ ngơi ở VNLuận văn thạc sĩ: Pháp luật về thời gian làm việc, thời giờ nghỉ ngơi ở VN
Luận văn thạc sĩ: Pháp luật về thời gian làm việc, thời giờ nghỉ ngơi ở VNOnTimeVitThu
 
Luận văn thạc sĩ: Khung pháp lý điều chỉnh hoạt động tài trợ của bên thứ 3 tr...
Luận văn thạc sĩ: Khung pháp lý điều chỉnh hoạt động tài trợ của bên thứ 3 tr...Luận văn thạc sĩ: Khung pháp lý điều chỉnh hoạt động tài trợ của bên thứ 3 tr...
Luận văn thạc sĩ: Khung pháp lý điều chỉnh hoạt động tài trợ của bên thứ 3 tr...OnTimeVitThu
 
Luận văn thạc sĩ: Các hình thức xử lý kỷ luật lao động trong pháp luật lao độ...
Luận văn thạc sĩ: Các hình thức xử lý kỷ luật lao động trong pháp luật lao độ...Luận văn thạc sĩ: Các hình thức xử lý kỷ luật lao động trong pháp luật lao độ...
Luận văn thạc sĩ: Các hình thức xử lý kỷ luật lao động trong pháp luật lao độ...OnTimeVitThu
 
Luận văn thạc sĩ: Trách nhiệm bồi thường thiệt hại do gây ô nhiễm môi trường ...
Luận văn thạc sĩ: Trách nhiệm bồi thường thiệt hại do gây ô nhiễm môi trường ...Luận văn thạc sĩ: Trách nhiệm bồi thường thiệt hại do gây ô nhiễm môi trường ...
Luận văn thạc sĩ: Trách nhiệm bồi thường thiệt hại do gây ô nhiễm môi trường ...OnTimeVitThu
 
Luận văn thạc sĩ: Pháp luật về thực hiện hợp đồng khi hoàn cảnh thay đổi cơ bản
Luận văn thạc sĩ: Pháp luật về thực hiện hợp đồng khi hoàn cảnh thay đổi cơ bảnLuận văn thạc sĩ: Pháp luật về thực hiện hợp đồng khi hoàn cảnh thay đổi cơ bản
Luận văn thạc sĩ: Pháp luật về thực hiện hợp đồng khi hoàn cảnh thay đổi cơ bảnOnTimeVitThu
 
Khoá luận: Phân tích các yếu tố ảnh hưởng tới niềm tin của người tiêu dùng và...
Khoá luận: Phân tích các yếu tố ảnh hưởng tới niềm tin của người tiêu dùng và...Khoá luận: Phân tích các yếu tố ảnh hưởng tới niềm tin của người tiêu dùng và...
Khoá luận: Phân tích các yếu tố ảnh hưởng tới niềm tin của người tiêu dùng và...OnTimeVitThu
 
Tiểu luận ngành Ngôn ngữ nhật, Đề tài sân khấu truyền thống Nhật Bản
Tiểu luận ngành Ngôn ngữ nhật, Đề tài sân khấu truyền thống Nhật BảnTiểu luận ngành Ngôn ngữ nhật, Đề tài sân khấu truyền thống Nhật Bản
Tiểu luận ngành Ngôn ngữ nhật, Đề tài sân khấu truyền thống Nhật BảnOnTimeVitThu
 
Tiểu luận tiếng nhật, Đề tài ngôn ngữ chấp dính
Tiểu luận tiếng nhật, Đề tài ngôn ngữ chấp dínhTiểu luận tiếng nhật, Đề tài ngôn ngữ chấp dính
Tiểu luận tiếng nhật, Đề tài ngôn ngữ chấp dínhOnTimeVitThu
 
TIỂU LUẬN: MÔ HÌNH THƯƠNG MẠI ĐIỆN TỬ TẠI VIỆT NAM, ĐIỂM CAO
TIỂU LUẬN: MÔ HÌNH THƯƠNG MẠI ĐIỆN TỬ TẠI VIỆT NAM, ĐIỂM CAOTIỂU LUẬN: MÔ HÌNH THƯƠNG MẠI ĐIỆN TỬ TẠI VIỆT NAM, ĐIỂM CAO
TIỂU LUẬN: MÔ HÌNH THƯƠNG MẠI ĐIỆN TỬ TẠI VIỆT NAM, ĐIỂM CAOOnTimeVitThu
 
MẪU 6: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 6: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍMẪU 6: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 6: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍOnTimeVitThu
 
MẪU 3: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 3: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍMẪU 3: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 3: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍOnTimeVitThu
 
MẪU 1: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 1: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍMẪU 1: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 1: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍOnTimeVitThu
 
Luận văn: Nghiên cứu các nhân tố ảnh hưởng đến hiệu quả tài chính của các doa...
Luận văn: Nghiên cứu các nhân tố ảnh hưởng đến hiệu quả tài chính của các doa...Luận văn: Nghiên cứu các nhân tố ảnh hưởng đến hiệu quả tài chính của các doa...
Luận văn: Nghiên cứu các nhân tố ảnh hưởng đến hiệu quả tài chính của các doa...OnTimeVitThu
 
Luận văn: Hoàn thiện công tác thẩm định giá bất động sản trong cho vay tại Ng...
Luận văn: Hoàn thiện công tác thẩm định giá bất động sản trong cho vay tại Ng...Luận văn: Hoàn thiện công tác thẩm định giá bất động sản trong cho vay tại Ng...
Luận văn: Hoàn thiện công tác thẩm định giá bất động sản trong cho vay tại Ng...OnTimeVitThu
 
Báo cáo thực tập: Phân tích hoạt động cho vay mua bất động sản có tài sản đảm...
Báo cáo thực tập: Phân tích hoạt động cho vay mua bất động sản có tài sản đảm...Báo cáo thực tập: Phân tích hoạt động cho vay mua bất động sản có tài sản đảm...
Báo cáo thực tập: Phân tích hoạt động cho vay mua bất động sản có tài sản đảm...OnTimeVitThu
 
Luận văn Thạc sĩ: Nâng cao hiệu quả kinh doanh bất động sản của công ty
Luận văn Thạc sĩ: Nâng cao hiệu quả kinh doanh bất động sản của công tyLuận văn Thạc sĩ: Nâng cao hiệu quả kinh doanh bất động sản của công ty
Luận văn Thạc sĩ: Nâng cao hiệu quả kinh doanh bất động sản của công tyOnTimeVitThu
 
Khóa luận: Phát triển kinh doanh bất động sản của Công ty Cổ phần
Khóa luận: Phát triển kinh doanh bất động sản của Công ty Cổ phần Khóa luận: Phát triển kinh doanh bất động sản của Công ty Cổ phần
Khóa luận: Phát triển kinh doanh bất động sản của Công ty Cổ phần OnTimeVitThu
 
Báo cáo thực tập: Phân tích hoạt động cho vay khách hàng cá nhân mua bất động...
Báo cáo thực tập: Phân tích hoạt động cho vay khách hàng cá nhân mua bất động...Báo cáo thực tập: Phân tích hoạt động cho vay khách hàng cá nhân mua bất động...
Báo cáo thực tập: Phân tích hoạt động cho vay khách hàng cá nhân mua bất động...OnTimeVitThu
 
Luận văn: Các nhân tố ảnh hưởng đến bong bóng cổ phiếu bất động sản trên thị ...
Luận văn: Các nhân tố ảnh hưởng đến bong bóng cổ phiếu bất động sản trên thị ...Luận văn: Các nhân tố ảnh hưởng đến bong bóng cổ phiếu bất động sản trên thị ...
Luận văn: Các nhân tố ảnh hưởng đến bong bóng cổ phiếu bất động sản trên thị ...OnTimeVitThu
 

More from OnTimeVitThu (20)

Luận văn thạc sĩ kế toán: Phân tích tài chính công ty
Luận văn thạc sĩ kế toán: Phân tích tài chính công tyLuận văn thạc sĩ kế toán: Phân tích tài chính công ty
Luận văn thạc sĩ kế toán: Phân tích tài chính công ty
 
Luận văn thạc sĩ: Pháp luật về thời gian làm việc, thời giờ nghỉ ngơi ở VN
Luận văn thạc sĩ: Pháp luật về thời gian làm việc, thời giờ nghỉ ngơi ở VNLuận văn thạc sĩ: Pháp luật về thời gian làm việc, thời giờ nghỉ ngơi ở VN
Luận văn thạc sĩ: Pháp luật về thời gian làm việc, thời giờ nghỉ ngơi ở VN
 
Luận văn thạc sĩ: Khung pháp lý điều chỉnh hoạt động tài trợ của bên thứ 3 tr...
Luận văn thạc sĩ: Khung pháp lý điều chỉnh hoạt động tài trợ của bên thứ 3 tr...Luận văn thạc sĩ: Khung pháp lý điều chỉnh hoạt động tài trợ của bên thứ 3 tr...
Luận văn thạc sĩ: Khung pháp lý điều chỉnh hoạt động tài trợ của bên thứ 3 tr...
 
Luận văn thạc sĩ: Các hình thức xử lý kỷ luật lao động trong pháp luật lao độ...
Luận văn thạc sĩ: Các hình thức xử lý kỷ luật lao động trong pháp luật lao độ...Luận văn thạc sĩ: Các hình thức xử lý kỷ luật lao động trong pháp luật lao độ...
Luận văn thạc sĩ: Các hình thức xử lý kỷ luật lao động trong pháp luật lao độ...
 
Luận văn thạc sĩ: Trách nhiệm bồi thường thiệt hại do gây ô nhiễm môi trường ...
Luận văn thạc sĩ: Trách nhiệm bồi thường thiệt hại do gây ô nhiễm môi trường ...Luận văn thạc sĩ: Trách nhiệm bồi thường thiệt hại do gây ô nhiễm môi trường ...
Luận văn thạc sĩ: Trách nhiệm bồi thường thiệt hại do gây ô nhiễm môi trường ...
 
Luận văn thạc sĩ: Pháp luật về thực hiện hợp đồng khi hoàn cảnh thay đổi cơ bản
Luận văn thạc sĩ: Pháp luật về thực hiện hợp đồng khi hoàn cảnh thay đổi cơ bảnLuận văn thạc sĩ: Pháp luật về thực hiện hợp đồng khi hoàn cảnh thay đổi cơ bản
Luận văn thạc sĩ: Pháp luật về thực hiện hợp đồng khi hoàn cảnh thay đổi cơ bản
 
Khoá luận: Phân tích các yếu tố ảnh hưởng tới niềm tin của người tiêu dùng và...
Khoá luận: Phân tích các yếu tố ảnh hưởng tới niềm tin của người tiêu dùng và...Khoá luận: Phân tích các yếu tố ảnh hưởng tới niềm tin của người tiêu dùng và...
Khoá luận: Phân tích các yếu tố ảnh hưởng tới niềm tin của người tiêu dùng và...
 
Tiểu luận ngành Ngôn ngữ nhật, Đề tài sân khấu truyền thống Nhật Bản
Tiểu luận ngành Ngôn ngữ nhật, Đề tài sân khấu truyền thống Nhật BảnTiểu luận ngành Ngôn ngữ nhật, Đề tài sân khấu truyền thống Nhật Bản
Tiểu luận ngành Ngôn ngữ nhật, Đề tài sân khấu truyền thống Nhật Bản
 
Tiểu luận tiếng nhật, Đề tài ngôn ngữ chấp dính
Tiểu luận tiếng nhật, Đề tài ngôn ngữ chấp dínhTiểu luận tiếng nhật, Đề tài ngôn ngữ chấp dính
Tiểu luận tiếng nhật, Đề tài ngôn ngữ chấp dính
 
TIỂU LUẬN: MÔ HÌNH THƯƠNG MẠI ĐIỆN TỬ TẠI VIỆT NAM, ĐIỂM CAO
TIỂU LUẬN: MÔ HÌNH THƯƠNG MẠI ĐIỆN TỬ TẠI VIỆT NAM, ĐIỂM CAOTIỂU LUẬN: MÔ HÌNH THƯƠNG MẠI ĐIỆN TỬ TẠI VIỆT NAM, ĐIỂM CAO
TIỂU LUẬN: MÔ HÌNH THƯƠNG MẠI ĐIỆN TỬ TẠI VIỆT NAM, ĐIỂM CAO
 
MẪU 6: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 6: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍMẪU 6: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 6: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
 
MẪU 3: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 3: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍMẪU 3: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 3: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
 
MẪU 1: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 1: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍMẪU 1: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
MẪU 1: TIỂU LUẬN MARKETING DỊCH VỤ, TẢI MIỄN PHÍ
 
Luận văn: Nghiên cứu các nhân tố ảnh hưởng đến hiệu quả tài chính của các doa...
Luận văn: Nghiên cứu các nhân tố ảnh hưởng đến hiệu quả tài chính của các doa...Luận văn: Nghiên cứu các nhân tố ảnh hưởng đến hiệu quả tài chính của các doa...
Luận văn: Nghiên cứu các nhân tố ảnh hưởng đến hiệu quả tài chính của các doa...
 
Luận văn: Hoàn thiện công tác thẩm định giá bất động sản trong cho vay tại Ng...
Luận văn: Hoàn thiện công tác thẩm định giá bất động sản trong cho vay tại Ng...Luận văn: Hoàn thiện công tác thẩm định giá bất động sản trong cho vay tại Ng...
Luận văn: Hoàn thiện công tác thẩm định giá bất động sản trong cho vay tại Ng...
 
Báo cáo thực tập: Phân tích hoạt động cho vay mua bất động sản có tài sản đảm...
Báo cáo thực tập: Phân tích hoạt động cho vay mua bất động sản có tài sản đảm...Báo cáo thực tập: Phân tích hoạt động cho vay mua bất động sản có tài sản đảm...
Báo cáo thực tập: Phân tích hoạt động cho vay mua bất động sản có tài sản đảm...
 
Luận văn Thạc sĩ: Nâng cao hiệu quả kinh doanh bất động sản của công ty
Luận văn Thạc sĩ: Nâng cao hiệu quả kinh doanh bất động sản của công tyLuận văn Thạc sĩ: Nâng cao hiệu quả kinh doanh bất động sản của công ty
Luận văn Thạc sĩ: Nâng cao hiệu quả kinh doanh bất động sản của công ty
 
Khóa luận: Phát triển kinh doanh bất động sản của Công ty Cổ phần
Khóa luận: Phát triển kinh doanh bất động sản của Công ty Cổ phần Khóa luận: Phát triển kinh doanh bất động sản của Công ty Cổ phần
Khóa luận: Phát triển kinh doanh bất động sản của Công ty Cổ phần
 
Báo cáo thực tập: Phân tích hoạt động cho vay khách hàng cá nhân mua bất động...
Báo cáo thực tập: Phân tích hoạt động cho vay khách hàng cá nhân mua bất động...Báo cáo thực tập: Phân tích hoạt động cho vay khách hàng cá nhân mua bất động...
Báo cáo thực tập: Phân tích hoạt động cho vay khách hàng cá nhân mua bất động...
 
Luận văn: Các nhân tố ảnh hưởng đến bong bóng cổ phiếu bất động sản trên thị ...
Luận văn: Các nhân tố ảnh hưởng đến bong bóng cổ phiếu bất động sản trên thị ...Luận văn: Các nhân tố ảnh hưởng đến bong bóng cổ phiếu bất động sản trên thị ...
Luận văn: Các nhân tố ảnh hưởng đến bong bóng cổ phiếu bất động sản trên thị ...
 

Recently uploaded

Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxnhungdt08102004
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxendkay31
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNguyễn Đăng Quang
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...hoangtuansinh1
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...ThunTrn734461
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdftohoanggiabao81
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...Nguyen Thanh Tu Collection
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...Nguyen Thanh Tu Collection
 
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoabài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa2353020138
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhvanhathvc
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Nguyen Thanh Tu Collection
 

Recently uploaded (19)

Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdf
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
 
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoabài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
 

ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH

  • 1. BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC QUẢN LÝ VÀ KINH DOANH HÀ NỘI KHOA TIN HỌC Giáo viên hướng dẫn : TS. Hoàng Xuân Thảo Sinh Viên thực hiện : Đỗ Đức Chung Mã sinh viên : 99CV17 Khóa : IV Đề tài: QUẢN LÝ TÀI SẢN CỐ ĐỊNH Ngành đào tạo: Tin học quản lý
  • 2. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 2 Mục lục Nội dung Trang Lời cảm ơn 3 Lời giới thiệu 4 Phần I Giới thiệu về ngôn ngữ Visual Basic 5 1 Các công cụ để thiết kế giao diện 5 2 Lập trình vớI ngôn ngữ Visual Basic 8 Phần II Phần mềm Quản lý tài sản cố định 14 1 Mục đích và nhu cầu thực tế của phần mềm 14 2 Các chức năng chính 14 3 Cơ sở dữ liệu 16 Phần III Mã nguồn 22 1 Một số Form chính 22 2 Một số Modul chính 85 Kết luận 92
  • 3. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 3 Lời Cảm ơn Hơn bốn năm học vất vả nhưng đầy thú vị đã trôi qua. Ngày ra trường đã đến gần. Chúng tôi, những sinh viên lớp tin 4, trường Đại học Quản lý và Kinh doanh Hà Nội đã hoàn tất nốt những trang cuối của Luận văn tốt nghiệp. Luận văn này là kết quả học tập, rèn luyện của tôi trong bốn năm học và hơn 6 tháng thực tập. Để có thể hoàn thành luận văn này, tôi đã nhận được rất nhiều sự chỉ bảo, hướng dẫn của các thầy, cố giáo, sự động viên, giúp đỡ của bạn bè, gia đình… Trước hết, tôi xin được chân thành cảm ơn Thầy giáo, TS. Hoàng Xuân Thảo đã tận tình hướng dẫn và giúp đỡ tôi hoàn thành đề tài luận văn tôt nghiệp. Tôi xin được bày tỏ lòng biết ơn các thầy, cô giáo trường Đại Học Quản lý và Kinh doanh Hà Nội, đặc biệt là Khoa Tin Học, đã giảng dạy, truyền thụ những kiến thức quý báu, cũng như tạo mọi điều kiện thuận lợi cho tôi trong suốt quá trình học tập tại trường. Xin được gửi lời cảm ơn đến những người thân trong gia đình, bạn bè đã giúp đỡ, động viên tôi trong quá trình thực hiện luận văn.
  • 4. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 4 Lời giới thiệu Trong thời đại ngày nay, bất kể tổ chức, cá nhân nào, từ các doanh nghiệp tư nhân đến cơ quan nhà nước, hay các tổ chức xã hội tất cả đều không thể không sử dụng công nghệ thông tin để phát triển và tồn tại. Các hoạt động của nhà nước, mà quản lý tài sản là một phần nhỏ, cũng không nằm ngoài quy luật trên. Hàng năm, nhà nước ta đều tiến hành kiểm kê các tài sản cố định để nhằm nắm được số lượng, chất lượng, giá trị và thực trạng sử dụng của các tài sản cố định đang sử dụng trong các cơ quan nhà nước. Tài sản cố định ở đây là tất cả các tài sản có nguồn gốc từ vốn của nhà nước, đang được các đơn vị hành chính sử dụng. Việc kiểm kê này bao gồm rất nhiều công đoạn như: Xác định hiện trạng, định giá lại tài sản, lập phiếu kiểm kê, thống kê số liệu, lưu giữ dữ liệu…Công việc này đòi hỏi một số lượng lớn thời gian, nhân lực, vật lực. Chính vì vậy, tôi đã chọn đề tài Quản lý tài sản cố định làm đề tài cho Luận văn tốt nghiệp. Chương trình được viết ra nhằm mục đích tin học hoá các hoạt động trên để giảm bớt chi phí về thời gian cho công việc thống kê, tìm kiếm, lập phiếu kiểm, lưu giữ dữ liệu. Chương trình có thể áp dụng trong TP. Hà Nội. Công tác quản lý, thống kê các tài sản cố định là một bài toán lớn, phức tạp. Trong khi đó, thời gian để thực hiện đồ án là có hạn, cũng như kinh nghiệm về lập trình, hiểu biết về nghiệp vụ thực tế còn hạn chế, nên chắc chắn chương trình phần mềm và luận văn nay sẽ còn nhiều hạn chế. Tôi rất mong sẽ nhận được sự đóng góp ý kiến, chỉ bảo của các thầy, cô giáo, cũng như các bạn có quan tâm đến đề tài này.
  • 5. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 5 Phần I : Giới thiệu ngôn ngữ Visual Basic Ngôn ngữ Visual Basic ngày càng được sử dụng rộng rãi trong các đề án, chương trình thực hiện trong và ngoài nước. Visual Basic được xem là một công cụ phát triển phần mềm thông dụng hiện nay. Sau phiên bản Visual Basic 1.0 là Visual Basic 2.0, đã từng chạy nhanh hơn, dễ sử dụng hơn. Đến Visual Basic 3.0 bổ sung thêm một số phương thức đơn giản, dễ điều khiển cơ sở dữ liệu hơn. Visual Basic 4.0 bổ sung thêm hơn hỗ trợ phát triển 32 bit và bắt đầu tiến trình chuyển Visual Basic thành ngôn ngữ lập trình hướng đốI tượng. Visual Basic 5.0 bổ sung khả năng tạo các điều khiển riêng. Visual Basic 6.0 có thêm nhiều chức năng mạnh như các ứng dụng Internet/ Intranet. . .v.v….. Visual Basic gắn liền vớI khái niệm lập trình trực quan, nghĩa là khi thiết kế chương trình, bạn thấy ngay được kết quả qua từng thao tác. Visual Basic cho phép chỉnh sửa một cách đơn giản, nhanh chóng giao diện của các đốI tượng trong ứng dụng. Đó là một thuận lợI cho ngườI lập trình. VớI Visual Basic, việc lập trình trong Windows đã trở nên hiệu quả hơn và đơn giản hơn rất nhiều. Một khả năng nữa của Visual Basic là khả năng kết hợp các thư viện liên kết động DLL (Dynamic Link Library). DLL chính là phần mở rộng cho Visual Basic, tức là khi xây dựng một chương trình có một số yêu cầu mà Visual Basic không đáp ứng đầy đủ ta có thể viết các DLL để phụ thêm cho chương trình. 1 Các công cụ để thiết kế giao diện: Như chúng ta đã biết Visual Basic là ngôn ngữ lập trình có tính hướng đốI tượng nên công việc thiết kế giao diện là rất đơn giản. Chúng ta chỉ việc tiến hành đưa các đốI tượng cần thiết trong thanh công cụ vào Form bằng cách kích – kéo sau đó thay đổI các thuộc tính của chúng trên cửa sổ Properties cho phù hợp vớI mục đích lập trình. 1.1 Form: Form là một biểu mẫu của mỗI ứng dụng trong Visual Basic. Ta dùng Form nhằm mục đích định vị và sắp xếp các bộ phận trên nó khi thiết kế giao diện vớI ngườI sử dụng. Ta có thể xem Form như một bộ phận mà nó có thể chứa các bộ phận khác. Các thành phần trong Form chính của ứng dụng tương tác vớI các Form khác và các bộ phận của chúng tạo nên giao tiếp cho ứng dụng. Form chính là giao diện chính của ứng dụng, các Form khác có thể chứa các công cụ để nhập dữ liệu, xem xét v.v…
  • 6. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 6 Trong nhiều ứng dụng của Visual Basic, kích cỡ và vị trí của biểu mẫu lúc thiết kế là kích cỡ mà ngườI dùng sẽ gặp vào lúc sử dụng. Điều này, có nghĩa là Visual Basic cho phép ta thay đổI kích cỡ và di chuyển vị trí Form đến bất cứ nơi nào trên màn hình khi chạy một đề án, bằng cách thay đổI một số thuộc tính của nó trên cửa sổ thuộc tính đốI tượng (Properties Windows ). Thực tế, một trong tính năng thiếu của Visual Basic là khả năng tiến hành các thay đổI động để đáp ứng sự kiện ngườI dùng. 1.2 Toolbox (hộp công cụ): Toolbox là hộp công cụ chưa các biểu tượng, biểu thị cho các điều khiển mà ta có thể biểu mẫu là bảng chứa các đối tượng đã được định nghĩa sẵn của Visual Basic. Các đối tượng này được sử dụng trong Form để tạo thành giao diện cho các chương trình ứng dụng của Visual Basic. Ta có thể coi hộp công cụ là một hộp “đồ nghề” của người thiết kế chương trình. 1.3 Scrollbar (thanh cuốn): Scrollbar là đối tượng cho phép nhận từ người dùng một giá trị tuỳ theo vị trí con chạy trên thanh cuốn thay cho các giá trị số. Thanh cuốn có một số thuộc tính quan trọng sau:  Thuộc tính Min: xác định cận dưới của thanh cuốn.  Thuộc tính Max: xác định cận trên của thanh cuốn.  Thuộc tính Value: xác định giá trị tạm thời của thanh cuốn. 1.4 Option Button (Nút chọn): Đối tượng nút chọn (thường được dùng nhiều nút) cho phép người dùng chọn một trong những lựa chọn đưa ra. Như vậy, tại 1 thời điểm chỉ có thể là 1 trong những nút chọn đuợc chọn 1.5 Checkbox( hộp kiểm) Cũng như nút chọn, đối tượng hộp kiểm được dùng nhiều hộp một lần. Nhưng khác với nút chọn, hộp kiểm cho phép người dùng lựa một hay nhiều điều kiện. Như vậy tại 1 thời điểm có thể có nhiều hộp kiểm được chọn 1.6 Label(nhãn) Đối tượng nhãn cho phép người dùng gắn nhãn 1 bộ phận nào đó của giao diện trong lúc thiết kế giao diện cho chương trình ứng dụng . Các nhãn dùng để hiển thị thông tin không muốn người dùng thay đổi. Trong thực tế, các nhãn thường được dùng để định danh 1 hộp văn bản hoặc 1 điều khiển khác bằng việc mô tả nội dung của điều khiển đó. Một công cụ phổ biến cho việc hiển thị thông tin trợ giúp,
  • 7. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 7 1.7 Picturebox, Image ( hộp ảnh, điều khiển ảnh ) Đối tượng Image và Picturebox dùng để hiển thị ảnh . Nó cho phép người thiết kế đưa hình ảnh từ các file ảnh ( .bmp , .gif …) lên Form 1.8 Textbox ( hộp văn bản ) Đối tượng Textbox dùng làm hộp nhập dữ liệu cho phép đưa các chuỗi ký tự vào Form. Có thể dùng hộp văn bản để nhập dữ liệu hoặc hiển thị văn bản . Tất cả các công cụ trong windows về chỉnh sửa văn bản như : cut , copy , paste đều dùng trong hộp văn bản 1.9 Command Button ( nút lệnh ) Khi người dùng kích vào 1 nút lệnh trong biểu mẫu, một thao tác nào đó sẽ được thực hiện tuỳ theo thủ tục sự kiện được viết để đáp ứng sự kiện kích chuột đó . 1.10 Listbox ( hộp danh sách ) Đối tượng Listbox cho phép kết xuất các thông tin về nhiều chuỗi kí tự vào trong nó thông qua phương thức additem. Thường được dùng để hiển thị thông tin dưới dạng danh sách có liên quan với nhau. Listbox không cho phép người dùng nhập dữ liệu vào. 1.11 Combo box ( hộp kết hợp ) Công cụ này cho phép người dùng gõ vào thông tin và hiển thị thông tin . nó có tác dụng như hộp danh sách và hộp văn bản . Hộp kết hợp có 3 loại: - Hộp kết hợp thả xuống ( drop-down combo ) : là 1 hộp văn bản cho phép người dùng gõ vào, kế bên có 1 mũi tên mà khi nhấn vào nó sẽ xổ ra 1 danh sách cho phép người sử dụng chọn lựa . - Hộp kết hợp đơn giản ( simple combo ) : luôn hiển thị danh sách và cho phép người dùng gõ vào hộp văn bản. - Hộp danh sách thả xuống ( drop- down list box) : tương tự như hộp kết hợp thả xuống. Danh sách sẽ không hiển thị sẵn nếu người dùng không nhấn vào mũi tên bên cạnh. người sử dụng chỉ có thể chọn từ danh sách, gõ vào hộp văn bản thì danh sách sẽ cuộn đúng đến phần tử yêu cầu và đánh dấu nó.
  • 8. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 8 1.12 Ole ( đối tượng nhúng ) Ole là viết tắt của Object - Linking and Embedding . Nó cho phép ta nhúng toàn bộ ứng dụng và dữ liệu từ một ứng dụng khác vào chương trình . Ole không chỉ là 1 hệ thống cho phép nhúng hay kết nối dữ liệu từ 1 ứng dụng khác mà vào thời gian chạy của chương trình ta sẽ có 1 bản sao của ứng dụng đó trong chương trình của ta. Nó có khả năng automation cho phép đóng gói các đối tượng chức năng của ứng dụng để có thể sử dụng trong ứng dụng khác. 1.13 Project explorer Project explorer trong Visual Basic 6.0 giúp quản lý và định hướng các đề án, biểu mẫu, các module,…. Visual Basic cho phép tổ chức nhiều đề án trong 1 nhóm gọi là project groups. Ta có thể lưu tập hợp các đề án trong Visual Basic thành 1 tập tin nhóm đề án. Các tập tin này có phần mở rộng là .Vbg . 1.14 Propeties windows ( cửa sổ thuộc tính ) Là nơi chứa danh sách các thuộc tính của một đối tượng cụ thể. Các thuộc tính này có thể khác nhau với từng đối tượng cụ thể. Ta có thể đặt các thuộc tính cho phù hợp với các chương trình ứng dụng. 2 Lập trình với ngôn ngữ Visual Basic Ở phần một, chúng ta mới chỉ biết tuỳ biến biểu mẫu bằng cách bổ xung các điều khiển vào cho phù hợp với yêu cầu của chương trình. Tuy nhiên, đó chỉ có thể coi là bộ mặt của chương trình. Muốn chương trình chạy được thì chúng ta phải thêm vào các thành phần khác như lệnh, dữ liệu. . và cách thức thể hiển chúng trong chương trình. Khi lập trình trong Visual Basic thì phần lớn các mã được xử lý để đáp ứng sự kiện. Ví dụ như sự kiện kích chuột, bấm phím, load form…Các dòng mã thi hành trong một chương trình Visual Basic phải nằm trong các thủ tục hoặc hàm, các dòng lệnh nằm ngoài sẽ không làm việc. Toàn bộ mã lệnh được gõ vào trong cửa sổ code. 2.1 Cửa sổ code Cửa số code bao gồm các thành phần sau: Thanh tách: cửa sổ code có một thanh tách (Split bar) nằm đầu thanh cuộn dọc. Mục đích của nó là: khi các dòng mã trở nên nhiều, ta có thể chia cửa sổ code thành 2 phần.
  • 9. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 9 Hộp liệt kê Object: nằm ở đầu cửa sổ code bên trái, nó liệt kê tất cả các điều khiển có trên biểu mẫu và thêm vào một đối tượng có tên là: General. Khi thả hộp liệt kê và nhắp vào một đối tượng nào đó thì sẽ đưa ta đến phần mã viết cho đối tượng đó. Hộp Procedure: hộp này cung cấp mọi sự kiện mà đối tượng đã được lựa chọn trong hộp liệt kê object. 2.2 Intellisence: Intellisence là một công cụ thông minh, nó giúp ta đỡ mất công gõ và tra cứu. Intellisence mở các hộp liệt kê cùng với các thông tin về đối tượng mà ta đang tiếp cận. Nó có 3 phần: - QuickInfo: cho ta thông tin về cú pháp của 1 lệnh Visual Basic. Mỗi khi nhập một từ khoá theo sau là một dấu cách hoặc dấu chấm. . .một hộp thoại sẽ hiện ra cung cấp cú pháp của thành phần đó. - List properties/Methods: tính năng này đưa ra một danh sách các tính chất và phương pháp của đối tượng ngay khi ta gõ dấu chấm. - Available constant : tính năng này cung cấp một danh sách các hằng sẵn có. 2.3 Biến Trong Visual Basic, tên biến có thể dài tối đa 255 kí tự. Kí tự đầu tiên phải là một chữ cái và tên biến có thể là một tổ hợp chữ cái, chữ số và dấu gạch dưới. Không được dùng các từ khoá trong Visual Basic ( như end, print. . .) làm tên biến. Visual Basic không phân biệt chữ hoa, chữ thường. Cách khai báo biến: Dim <Tên biến> as <Kiểu biến> Phạm vi sử dụng biến phụ thuộc vào cách khai báo biến và vị trí đặt dòng lênh khai báo. 2.4 Các kiểu dữ liệu: - String: các biến string lưu giữ các kí tự. Một chuỗi có thể có một hay nhiều kí tự. - Integer: biến nguyên lưu giữ các giá trị số nguyên từ -32768 đến +32767. - Long Integer: biến số nguyên dài lưu giữ các số nguyên giữa: -2147483648 đến +214783647. - Single precision: các số có phần thập phân gồm: Single precision có độ chính xác đến 7 chữ số và double precision có độ chính xác lên đến 16 vị trí.
  • 10. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 10 - Currency: Biến tiền tệ là một kiểu mới. Kiểu này cho ta 15 chữ số trước dấu thập phân và 4 chữ số sau dấu thập phân. - Date: kiểu dữ liệu ngày tháng. - Byte: kiểu byte có thể lưu giữ các số nguyên từ 0 đến 255. - Boolean: đây là kiểu logic với các giá trị True/False. - Variant: kiểu này được thiết kế để lưu mọi dữ liệu khác nhau của Visual Basic. 2.5 Các toán tử: 2.5.1 Các toán tử tính toán Các toán tử Ý nghĩa Ví dụ + Có thể dùng để cộng hai toán hạng hoặc hai chuỗi với nhau. X=y+1 A=”A”+”B” - trừ 2 số hạng X=y-1 * Nhân 2 số hạng X=y*2 / Chia, trả về kiểu số thực Y=4/2 Chia lấy nguyên X=32(x=1) Mod Chia lấy dư X=7 mod 4 (x=3) ^ Lấy luỹ thừa X=y^3 (X=y3 ) 2.5.2 Các toán tử so sánh: Toán tử Ý nghĩa > So sánh xem số thứ nhất có lớn hơn số thứ 2 không < So sánh xem số thứ nhất có nhỏ hơn số thứ 2 không. = So sánh số thứ nhất có bằng số thứ 2 không. <> So sánh số thứ nhất có khác số thứ 2 không. >= So sánh số thứ nhất có lớn hơn hay bằng số thứ 2 không <= So sánh số thứ nhất có nhỏ hơn hay bằng số thứ 2 không 2.5.3 Các toán tử Boolean Toán tử Ý nghĩa And Chỉ nhận giá trị True nếu cả 2 số hạng đều là True Or Chỉ nhận giá trị False nếu cả 2 số hạng đều là False Not Phủ định giá trị của số hạng
  • 11. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 11 2.6 Cấu trúc điều khiển 2.6.1 Các cấu trúc chọn: 2.6.1.1 Cấu trúc If….Then… Dạng 1: If <Biểu thức logic> then < lệnh> End If Khi gặp một điều lệnh If…..then, Visual Basic sẽ kiểm tra <Biểu thức logic>, nếu là True thì máy sẽ thực hiện <lệnh> nếu kêt quả là False thì máy sẽ bỏ qua lệnh và thực hiện những lệnh sau End If. Dạng 2: If <Biểu thức logic> then <lệnh 1> else <lệnh 2> Khi gặp lệnh này, nếu <Biểu thức logic> lấy giá trị True thì thực hiện < lệnh 1> bỏ qua <lệnh 2>, còn nếu <Biểu thức logic> lấy giá trị False thì bỏ qua <lệnh 1> và thực hiện <lệnh 2>. Nhiều khi bạn phải thực hiện nhiều lệnh ứng với điều kiện là True hay False. Để làm được điều đó, ta sử dụng dạng khác của cấu trúc If …..then, có dạng tổng quát như sau: If <Biểu thức điều kiện> then <Các câu lệnh thực hiện> else <Các câu lệnh thực hiện> end if 2.6.1.2 Cấu trúc Select Case: Cú pháp: Select case <Biến hay biểu thưc> Case <giá trị 1> <Các câu lệnh> ………………… Case <giá trị 2> …………….. Case else <Các câu lện> End Select 2.6.2 Cấu trúc lặp 2.6.2.1 Cấu trúc lặp có điều kiện Cú pháp 1: While < Biểu thức điều kiện> <Các câu lệnh> Wend Cú pháp 2:
  • 12. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 12 Do <Các câu lệnh> While <Biểu thức điều kiện> <Các câu lệnh> được thực hiện lặp đi lặp lại nếu <Biểu thức điều kiện> vẫn nhận giá trị True. Do đó, để thoát khỏi vòng lặp thì trong <Các câu lệnh phải có lệnh thay đổi gia trị của <Biểu thức điều kiện>. Trong cú pháp 1, thì <Biều thức điều kiện> được xét trước khi thực hiện các câu lệnh, còn trong cú pháp 2 thì các câu lệnh được thực hiện trước khi xét đến <Biểu thức điều kiện>. 2.6.2.2 Cấu trúc For …Next Cú pháp: For <biến> = <giá trị đầu> to <giá trị cuối> [Step <bước nhẩy>] <Các câu lệnh> Next <biến> Đây là lệnh lặp biết trước số lần lặp. Khi gặp cấu trúc lệnh này, Visual Basic sẽ gán giá trị <biến> cho <giá trị đầu>, thực hiện <Các câu lệnh>, rồi tăng <biến> lên một giá trị tuỳ theo <bước nhẩy>. Vòng lặp này sẽ kết thúc khi <biến> có giá trị lớn hơn <giá trị cuối> 2.2.1 Cấu trúc For Each….Next For Each <phần tử> In <nhóm> <Khối lệnh> Next <phần tử> Khi gặp cấu trúc này, Visual Basic sẽ lặp lại <Khối lệnh> cho từng phần tử của mảng, hay các điều khiển…Người ta thường dùng cấu trúc này để duyệt nhiều đối tượng điều khiển. 2.7 Thủ tục Trong Visual Basic, một thủ tục mà trước khi ta muốn sử dụng nó thì ta phải định nghĩa nó và ta phải dùng từ khoá “Sub” để khai báo nó. Private/Public Sub <Tên thủ tục> <Các câu lệnh> End Sub <phần tử> Nếu dùng từ khoá Public, thủ tục có thể được dùng trong bất kì Form nào trong chương trình. Nếu ta khai báo bằng từ khoá Private thì thủ tục chỉ có thể được dùng được trong Form,module chứa nó mà thôi. Giá trị được truyền cho thủ tục thông qua tham số. Một thủ tục có thể có hoặc không có tham số. Khi gọi một thủ tục có tham số, ta phải truyền giá
  • 13. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 13 trị cho tham số của thủ tục đó. Trong Visual Basic, có 2 cách để truyền thám số : By Ref ( truyền tham chiếu) và By Val ( truyền tham trị ). Private/Public Sub <Tên thủ tục> (<Tham số1> as <Kiểu>, <Tham số 2> as <Kiểu 2>, v.v…) <Các câu lệnh> End Sub 2.8 Hiển thị và nhận thông tin Ta sử dụng các hộp đối thoại để hiển thị thông tin cho người dùng hoặc nhận thông tin. Trong Visual Basic có 4 hộp thoại, đó là: 2.8.1 Thông điệp: (MesageBox) Là một hộp thoại đơn giản nhất, gồm 2 loại: - Chỉ cung cấp thông tin - Tương tác với người sử dụng. 2.8.2 Hộp nhập (InputBox) InputBox dùng để nhập thông tin từ người dùng, nó bao gồm một dòng thông báo, hộp soạn thảo và 2 nút “OK” và “Cancel”. Nó có mặt hạn chế là chỉ cho người sử dụng nhập rất ít thông tin. 2.8.3 Các hộp thoại thông dụng Bởi hộp thoại này xuất hiện mọi nơi, nên thay vì phải viết chương trình nhiều lần, Windows chứa chúng trong cùng một DLL, Comdlg32.dll hay Comdlg.ocx Có 6 hộp thoại: - Mở tập tin (File Open) - Lưu tập tin (File save). - Chọn mầu (Color). - Chọn phông (Font). - Trợ giúp (Help). - In ấn (Print). 2.8.4 Hộp thoại hiệu chỉnh (Custom Dialog). Đây là loại hộp đối thoại do người lập trình định nghĩa để tương thích với yêu cầu nhận thông tin của người sử dụng. Nó có ưu điểm là ta có thể thiết kế theo ý thích. Trở ngại của nó là khi thi hành từng biểu mẫu thì sẽ sử dụng tài nguyên hệ thống như bộ nhớ, thời gian CPU. Nếu dùng nhiều hộp thoại hiệu chỉnh trong ứng dụng có thể mất tài nguyên hệ thống và dễ bị treo máy.
  • 14. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 14 Phần II: Phần mềm Quản lý tài sản cố định 1 Mục đích và nhu cầu thực tế của phần mềm Việc quản lý tài sản cố định đang sử dụng trong các cơ quan hành chính là một hoạt động quan trọng trong các hoạt động của nhà nước. Chính vì vậy, hàng năm, nhà nước ta đều tiến hành công việc kiểm kê các tài sản này, để nắm được số lượng, chất lượng, hiện trạng sử dụng. Từ đó đưa ra các số liệu thống kê nhằm sử dụng tài sản cố định một cách hiệu quả, giảm thiểu các chi phí, thất thoát. Nếu như thực hiện công việc này theo cách cổ điển bằng giấy tờ, sổ sách thì sẽ cần đến rất nhiều nhân lực, vật lực cho việc nhập số liệu, tính toán, lưu giữ chứng từ. Và cho dù có đầy đủ nhân lực, vật lực, thì công việc trên sẽ tiêu tốn một thời gian rất lớn. Khi có nhu cầu tìm kiếm, thống kê, ta không thể tìm kiếm nhanh chóng trong một đống giấy tờ. Trong khi đấy, ta vẫn không đảm bảo là tránh được các sai sót. Vì vậy, việc áp dụng công nghệ thông tin vào công việc trên là điều tất yếu. Khi phần mềm “Quản lý tài sản cố định ra đời” sẽ khắc phục được các nhược điểm của cách làm việc cổ điển. Đó là: - Giảm thiểu nhân lực, vật lực, thời gian cho việc thống kê, quản lý tài sản. - Tránh được các sai sót do con người gây ra. - Đưa ra các số liệu tìm kiếm, thống kê trong thời gian nhanh nhất. 2 Các chức năng chính của Phần mềm Quản lý TSCĐ Phần mềm có các chức năng chính sau: - Quản lý quyền truy cập. - Quản lý các đơn vị hành chính. (về mặt tài sản) - Quản lý các tài sản cố định. - Quản lý các giao dịch. - Tìm kiếm, thống kê. - In báo cáo theo mẫu của Bộ tài chính Sơ đồ chức năng:
  • 15. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 15 2.1 Quản lý quyền truy cập. Vì chương trình Quản lý TSCĐ phục vụ cho việc quản lý, thống kê tài sản cố định do các cơ quan, đơn vị nhà nước sử dụng, nên bảo mật dữ liệu là một công tác vô cùng quan trọng. Сhức năng quản lý quyền truy cập của những người được phép sử dụng chương trình có thể, cho phép, hạn chế, hoặc không cho phép sử dụng các chức năng của chương trình. Ta có thể chia những người được phép sử dụng chương trình thành 3 nhóm chính: người quản trị, người sử dụng cấp cao và người sử dụng thông thường.  Người sử dụng thông thường: là nhóm người có quyền thấp nhất. Những người thuộc nhóm này chỉ có quyền được xem các dữ liệu của chương trình.  Người sử dụng cấp cao: là nhóm người có quyền như người sử dụng thông thường nhưng được phép nhập, chỉnh sửa dữ liệu.  Người quản trị: Đây là nhóm người có quyền cao nhất. Ngoài các quyền của nhóm người sử dụng cấp cao, nhóm này còn được phép quản lý các nhóm người khác. (Như được phép thêm, xoá, sửa chữa dữ liệu của các người dùng.) 2.2 Quản lý đơn vị hành chính Các đơn vị hành chính ở đây chính là các đơn vị đang quản lý, sử dụng các tài sản cố định của nhà nước. Việc quản lý này được tiến hành theo nghành dọc. Chức năng này cho phép nắm được các thông tin của từng đơn vị, như tên, địa chỉ, số điện thoại… của tưng đơn vị Các chức năng QL Quyền truy cập QL Đơn vị hành chính QL Tài sản cố định QL Giao dịch Tìm kiếm, thống kê In Báo cáo
  • 16. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 16 2.3 Quản lý Tài sản cố định Đây là chức năng chính của chương trình. Chức năng này có liên quan trực tiếp đến chức năng trên. Bởi vì, chúng ta quản lý tài sản theo từng đơn vị. Để dễ dàng cho việc quản lý, nhà nước đã quy định chia tài sản cố định thành 7 loại chính: Đất đai, nhà cửa, vật kiến trúc, phương tiện vận tải, máy móc thiết bị, các tài sản cố định khác. Vì đặc điểm riêng, ta có thể phân chia tài sản cố định ra thành tài sản là đất và tài sản không là đất. Chức năng này cho phép nhập mới, chỉnh sửa một cách chi tiết về các tài sản cố định. Giúp cho người quản lý nắm được chi tiêt các đặc điểm của từng tài sản, như: Tên, giá trị, thông số kỹ thuật…Trong chức năng này, chương trình cho phép tính toán hao mòn của các tài sản cố định. 2.4 Quản lý Giao dịch Chức năng Quản lý giao dịch cho phép ta quản lý được việc mua, bán các tài sản giữa các đơn vị hành chính với nhau cũng như giữa các đơn vị hành chính và các đơn vị, công ty khác. Cho phép ta nắm được các tài sản thanh lý, huỷ… 2.5 Tìm kiếm, thống kê Đây là chức năng trợ giúp người quản lý chương trình có thể tìm kiếm các tài sản, các đơn vị có trong chương trình. Ngoài ra, nó còn cho phép đưa ra các số liệu thống kê theo yêu cầu. Với chức năng này, ta có thể có cái nhìn từ tông thể đến chi tiết về các tài sản cố định của từng đơn vị cũng như từng loại tài sản cố định. Từ đó nắm được số lượng, chất lượng, thực trạng của các tài sản. 2.6 In báo cáo theo mẫu của Bộ Tài Chính. Chức năng này cho phép in ra các báo cáo theo mẫu của Bộ Tài Chính. 3 Cơ sở dữ liệu Mô hình quan hệ trong cơ sở dữ liệu
  • 17. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 17 3.1 Bảng tblDonvi: Lưu giữ thông tin về các đơn vị. 3.2 Bảng tblDonviNgoai 3.3 Bảng tblHopdong
  • 18. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 18 3.4 Bảng tblHopdongBenA 3.5 Bảng tblHopdongBenB 3.6 Bảng tblHopdongMaDVN 3.7 Bảng tblLoaiTS_Detail 3.8 Bảng tblLoaiTS_Master
  • 19. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 19 3.9 Bảng tblNhom 3.10 Bảng tblPhieu 3.11 Bảng tblSe_Group 3.12 Bảng tblTongHopDat_Detail
  • 20. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 20 3.13 Bảng tblTongHopDat_Master 3.14 Bảng tblTongHopTSCD_KLD_Detail
  • 21. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 21 3.15 Bảng tblTongHopTSCD_KLD_Master 3.16 Bảng tblTonghopTSCD_KLD_Detail2
  • 22. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 22 Phần III: Mã nguồn Sau đây là một số Form và Modul quan trọng trong chương trình. 1 Một số Form chính 1.1 Form: MDIForm Đây là giao diện chính của chương trình: Public BExit As Boolean Private Sub MDIForm_Load() Path = App.Path & "csdl.mdb" Me.Icon = LoadResPicture(1, vbResIcon) BExit = False Skin = 0 MaDV = "H0000" helppath = App.Path & "helphelp.chm" MDIload Init_icon Set_Icon Set_Panel Set_Code
  • 23. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 23 Set_Font End Sub Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then Call mnuThoat_Click Cancel = Not BExit End If End Sub Private Sub mnuAbout_Click() frmAbout.Show End Sub Private Sub mnuAdmin_Click() frmAdmin.Show End Sub Private Sub mnuBC1A_Click() Report3 mnuTH3B.Checked = False mnuBC1B.Checked = False mnuBC2.Checked = False mnuBC1A.Checked = True mnuTH4.Checked = False mnuTH3A.Checked = False End Sub Private Sub mnuBC1B_Click() report4 mnuTH3B.Checked = False mnuBC1B.Checked = True mnuBC2.Checked = False mnuBC1A.Checked = False mnuTH4.Checked = False mnuTH3A.Checked = False End Sub Private Sub mnuBC2_Click() Report1 mnuTH3B.Checked = False mnuBC1B.Checked = False mnuBC2.Checked = True mnuBC1A.Checked = False mnuTH4.Checked = False
  • 24. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 24 mnuTH3A.Checked = False End Sub Private Sub mnuChonDV_Click() 'Call CloseActiveForm("frmChonDV") frmChonDV.Show End Sub Private Sub mnuDat_Click() 'Call CloseActiveForm("frmNhapDS") frmNhapDS.Show frmNhapDS.SSTab1.Tab = 0 End Sub Private Sub mnuDonvi_Click() 'Call CloseActiveForm("frmNhapDV") frmDonVi.Show End Sub Private Sub mnuFont_Click() Dim f As Form Dim a As Control ' Set Cancel to True. Dialog.CancelError = True On Error GoTo ErrHandler ' Set the Flags property. Dialog.Flags = cdlCFBoth Or cdlCFEffects ' Display the Font dialog box. Dialog.ShowFont If frmMDI.Dialog.FontSize > 14 Then frmMDI.Dialog.FontSize = 14 If frmMDI.Dialog.FontName <> "" Then Default.Name = frmMDI.Dialog.FontName Default.Bold = frmMDI.Dialog.FontBold Default.Italic = frmMDI.Dialog.FontItalic Default.Size = frmMDI.Dialog.FontSize End If For Each f In Forms If f.Name <> "frmMDI" Then For Each a In f.Controls Set_Child_font f, a Next End If Next ErrHandler: ' User pressed Cancel button. Resume Next
  • 25. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 25 End Sub Private Sub mnuGiaodich_Click() 'Call CloseActiveForm("frmGiaodich") frmGiaoDich.Show End Sub Private Sub mnuKK1_Click() Report1 End Sub Private Sub mnuHaomon_Click() frmHaoMon.Show End Sub Private Sub mnuHuongDan_Click() HH_DISPLAY_Click HH_HELP_Click End Sub Private Sub mnuKLD_Click() 'Call CloseActiveForm("frmNhapDS") frmNhapDS.Show frmNhapDS.SSTab1.Tab = 1 End Sub Private Sub mnuLoai_Click() 'Call CloseActiveForm("frmNhapTS") frmChonTS.Show End Sub Private Sub mnuLogOn_Click() frmLogin.Show vbModal End Sub Private Sub mnuLogOut_Click() 'CloseActiveForm Me.Name GroupCode = 0 Set_Menu End Sub Private Sub SkinChange() Dim f As Form For Each f In Forms If f.Name <> "frmMDI" Then Set_Skin f Next End Sub
  • 26. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 26 Private Sub mnuskin1_Click() mnuskin1.Checked = True mnuSkin2.Checked = False mnuSkin3.Checked = False Skin = 0 SkinChange End Sub Private Sub mnuSkin2_Click() mnuSkin2.Checked = True mnuskin1.Checked = False mnuSkin3.Checked = False Skin = 1 SkinChange End Sub Private Sub mnuSkin3_Click() mnuSkin3.Checked = True mnuSkin2.Checked = False mnuskin1.Checked = False Skin = 2 SkinChange End Sub Private Sub mnuStatus_Click() StatusBar.Visible = Not StatusBar.Visible mnuStatus.Checked = Not mnuStatus.Checked End Sub Private Sub mnThanhmenu_Click() Dim ctl As Control On Error GoTo a If mnuThanhmenu.Checked Then For Each ctl In Me.Controls If TypeOf ctl Is Menu Then ctl.Visible = False End If Next mnuThanhmenu.Checked = False Else For Each ctl In Me.Controls If TypeOf ctl Is Menu Then ctl.Visible = True End If
  • 27. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 27 Next mnuThanhmenu.Checked = True End If a: Resume Next End Sub Private Sub mnuTH3A_Click() Report6 mnuTH3B.Checked = False mnuBC1B.Checked = False mnuBC2.Checked = False mnuBC1A.Checked = False mnuTH4.Checked = False mnuTH3A.Checked = True End Sub Private Sub mnuTH3B_Click() Report5 mnuTH3B.Checked = True mnuBC1B.Checked = False mnuBC2.Checked = False mnuBC1A.Checked = False mnuTH4.Checked = False mnuTH3A.Checked = False End Sub Private Sub mnuTH4_Click() Report2 mnuTH3B.Checked = False mnuBC1B.Checked = False mnuBC2.Checked = False mnuBC1A.Checked = False mnuTH4.Checked = True mnuTH3A.Checked = False End Sub Private Sub mnuThoat_Click() If MMsgbox("B¹n thùc sù muèn tho¸t khái ch-¬ng tr×nh ?", vbYesNo, "Tho¸t ch-¬ng tr×nh !!!") = vbYes Then BExit = True CloseActiveForm ("frmMDI") Unload Me End If End Sub
  • 28. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 28 Private Sub mnuThongke_Click() frmThongKeDV.Show End Sub Private Sub mnuTimDV_Click() 'Call CloseActiveForm("frmTimkiem") frmTimKiem.Show frmTimKiem.SSTab1.Tab = 0 End Sub Private Sub mnuTimGD_Click() frmTimKiemGD.Show End Sub Private Sub mnuTimPhieu_Click() 'Call CloseActiveForm("frmTimkiem") frmTimKiem.Show frmTimKiem.SSTab1.Tab = 2 End Sub Private Sub mnuTimTS_Click() 'Call CloseActiveForm("frmTimkiem") frmTimKiem.Show frmTimKiem.SSTab1.Tab = 1 End Sub Private Sub mnuTKBD_Click() 'Call CloseActiveForm("frmThongKeKQ") frmDothi.Show End Sub Private Sub mnuTKSL_Click() 'Call CloseActiveForm("frmThongKeKQ") frmThongKeKQ.Show 'frmThongKeKQ.SSTab1.Tab = 0 End Sub Private Sub mnuToolbar_Click() mnuToolbar.Checked = Not mnuToolbar.Checked Toolbar.Visible = Not Toolbar.Visible End Sub
  • 29. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 29 Public Sub amnuSep10_Click(Index As Integer) On Error GoTo a Dim i As Integer Dim f As Form If mnuSep10.UBound > 0 Then For i = 1 To mnuSep10.UBound If mnuSep10(i).Checked And i <> Index Then disp(Index) = i mnuSep10(i).Checked = False Next mnuSep10(Index).Checked = True For Each f In Forms If f.Caption = mnuSep10(Index).Caption And f.Caption <> "" Then f.Show f.SetFocus End If Next End If a: Resume Next End Sub Private Sub mnuTreeView_Click() 'Call CloseActiveForm("frmTreeView") frmTreeView.Show End Sub Private Sub amnuWin_Click(Index As Integer) Dim i As Integer Dim f As Form For i = 1 To 4 mnuWin(i).Checked = False Next Select Case Index Case 4: ' Center For i = 1 To mnuSep10.UBound For Each f In Forms If f.Caption = mnuSep10(i).Caption Then Child_Center f Next Next End Select mnuWin(Index).Checked = True End Sub Private Sub Timer1_Timer() Dim mnu As Control On Error GoTo Ehandle
  • 30. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 30 If none <> 0 Then frmLogin.Show vbModal Else For Each mnu In frmMDI.Controls If TypeOf mnu Is Menu Then mnu.Visible = False Next MMsgbox "H·y t¹o ng-êi sö dông míi ®Ó ®¨ng nhËp hÖ thèng", vbOKOnly, "B¹n lµ ng-êi ®Çu tiªn sö dông ch-¬ng tr×nh" frmAddUser.Show End If Timer1.Interval = 0 Ehandle: Resume Next End Sub Private Sub Timer2_Timer() HienDV End Sub Private Sub Toolbar_ButtonClick(ByVal Button As MSComctlLib.Button) Dim i As Integer If Button.Value = tbrUnpressed Then For i = 1 To Me.Toolbar.buttons.Count Me.Toolbar.buttons(i).Value = tbrUnpressed Next Select Case Button.key Case "ChonDV": mnuChonDV_Click Case "Thongke": mnuThongke_Click Case "Timkiem": mnuTimDV_Click Case "Baocao": frmBaocao.Show Case "Taisan": mnuDat_Click End Select 'Button.Value = tbrPressed End If End Sub 1.2 Form : frmTreeview
  • 31. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 31 Option Explicit Dim NodX As Node Dim Li As ListItem Dim rs As ADODB.Recordset Dim root As String Dim code As String Dim nname As String Dim DV As String Dim Ma As String Dim rsDat As ADODB.Recordset Dim rsKDat As ADODB.Recordset Dim qryDat As String Dim qryKDat As String Dim i As Integer Private Sub Command1_Click() Child_Unload Me End Sub Private Sub Form_Load() Set rs = New ADODB.Recordset rs.Open "SELECT tblDonVi.*, tblDonVi.CapDV From tblDonVi ORDER BY tblDonVi.CapDV;", cnn, adOpenDynamic, adLockOptimistic
  • 32. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 32 qryDat = "SELECT tblTongHopDat_Master.*, tblLoaiTS_Detail.TenTS, tblLoaiTS_master.TenloaiTS, tblDonVi.TenDV " _ & "FROM ((tblLoaiTS_Detail INNER JOIN tblLoaiTS_master ON tblLoaiTS_Detail.MaloaiTS = tblLoaiTS_master.MaloaiTS) INNER JOIN tblTongHopDat_Master ON tblLoaiTS_Detail.MaTS = tblTongHopDat_Master.MaTS) INNER JOIN tblDonVi ON tblTongHopDat_Master.MaDV = tblDonVi.MaDV;" qryKDat = "SELECT tblLoaiTS_Detail.TenTS, tblLoaiTS_master.TenloaiTS, tblDonVi.TenDV, tblTongHopTSCD_KLD_Master.* " _ & "FROM (tblLoaiTS_Detail INNER JOIN tblLoaiTS_master ON tblLoaiTS_Detail.MaloaiTS = tblLoaiTS_master.MaloaiTS) INNER JOIN (tblDonVi INNER JOIN tblTongHopTSCD_KLD_Master ON tblDonVi.MaDV = tblTongHopTSCD_KLD_Master.MaDV) ON tblLoaiTS_Detail.MaTS = tblTongHopTSCD_KLD_Master.MaTS;" Set rsDat = New ADODB.Recordset rsDat.Open qryDat, cnn, adOpenDynamic, adLockOptimistic Set rsKDat = New ADODB.Recordset rsKDat.Open qryKDat, cnn, adOpenDynamic, adLockOptimistic rs.MoveFirst Set NodX = Tree.Nodes.Add(, , rs!MaDV, rs!TenDV) rs.MoveNext While Not rs.EOF root = rs!DonViCT code = rs!MaDV nname = rs!TenDV Set NodX = Tree.Nodes.Add(root, tvwChild, code, nname) rs.MoveNext Wend Call MakeColumns Child_Load Me End Sub Private Sub MakeColumns() ' Clear the ColumnHeaders collection. List.ColumnHeaders.Clear ' Add four ColumnHeaders. 'List.ColumnHeaders.Add , , "STT", 550 List.ColumnHeaders.Add , , "M· TS", 1000 List.ColumnHeaders.Add , , "Tªn TS", 3000 List.ColumnHeaders.Add , , "Lo¹i TS", 2000 'List.ColumnHeaders.Add , , "Nhãm ", 2000 ' Set the EventFlag variable so this doesn't get done again and again.
  • 33. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 33 End Sub Private Sub AddListItem(ByRef xItem As ListItem, ByRef xRec As ADODB.Recordset, i As Integer) ' Add a ListItem setting its text, icon and small icon. Then ' add three ListSubItems setting the Key and Text of each. Set xItem = List.ListItems.Add xItem.Text = xRec!MaTS 'xItem.ListSubItems.Add key:="Ma TS", Text:=xRec!MaTS xItem.ListSubItems.Add key:="Tªn TS", Text:=xRec!TenTS xItem.ListSubItems.Add key:="Lo¹i TS", Text:=xRec!TenloaiTS 'xItem.ListSubItems.Add key:="Nhãm", Text:=xRec!Tennhom End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single) Mre Me End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then Child_Unload Me End Sub Private Sub List_ColumnClick(ByVal ColumnHeader As ColumnHeader) If List.SortOrder = 0 Then List.SortOrder = 1 Else List.SortOrder = 0 List.SortKey = ColumnHeader.Index - 1 ' Set Sorted to True to sort the list. List.Sorted = True End Sub Private Sub Mybutton1_Click() Command1_Click End Sub Private Sub Timer1_Timer() If DV <> Tree.SelectedItem Then i = 0 DV = Tree.SelectedItem List.ListItems.Clear If Not (rsDat.BOF And rsDat.EOF) Then rsDat.MoveFirst If Not (rsKDat.BOF And rsKDat.EOF) Then rsKDat.MoveFirst While Not rsDat.EOF If rsDat!TenDV = DV Then Ma = rsDat!MaDV i = i + 1 AddListItem Li, rsDat, i
  • 34. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 34 End If rsDat.MoveNext Wend While Not rsKDat.EOF If rsKDat!TenDV = DV Then Ma = rsKDat!MaDV i = i + 1 AddListItem Li, rsKDat, i End If rsKDat.MoveNext Wend End If End Sub Private Sub Tree_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single) Dim Node As MSComctlLib.Node If Button = 2 Then Button = 1 frmPopUpMenu.SetDV DV, Ma Me.PopupMenu frmPopUpMenu.mnuDonvi End If End Sub 1.3 Form: frmNhapDat
  • 35. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 35 Dim sD As String Dim rsPh As ADODB.Recordset Dim rsDat As ADODB.Recordset Dim rsDat0 As ADODB.Recordset Dim AddFlag As Boolean Dim rsDV As ADODB.Recordset Dim rsTS As ADODB.Recordset Dim rsNhom As ADODB.Recordset Dim Dongia(100) As String Dim MaNhom(100) As String Dim nhom As String Private Sub cboNhomDat_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub cboNhomDat_GotFocus() CEmpty txtDiachi
  • 36. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 36 If cboNhomDat.ListIndex = -1 Then cboNhomDat.ListIndex = 0 Hien " Chän nhãm ®Êt t-¬ng øng cho tµi s¶n ®Êt" End Sub Private Sub cmdGhiDL_Click() If Dat = 1 Then rsTS.AddNew rsPh.AddNew rsDat.AddNew rsDat0.AddNew End If 'rsPh!MaPhieu = txtMaphieu.Text rsDat0!MaDV = MaDV rsDat!diachits = txtDiachi.Text rsPh!NgayLP = txtNgayLP.Text rsPh!TenNLP = txtTenNLP.Text rsDat!DientichKT = Val(txtDienTichTKT.Text) rsDat!DientichTT = Val(txtDientichTTT.Text) rsDat!GiatriTT = Val(txtGiaTriTT.Text) rsDat!GiayCN = Val(txtGiayCN.Text) rsDat!KoGiayCN = Val(txtKoGiayCN.Text) rsDat!ChiphiKT = Val(txtChiphiKT.Text) rsDat!Tang = Val(txtTang.Text) rsDat!Giam = Val(txtGiam.Text) rsDat!CSD = Val(txtCSD.Text) rsDat!Thue = Val(txtThue.Text) rsDat!Chia = Val(txtChia.Text) rsDat!Xaydungnha = Val(txtXaydungnha.Text) rsDat!Sudung = Val(txtSudung.Text) rsDat!Dichvu = Val(txtDichvu.Text) rsDat!MDC = Val(txtMDC.Text) rsDat!SDMDK = Val(txtSDMDK.Text) rsDat!GiatriCN = Val(txtGiatriCN.Text) rsDat!GiatriCCN = Val(txtGiatriCCN.Text) rsTS!TenTS = txtTenTS.Text If Dat = 1 Then CodeTS(1) = TangCode(CodeTS(1), 4) CodeP = TangCode(CodeP, 5) rsDat0!MaTS = CodeTS(1) rsDat0.Update rsTS!MaloaiTS = "001" rsPh!Maphieu = CodeP rsDat0!Maphieu = rsPh!Maphieu
  • 37. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 37 rsTS!MaTS = rsDat0!MaTS rsDat0.Update End If rsPh.Update rsTS!MaNhom = MaNhom(cboNhomDat.ListIndex) rsDat!STT = rsDat0!STT rsDat.Update rsTS.Update cmdNhapMoi.Enabled = True Mybutton3.Enabled = True Mybutton3.Refresh Dat = 0 Set_Code End Sub Private Sub cmdNhaplai_Click() Dim c As Control If Dat = 1 Then For Each c In Me.Controls If TypeOf c Is TextBox And c.Name <> txtTenDV And c.Name <> txtMaphieu Then c.Text = "" End If Next End If If Dat = 0 Then Form_Load End Sub Private Sub cmdNhapMoi_Click() Dim c As Control For Each c In Me.Controls If TypeOf c Is TextBox And c.Name <> "txtTenDV" And c.Name <> "txtMaphieu" Then c.Text = "" End If Next Dat = 1 Form_Load If SSTab1.Tab = 1 Then SSTab1.Tab = 0 AddFlag = True End Sub
  • 38. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 38 Private Sub cmdThoat_Click() Child_Unload frmNhapDat frmNhapDS.SSTab1.Tab = 0 frmNhapDS.Show End Sub Private Sub Form_Load() Child_Load Me Set rsPh = New ADODB.Recordset rsPh.Open "Select * from tblPhieu", cnn, adOpenDynamic, adLockOptimistic Set rsDat0 = New ADODB.Recordset rsDat0.Open "select * from tblTongHopDat_Master", cnn, adOpenDynamic, adLockOptimistic Set rsDat = New ADODB.Recordset rsDat.Open "Select * from tblTongHopDat_Detail", cnn, adOpenDynamic, adLockOptimistic Set rsTS = New ADODB.Recordset rsTS.Open "tblLoaiTS_Detail", cnn, adOpenDynamic, adLockOptimistic Set rsDV = New ADODB.Recordset rsDV.Open "tblDonVi", cnn, adOpenDynamic, adLockOptimistic Set rsNhom = New ADODB.Recordset rsNhom.Open "Select * from tblNhom", cnn, adOpenDynamic, adLockOptimistic If Dat = 0 Then rsDat0.MoveFirst rsDat.MoveFirst While rsDat0!MaTS <> MaTS rsDat.MoveNext rsDat0.MoveNext Wend rsTS.MoveFirst While rsTS!MaTS <> MaTS rsTS.MoveNext Wend Set rsPh = New ADODB.Recordset rsPh.Open "Select * from tblPhieu where tblPhieu!MaPhieu ='" & rsDat0!Maphieu & "' ;", cnn, adOpenDynamic, adLockOptimistic Set rsNhom = New ADODB.Recordset rsNhom.Open "Select * from tblNhom where tblNhom!Manhom ='" & rsTS!MaNhom & "' ;", cnn, adOpenDynamic, adLockOptimistic txtDiachi.Text = rsDat!diachits txtNgayLP.Text = Format(rsPh!NgayLP, "dd/mm/yyyy") txtTenNLP.Text = rsPh!TenNLP txtDienTichTKT.Text = rsDat!DientichKT txtDientichTTT.Text = rsDat!DientichTT txtGiaTriTT.Text = rsDat!GiatriTT
  • 39. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 39 txtGiayCN.Text = rsDat!GiayCN txtKoGiayCN.Text = rsDat!KoGiayCN txtChiphiKT.Text = rsDat!ChiphiKT txtTang.Text = rsDat!Tang txtGiam.Text = rsDat!Giam txtCSD.Text = rsDat!CSD txtXaydungnha.Text = rsDat!Xaydungnha txtMDC.Text = rsDat!MDC txtSDMDK.Text = rsDat!SDMDK txtDichvu.Text = rsDat!Dichvu txtThue.Text = rsDat!Thue txtChia.Text = rsDat!Chia txtGiatriCN.Text = rsDat!GiatriCN txtGiatriCCN.Text = rsDat!GiatriCCN txtTenTS = rsTS!TenTS txtSudung.Text = rsDat!Sudung txtMaphieu.Text = rsPh!Maphieu txtDongia.Text = rsNhom!Dongia nhom = rsNhom!MaNhom End If Set rsNhom = New ADODB.Recordset rsNhom.Open "Select * from tblNhom where tblnhom!MaloaiTS = '001' ;", cnn, adOpenDynamic, adLockOptimistic With rsDV If .EOF And .BOF Then .AddNew Else .MoveFirst While .EOF = False If rsDV!MaDV = MaDV Then txtTenDV.Text = rsDV!TenDV End If .MoveNext Wend End If End With If Dat = 1 Then txtMaphieu = TangCode(CodeP, 5) Dim i As Integer cboNhomDat.Clear i = 0 With rsNhom If Not (.EOF And .BOF) Then .MoveFirst While .EOF = False cboNhomDat.AddItem !tennhom Dongia(i) = !Dongia
  • 40. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 40 MaNhom(i) = !MaNhom i = i + 1 .MoveNext Wend End If End With If cboNhomDat.ListCount > 0 Then For i = 0 To cboNhomDat.ListCount - 1 If MaNhom(i) = nhom Then cboNhomDat.ListIndex = i Next End If End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Mre Me End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then cmdThoat_Click End Sub Private Sub Mybutton1_Click() cmdGhiDL_Click End Sub Private Sub Mybutton2_Click() cmdNhaplai_Click End Sub Private Sub Mybutton3_Click() cmdNhapMoi_Click End Sub Private Sub Mybutton4_Click() cmdThoat_Click End Sub Private Sub Text3_Change() End Sub
  • 41. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 41 Private Sub Timer1_Timer() 'nut ghi du lieu On Error Resume Next Dim c As Control Dim ok As Boolean ok = True For Each c In Me.Controls If TypeOf c Is TextBox Or TypeOf c Is ComboBox Then If c.Text = "" Then ok = False End If Next If ok Then cmdGhiDL.Enabled = True Else cmdGhiDL.Enabled = False End If ' tinh don gia cua cac loai gia tri If cboNhomDat.ListIndex <> -1 Then txtDongia = Dongia(cboNhomDat.ListIndex) If txtDientichTTT <> "" Then txtGiaTriTT.Text = Val(txtDientichTTT.Text) * Val(txtDongia.Text) Else txtGiaTriTT.Text = "" End If If txtDienTichTKT <> "" Then txtChiphiKT.Text = Val(txtDienTichTKT.Text) * Val(txtDongia.Text) Else txtChiphiKT.Text = "" End If If txtGiayCN <> "" Then txtGiatriCN = Val(txtGiayCN.Text) * Val(txtDongia.Text) Else txtGiatriCN.Text = "" End If If txtKoGiayCN <> "" Then txtGiatriCCN.Text = Val(txtKoGiayCN.Text) * Val(txtDongia.Text) Else txtGiatriCCN.Text = "" End If End If 'tinh dien tich xay dung nha If txtXaydungnha.Text <> "" Then txtSudung.Text = Val(txtDientichTTT.Text) - Val(txtXaydungnha.Text) Else
  • 42. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 42 txtSudung.Text = "" End If 'tinh dien tich tang giam If txtDienTichTKT.Text <> "" Then Dim i As Variant i = Val(txtDientichTTT.Text) - Val(txtDienTichTKT.Text) If i > 0 Then txtTang.Text = i txtGiam.Text = 0 ElseIf i < 0 Then txtGiam.Text = -i txtTang.Text = 0 ElseIf i = 0 Then txtTang.Text = i txtGiam.Text = i End If End If 'xet dieu kien cua txtdientichttt If Val(txtDientichTTT.Text) < Val(txtXaydungnha.Text) Then txtDientichTTT.Text = "" txtDientichTTT.SetFocus txtXaydungnha.Text = "" End If If txtDientichTTT.Text = "" Then txtXaydungnha.Text = "" txtSudung.Text = "" txtTang.Text = "" txtGiam.Text = "" txtMDC.Text = "" txtGiayCN.Text = "" txtSDMDK.Text = "" 'xet dieu kien dien tich txtSDMDK If Dat = 0 Then If Val(txtSDMDK.Text) - Val(txtDichvu.Text) < Val(txtThue.Text) Then txtDichvu.Text = "" txtDichvu.SetFocus txtThue.Text = "" txtChia.Text = "" End If End If End If
  • 43. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 43 ' xet dieu kien txtMDC If Val(txtMDC.Text) > Val(txtDientichTTT.Text) Then txtMDC.SetFocus txtMDC.Text = "" txtSDMDK.Text = "" txtDichvu.Text = "" txtChia.Text = "" txtThue.Text = "" txtCSD.Text = "" End If If txtMDC.Text = "" Then txtSDMDK.Text = "" txtDichvu.Text = "" txtThue.Text = "" txtChia.Text = "" txtCSD.Text = "" End If ' tinh dien tich dich vu, thue, chia If txtDichvu.Text <> "" Then If Val(txtDichvu.Text) = Val(txtSDMDK.Text) Then txtThue.Text = 0 txtThue.Enabled = False txtChia.Text = 0 End If End If If txtThue <> "" Then If txtThue.Text < Val(txtSDMDK.Text) - Val(txtDichvu.Text) Then txtChia.Text = Val(txtSDMDK.Text) - Val(txtDichvu.Text) - Val(txtThue.Text) End If If txtThue.Text > Val(txtSDMDK.Text) - Val(txtDichvu.Text) Then txtThue.SetFocus txtThue.Text = "" End If If Val(txtThue.Text) + Val(txtDichvu.Text) = Val(txtSDMDK.Text) Then txtChia.Text = 0 End If End If
  • 44. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 44 End Sub Private Sub txtChia_GotFocus() CEmpty txtMDC End Sub Private Sub txtChia_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtChiphiKT_Click() cmdNhaplai.Enabled = True Mybutton2.Enabled = True End Sub Private Sub txtChiphiKT_GotFocus() CEmpty txtDienTichTKT End Sub Private Sub txtChiphiKT_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtCSD_GotFocus() CEmpty txtMDC End Sub Private Sub txtCSD_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtDiachi_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub
  • 45. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 45 Private Sub txtDiaChi_GotFocus() CEmpty txtTenTS Hien " NhËp ®Þa chØ khu ®Êt vµo ®©y" End Sub Private Sub txtDichvu_Change() If txtDichvu.Text = "" Then txtChia.Text = "" txtThue.Text = "" End If If Val(txtDichvu.Text) > Val(txtSDMDK.Text) Then txtDichvu.SetFocus txtDichvu.Text = "" txtThue.Text = "" End If txtChia.Enabled = True txtThue.Enabled = True End Sub Private Sub txtDichvu_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub txtDichvu_GotFocus() CEmpty txtSDMDK Hien " NhËp diÖn tÝch ®Êt ®ang dïng cho s¶n xuÊt vµ kinh doanh ( chØ nhËp sè ) ko lín h¬n sö dông môc ®Ých kh¸c " End Sub Private Sub txtDientichCSD_Click() cmdNhaplai.Enabled = True Mybutton2.Enabled = True End Sub Private Sub txtDientichCSD_GotFocus() CEmpty txtNgayLP End Sub
  • 46. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 46 Private Sub txtDientichCSD_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtDienTichTKT_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub txtDienTichTKT_GotFocus() CEmpty txtGiaTriTT Hien " NhËp diÖn tÝch theo sæ kÕ to¸n vµo ®©y ( chØ nhËp sè )" End Sub Private Sub txtDienTichTKT_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtDienTichTKT_LostFocus() If SSTab1.Tab = 0 Then SSTab1.Tab = 1 End Sub Private Sub txtDientichTTT_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub txtDientichTTT_GotFocus() Hien " Nh¹p diÖn tÝch t¹i thêi ®iÓm kiÓm kª ( chØ nhËp sè ) " txtSDMDK.Enabled = True txtCSD.Enabled = True CEmpty txtDongia End Sub Private Sub txtDientichTTT_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtdungsx_KeyPress(KeyAscii As Integer)
  • 47. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 47 KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtDongia_GotFocus() CEmpty cboNhomDat txtGiaTriTT.Enabled = True End Sub Private Sub txtGiam_Click() cmdNhaplai.Enabled = True Mybutton2.Enabled = True End Sub Private Sub txtGiam_GotFocus() CEmpty txtTang End Sub Private Sub txtGiam_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtGiamCD_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtGiatriCCN_GotFocus() CEmpty txtKoGiayCN End Sub Private Sub txtGiatriCCN_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtGiatriCN_GotFocus() CEmpty txtGiayCN End Sub Private Sub txtGiatriCN_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub
  • 48. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 48 Private Sub txtGiaTriTT_GotFocus() CEmpty txtXaydungnha End Sub Private Sub txtGiatriTT_KeyPress(KeyAscii As Integer) SubKeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtGiayCN_Change() If txtGiayCN.Text <> "" Then txtKoGiayCN.Text = Val(txtDientichTTT.Text) - Val(txtGiayCN.Text) Else txtKoGiayCN.Text = "" End If If Val(txtGiayCN.Text) > Val(txtDientichTTT.Text) Then txtGiayCN.SetFocus txtGiayCN.Text = "" End If End Sub Private Sub txtGiayCN_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub txtGiayCN_GotFocus() CEmpty txtCSD Hien " NhËp diÖn tÝch ch-a cã giÊy chøng nhËn quyÒn sö dông ®Êt ( chØ nhËp sè ) ko ®-îc lín h¬n tæng diÖn tÝch ®Êt " End Sub Private Sub txtGiayCN_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtKoGiayCN_GotFocus() CEmpty txtGiatriCN End Sub
  • 49. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 49 Private Sub txtKoGiayCN_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtMDC_Change() txtSDMDK.Enabled = True txtCSD.Enabled = True If Val(txtMDC.Text) = Val(txtDientichTTT.Text) Then txtSDMDK.Text = "0" txtSDMDK.Enabled = False txtCSD.Text = "0" txtCSD.Enabled = False txtDichvu.Enabled = False txtChia.Enabled = False txtThue.Enabled = False End If End Sub Private Sub txtMDC_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub txtMDC_GotFocus() Hien " NhËp diÖn tÝch sö dông cho môc ®Ých chÝnh ( chØ nhËp sè )" CEmpty txtDongia End Sub Private Sub txtMDC_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtNgayLP_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub
  • 50. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 50 Private Sub txtNgayLP_GotFocus() CEmpty txtTenNLP Hien " B¹n cÇn nhËp ngµy vµo _/_/_/" End Sub Private Sub txtNgayLP_Validate(Cancel As Boolean) If Not IsDate(txtNgayLP) Then txtNgayLP.SetFocus txtNgayLP.Text = "" Cancel = True ElseIf DateValue(txtNgayLP) > Now() Or DateValue(txtNgayLP) < DateValue(Format("01/01/1998", "dd/mm/yyyy")) Then txtNgayLP.SetFocus txtNgayLP.Text = "" Cancel = True Else: txtNgayLP = Format(txtNgayLP, "dd/mm/yyyy") End If End Sub Private Sub txtQuan_Click() cmdNhaplai.Enabled = True Mybutton2.Enabled = True End Sub Private Sub txtQuan_GotFocus() CEmpty txtDiachi End Sub Private Sub txtSDMDK_Change() If Val(txtSDMDK.Text) = 0 Then txtDichvu.Text = 0 txtThue.Text = 0 txtChia.Text = 0 End If If txtSDMDK.Text <> "" Then If Val(txtSDMDK.Text) = Val(txtDientichTTT.Text) - Val(txtMDC.Text) Then txtCSD.Text = 0 txtCSD.Enabled = False
  • 51. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 51 ElseIf Val(txtSDMDK.Text) < Val(txtDientichTTT.Text) - Val(txtMDC.Text) Then txtCSD.Text = Val(txtDientichTTT.Text) - Val(txtMDC.Text) - Val(txtSDMDK.Text) txtCSD.Enabled = False ElseIf Val(txtSDMDK.Text) > Val(txtDientichTTT.Text) - Val(txtMDC.Text) Then txtSDMDK.SetFocus txtSDMDK.Text = "" txtThue.Text = "" txtDichvu.Text = "" txtChia.Text = "" End If Else txtSDMDK.Text = "" txtThue.Text = "" txtDichvu.Text = "" txtChia.Text = "" txtCSD.Text = "" End If End Sub Private Sub txtSDMDK_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub txtSDMDK_GotFocus() Hien " NhËp diÖn tÝch sö dung cho môc ®Ých kh¸c ( chØ nhËp sè )" txtCSD.Enabled = True CEmpty txtMDC txtChia.Enabled = True End Sub Private Sub txtSDMDK_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtSudung_Click() cmdNhaplai.Enabled = True Mybutton2.Enabled = True End Sub
  • 52. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 52 Private Sub txtSudung_GotFocus() CEmpty txtXaydungnha Hien " NhËp diÖn mtÝch ®É x©y dùng c«ng tr×nh vËt kiÕn tróc( chØ nhËp sè)" End Sub Private Sub txtSudung_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtTang_Click() cmdNhaplai.Enabled = True Mybutton2.Enabled = True End Sub Private Sub txtTang_GotFocus() CEmpty txtChiphiKT End Sub Private Sub txtTang_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtTenNLP_Change() If txtTenNLP.Text <> "" Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub txtTenNLP_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub txtTenNLP_GotFocus() Hien "B¹n cÇn nhËp lµ ch÷ vµo ®©y" End Sub Private Sub txtTenNLP_KeyPress(KeyAscii As Integer) KeyAscii = Char_Check(KeyAscii)
  • 53. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 53 End Sub Private Sub txtTenTS_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub txtTenTS_GotFocus() CEmpty txtNgayLP Hien " NhËp tªn ®¬n vÞ vµo ®©y" End Sub Private Sub txtThue_Change() If txtThue.Text = "" Then txtChia.Text = "" End If If Val(txtThue.Text) > Val(txtSDMDK.Text) - Val(txtDichvu.Text) Then txtThue.SetFocus txtThue.Text = "" txtChia.Text = "" End If End Sub Private Sub txtThue_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub txtThue_GotFocus() Hien " NhËp diÖn tÝch ®©ng dïng cho thuª ( chØ nhËp sè ) diÖn tÝch ko ®-îc lín h¬n (sö dông cho môc ®Ých kh¸c - ®ang dïng cho s¶n xuÊt kinh doanh.)" CEmpty txtSDMDK txtChia.Enabled = True End Sub Private Sub txtThue_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub
  • 54. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 54 Private Sub txtXaydungnha_Change() If Val(txtXaydungnha.Text) > Val(txtDientichTTT.Text) Then txtXaydungnha.SetFocus txtXaydungnha.Text = "" txtSudung.Text = "" End If End Sub Private Sub txtXaydungnha_Click() If Dat = 0 Then cmdNhaplai.Enabled = True Mybutton2.Enabled = True End If End Sub Private Sub txtXaydungnha_GotFocus() Hien " NhËp diÖn tÝch ®· dïng ®Ó x©y dùng nhµ ( chØ nhËp sè ) ko ®-îc lín h¬n tæng diÖn tÝch ®Êt " txtSudung.Enabled = True CEmpty txtDientichTTT End Sub Private Sub txtXaydungnha_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub 1.4 Form : frmGiaoDich
  • 55. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 55 Dim rsDVA As ADODB.Recordset Dim rsDVB As ADODB.Recordset Dim rsDVN As ADODB.Recordset Dim rsTSD As ADODB.Recordset Dim rsTSKD As ADODB.Recordset Private rs As ADODB.Recordset Public mo As Integer Dim benA As String Dim benB As String Dim TS As String Dim DVN As String Const sql = "Select tblDonvi.MaDV, tblDonvi.TenDV from tblDonvi " Dim sqlTSD As String Dim sqlTSKD As String Dim i As Integer Dim CodeTS(100) As String Dim bA(100) As String Dim bB(100) As String Dim a As Integer Dim d As Integer Dim soluong(100) As Integer Private Sub cboBenA_GotFocus() Dim i As Integer Dim j As Integer cboBenA.Clear i = 0 Set rsDVA = New ADODB.Recordset rsDVA.Open sql, cnn, adOpenDynamic, adLockBatchOptimistic rsDVA.MoveFirst While Not rsDVA.EOF If rsDVA!TenDV <> benB Then cboBenA.AddItem rsDVA!TenDV If rsDVA!MaDV = MaDV Then j = i bA(i) = rsDVA!MaDV i = i + 1 End If rsDVA.MoveNext Wend rsDVA.Close Set rsDVA = Nothing cboBenA.ListIndex = j Me.Refresh End Sub
  • 56. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 56 Private Sub cboBenA_LostFocus() benA = cboBenA End Sub Private Sub cboBenB_Gotfocus() Dim i As Integer cboBenB.Clear Set rsDVB = New ADODB.Recordset rsDVB.Open sql, cnn, adOpenDynamic, adLockBatchOptimistic rsDVB.MoveFirst While Not rsDVB.EOF If rsDVB!TenDV <> benA Then cboBenB.AddItem rsDVB!TenDV bB(i) = rsDVB!MaDV i = i + 1 End If rsDVB.MoveNext Wend rsDVB.Close Set rsDVB = Nothing End Sub Private Sub cboBenB_LostFocus() benB = cboBenB End Sub Private Sub cboDVN_Lostfocus() DVN = cboDVN End Sub Private Sub cboTS_GotFocus() Dim i As Integer cboTS.Clear Set rsTSD = New ADODB.Recordset Set rsTSKD = New ADODB.Recordset i = 0 Select Case cboSort.ListIndex Case 1, 3: If benA <> "" Then a = 0
  • 57. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 57 qryTSD = "SELECT tblDonVi.TenDV, tblLoaiTS_Detail.* " _ & "FROM (tblTongHopDat_Master INNER JOIN tblDonVi ON tblTongHopDat_Master.MaDV = tblDonVi.MaDV) INNER JOIN tblLoaiTS_Detail ON tblTongHopDat_Master.MaTS = tblLoaiTS_Detail.MaTS " _ & "Where tblDonVi.TenDV ='" & benA & "';" qryTSKD = "SELECT tblDonVi.TenDV, tblLoaiTS_Detail.* " _ & "FROM (tblLoaiTS_Detail INNER JOIN tblTongHopTSCD_KLD_Master ON tblLoaiTS_Detail.MaTS = tblTongHopTSCD_KLD_Master.MaTS) INNER JOIN tblDonVi ON tblTongHopTSCD_KLD_Master.MaDV = tblDonVi.MaDV " _ & "Where tblDonvi.tenDV ='" & benA & "';" End If Case 0, 2: a = 1 If benB <> "" And cboBenB.Enabled Then qryTSD = "SELECT tblDonVi.TenDV, tblLoaiTS_Detail.* " _ & "FROM (tblTongHopDat_Master INNER JOIN tblDonVi ON tblTongHopDat_Master.MaDV = tblDonVi.MaDV) INNER JOIN tblLoaiTS_Detail ON tblTongHopDat_Master.MaTS = tblLoaiTS_Detail.MaTS " _ & "Where tblDonVi.TenDV ='" & benB & "';" qryTSKD = "SELECT tblDonVi.TenDV, tblLoaiTS_Detail.* " _ & "FROM (tblLoaiTS_Detail INNER JOIN tblTongHopTSCD_KLD_Master ON tblLoaiTS_Detail.MaTS = tblTongHopTSCD_KLD_Master.MaTS) INNER JOIN tblDonVi ON tblTongHopTSCD_KLD_Master.MaDV = tblDonVi.MaDV " _ & "Where tblDonvi.tenDV ='" & benB & "';" End If End Select If qryTSD <> "" And qryTSKD <> "" Then rsTSD.Open qryTSD, cnn, adOpenDynamic, adLockOptimistic rsTSKD.Open qryTSKD, cnn, adOpenDynamic, adLockOptimistic While Not rsTSD.EOF cboTS.AddItem rsTSD!TenTS CodeTS(i) = rsTSD!MaTS i = i + 1 rsTSD.MoveNext Wend While Not rsTSKD.EOF cboTS.AddItem rsTSKD!TenTS CodeTS(i) = rsTSKD!MaTS i = i + 1 rsTSKD.MoveNext Wend End If End Sub Private Sub cmdBenA_Click()
  • 58. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 58 Dim ok As Boolean ok = False Set rsDVA = New ADODB.Recordset rsDVA.Open sql, cnn, adOpenDynamic, adLockBatchOptimistic rsDVA.MoveFirst While Not rsDVA.EOF If rsDVA!TenDV = benA Then MaDV = rsDVA!MaDV ok = True End If rsDVA.MoveNext Wend rsDVA.Close Set rsDVA = Nothing If ok Then frmNhapDV.Show End Sub Private Sub CmdBenB_Click() Dim ok As Boolean ok = False Set rsDVB = New ADODB.Recordset rsDVB.Open sql, cnn, adOpenDynamic, adLockBatchOptimistic rsDVB.MoveFirst While Not rsDVB.EOF If rsDVB!TenDV = benB Then MaDV = rsDVB!MaDV ok = True End If rsDVB.MoveNext Wend rsDVB.Close Set rsDVB = Nothing If ok Then frmNhapDV.Show End Sub Private Sub CmdDVN_Click() Dim ok As Boolean ok = False Set rsDVN = New ADODB.Recordset rsDVN.Open "tblDVNgoai", cnn, adOpenDynamic, adLockBatchOptimistic rsDVN.MoveFirst While Not rsDVN.EOF If rsDVN!TenDVN = DVN Then MaDVN = rsDVN!MaDVN ok = True
  • 59. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 59 End If rsDVN.MoveNext Wend rsDVN.Close Set rsDVN = Nothing If ok Then frmNhapDV.Show End Sub Private Sub cmdExit_Click() If mo = 1 Then frmNhapDS.Show Child_Unload Me End Sub Private Sub cmdNew_Click() cmdReset_Click Form_Load End Sub Private Sub cmdReset_Click() Dim ctl As Control For Each ctl In Me.Controls If TypeOf ctl Is ComboBox And ctl.Name <> "cboSort" Then ctl.Clear If TypeOf ctl Is TextBox Then ctl.Text = "" 'If TypeOf ctl Is MaskEdBox Then ctl = "" Next End Sub Private Sub cmdSave_Click() Dim dk As String If a = 0 Then dk = bB(cboBenB.ListIndex) Else dk = bA(cboBenA.ListIndex) End If If Left(CodeTS(cboTS.ListIndex), 1) = "1" Then Set rsTSD = New ADODB.Recordset rsTSD.Open "select * from tblTongHopDat_Master where tblTongHopDat_Master.MaTS ='" & CodeTS(cboTS.ListIndex) & "' ;", cnn, adOpenDynamic, adLockOptimistic rsTSD!MaDV = dk rsTSD.Update Else Set rsTSKD = New ADODB.Recordset
  • 60. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 60 rsTSKD.Open "select * from tblTongHopTSCD_KLD_Master where tblTongHopTSCD_KLD_Master.MaTS ='" & CodeTS(cboTS.ListIndex) & "' ;", cnn, adOpenDynamic, adLockOptimistic rsTSKD!MaDV = dk rsTSKD.Update End If Dim rs As ADODB.Recordset Dim rs1 As ADODB.Recordset Dim rs2 As ADODB.Recordset Set rs = New ADODB.Recordset Set rs1 = New ADODB.Recordset Set rs2 = New ADODB.Recordset rs.Open "tblHopDong", cnn, adOpenDynamic, adLockOptimistic rs1.Open "tblHopDongbenA", cnn, adOpenDynamic, adLockOptimistic rs2.Open "tblHopDongbenB", cnn, adOpenDynamic, adLockOptimistic rs.AddNew rs1.AddNew rs2.AddNew rs!NgayHD = Text1.Text rs!LoaiHD = cboSort rs!MaTS = CodeTS(cboTS.ListIndex) rs1!benA = bA(cboBenA.ListIndex) rs2!benB = bB(cboBenB.ListIndex) rs.Update rs1!Mahd = rs!Mahd rs2!Mahd = rs!Mahd rs1.Update rs2.Update cmdReset_Click Form_Load End Sub Private Sub Form_Load() If mo <> 0 Then Unload frmNhapDS Child_Load Me cboDVN.Visible = False 'CmdDVN.Visible = False benA = "" benB = "" 'Add cac item cho cboSort cboSort.AddItem "Mua" cboSort.AddItem "B¸n" cboSort.AddItem "Thuª" cboSort.AddItem "Cho thuª" cboSort.ListIndex = 0
  • 61. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 61 Set rsDVN = New ADODB.Recordset rsDVN.Open "tblDVNgoai", cnn, adOpenDynamic, adLockBatchOptimistic If Not (rsDVN.EOF And rsDVN.BOF) Then rsDVN.MoveFirst While Not rsDVN.EOF cboDVN.AddItem rsDVN!TenDVN rsDVN.MoveNext Wend rsDVN.Close Set rsDVN = Nothing End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Mre Me End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then Child_Unload Me End Sub Private Sub Frame2_DragDrop(Source As Control, X As Single, Y As Single) End Sub Private Sub Mybutton2_Click() cmdReset_Click End Sub Private Sub Mybutton3_Click() cmdReset_Click End Sub Private Sub Mybutton4_Click() cmdExit_Click End Sub Private Sub optBenB_Click() cboDVN.Visible = False CmdDVN.Visible = False cboBenB.Visible = True CmdBenB.Visible = True End Sub Private Sub optDVN_Click()
  • 62. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 62 cboDVN.Visible = True CmdDVN.Visible = True cboBenB.Visible = False CmdBenB.Visible = False End Sub Private Sub Text1_lostfocus() Dim dt As String dt = Text1.Text If Not Validdate(dt) Then Text1.SetFocus Text1.Text = "" Else Text1.Text = Format(dt, "dd/mm/yyyy") 'If Format(Text1.Text) > Format(Now()) Then ' Text1.SetFocus ' Text1.Text = "" ' End If End If End Sub Private Sub Timer1_Timer() Dim ctl As Control Dim ok As Boolean ok = True For Each ctl In Me.Controls If TypeOf ctl Is TextBox Then If ctl.Text = "" Then ok = False End If Next If cboBenA <> "" And (cboBenB <> "" Or cboDVN <> "") Then cboTS.Enabled = True 'cmdTS.Enabled = True Else cboTS.Enabled = False 'cmdTS.Enabled = False End If If cboTS <> "" And cboBenA <> "" And (cboBenB <> "" Or DVN <> "") _ And Text1.Text <> "" Then cmdSave.Enabled = True Else cmdSave.Enabled = False End If
  • 63. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 63 If txtDate <> "" Or cboTS <> "" Or benA <> "" Or (benB <> "" Or DVN <> "") _ Or Text1.Text <> "" Then cmdReset.Enabled = True Else cmdReset.Enabled = False End If End Sub 1.5 Form: frmChonTS Option Explicit Dim i As Integer Dim Li As ListItem Dim rsLoaiTS As ADODB.Recordset Dim rsNhom As ADODB.Recordset Dim MaLoai(6) As String Dim sSQL As String Private Sub cboLoai_Click() List.ListItems.Clear Call AddListItem(Li, TimMaLoai(cboLoai.Text)) End Sub Private Sub cmdSua_Click()
  • 64. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 64 iButton = Sua MaNhom = List.SelectedItem.ListSubItems(1).Text frmNhapTS.Show Child_Unload Me End Sub Private Sub cmdThem_Click() iButton = Them frmNhapTS.Show Child_Unload Me End Sub Private Sub cmdThoat_Click() Child_Unload Me End Sub Private Sub cmdXoa_Click() Dim ok As Boolean With rsNhom ok = False .MoveFirst While Not .EOF And Not ok If rsNhom!MaNhom = List.SelectedItem.ListSubItems(1).Text Then ok = True Else .MoveNext End If Wend .Delete If Not .EOF Then .MoveNext ElseIf Not .BOF Then .MovePrevious Else Hien "B¹n võa xo¸ nhãm tµi s¶n cuèi cïng" End If End With cmdXoa.Enabled = False Form_Load
  • 65. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 65 End Sub Private Sub Form_Load() Child_Load Me cboLoai.Clear Set rsLoaiTS = New ADODB.Recordset rsLoaiTS.Open "tblLoaits_master", cnn, adOpenDynamic, adLockOptimistic With rsLoaiTS i = 0 .MoveFirst While .EOF = False cboLoai.AddItem !TenloaiTS, i i = i + 1 .MoveNext Wend End With cboLoai.ListIndex = 0 End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then Child_Unload Me End Sub Private Sub AddListItem(ByRef xItem As ListItem, s As String) Dim i As Integer sSQL = "SELECT * FROM tblnhom WHERE maloaits='" & s & "';" Set rsNhom = New ADODB.Recordset rsNhom.Open sSQL, cnn, adOpenDynamic, adLockOptimistic With rsNhom If .EOF And .BOF Then cmdSua.Enabled = False cmdXoa.Enabled = False Hien "Ch-a nhËp nhãm tµi s¶n" Else cmdSua.Enabled = True cmdXoa.Enabled = True .MoveFirst i = 1
  • 66. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 66 While Not .EOF Set xItem = List.ListItems.Add xItem.Text = i xItem.ListSubItems.Add key:="M· nhãm", Text:=!MaNhom xItem.ListSubItems.Add key:="Tªn nhãm", Text:=!tennhom .MoveNext i = i + 1 Wend End If End With End Sub Function TimMaLoai(tenloai As String) Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open "tblloaits_master", cnn, adOpenDynamic, adLockOptimistic With rs .MoveFirst While Not .EOF And tenloai <> !TenloaiTS .MoveNext Wend TimMaLoai = !MaloaiTS End With End Function 1.6 Form : frmNhapDV
  • 67. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 67 Option Explicit Dim rsDV As ADODB.Recordset Dim k As Integer Dim StopWh As Boolean Dim Temp As String Dim sSQL As String Private Sub cboCT_Click() txtMaDV.Enabled = True txtMaDV.Text = CodeDV(cboCT.Text) txtMaDV.Enabled = False txtTenDV.Enabled = True 'txtTenDV.SetFocus Check_Empty End Sub Private Sub cboQuan_Click() Check_Empty End Sub
  • 68. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 68 Private Sub cboQuan_GotFocus() 'CEmpty txtDiaChi Hien "QuËn theo ®Þa chØ cña ®¬n vÞ" End Sub Private Sub cboQuan_KeyPress(KeyAscii As Integer) If UCase(Chr(KeyAscii)) = "D" Then cboQuan.ListIndex = 1 End Sub Private Sub cmdCapnhat_Click() If CDublicate(txtTenDV.Text) Then MMsgbox "§· cã tªn ®¬n vÞ nµy råi, ®Ò nghÞ nhËp l¹i" Hien "§· cã tªn ®¬n vÞ nµy råi, ®Ò nghÞ nhËp l¹i" txtTenDV.Text = "" txtDiachi.Text = "" txtDT.Text = "" txtSoNV.Text = "" Exit Sub End If If iButton = 2 Then If MaDV = txtMaDV.Text Then GetValue rsDV.Update Else rsDV.Delete If Not rsDV.EOF Then rsDV.MoveNext ElseIf Not rsDV.BOF Then rsDV.MovePrevious End If rsDV.AddNew GetValue rsDV.Update ThemDVCD (cboCT.Text) Call DoiTS(MaDV, txtMaDV.Text) End If ElseIf iButton = 3 Then With rsDV rsDV.AddNew GetValue rsDV.Update End With ThemDVCD (cboCT.Text) cboCT.Refresh End If
  • 69. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 69 cmdThoat_Click End Sub Private Sub cmdThoat_Click() Child_Unload Me frmDonVi.Show End Sub Private Sub Form_Load() Child_Load Me Dim i As Integer Set rsDV = New ADODB.Recordset rsDV.Open "tblDonvi", cnn, adOpenDynamic, _ adLockOptimistic, adCmdTable '--------------------------------------------------------- With cboQuan .AddItem "Ba ®×nh", 0 .AddItem "§èng §a", 1 .AddItem "Hai Bµ Tr-ng", 2 .AddItem "Hoµn KiÕm", 3 .AddItem "Gia L©m", 4 .AddItem "Thanh Xu©n", 5 .AddItem "Tõ Liªm", 6 End With '--------------------------------------------------------- TenCT Select Case iButton 'Sua don vi hay them moi Case 2 'cmdSuaDV SuaDonVi Case 3 'cmdThem: cboCT.ListIndex = 0 cboCT.Refresh txtTenDV.Enabled = True 'txtTenDV.SetFocus txtMaDV.Enabled = True txtMaDV.Text = CodeDV(cboCT.Text) txtMaDV.Enabled = False cmdCapNhat.Enabled = False txtTenDV.Text = "" txtDiachi.Text = "" txtDT.Text = "" txtSoNV.Text = "" txtTenDV.Enabled = False
  • 70. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 70 txtDiachi.Enabled = False txtDT.Enabled = False txtSoNV.Enabled = False cboQuan.Enabled = False End Select Child_Unload frmDonVi End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then cmdThoat_Click End Sub Private Sub GetValue() rsDV!MaDV = txtMaDV.Text rsDV!TenDV = txtTenDV.Text rsDV!DiaChi = txtDiachi.Text rsDV!Quan = cboQuan.Text rsDV!SoDT = txtDT.Text rsDV!DonViCT = MaDV_T(cboCT.Text) rsDV!sonv = txtSoNV.Text If optCap2.Value = True Then rsDV!Capdv = 2 Else rsDV!Capdv = 3 End If If optQLNN.Value = True Then rsDV!chucnang = "QLNN" Else rsDV!chucnang = "HCSN" End If End Sub Private Sub optCap2_Click() TenCT End Sub Private Sub optCap3_Click() TenCT End Sub Private Sub Timer1_Timer()
  • 71. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 71 If cboCT.Text <> "" Then cboQuan.Enabled = True txtTenDV.Enabled = True txtDiachi.Enabled = True txtDT.Enabled = True txtSoNV.Enabled = True End If End Sub Private Sub txtDiachi_Click() Check_Empty End Sub Private Sub txtDiaChi_GotFocus() ' CEmpty txtTenDV Hien "NhËp ®Þa chØ cña ®¬n vÞ" End Sub Private Sub txtDT_Change() Check_Empty End Sub Private Sub txtDT_GotFocus() Call CEmpty(cboQuan) Hien "§iÖn tho¹i cña ®¬n vÞ" End Sub Private Sub txtDT_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtMaDV_Click() 'Check_Empty End Sub Private Sub txtSoNV_Change() Check_Empty End Sub Private Sub txtSoNV_GotFocus() CEmpty txtDT Hien "Sè nh©n viªn hiÖn t¹i cña ®¬n vÞ" End Sub
  • 72. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 72 Private Sub txtSoNV_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) End Sub Private Sub txtTenDV_Click() 'Check_Empty End Sub Private Sub txtTenDV_GotFocus() Hien "NhËp tªn ®¬n vÞ vµo ®©y" End Sub Private Sub txtTenDV_KeyPress(KeyAscii As Integer) KeyAscii = Char_Check(KeyAscii) End Sub Private Sub TenCT() Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset cboCT.Clear If optCap2.Value Then cboCT.AddItem "UBND TP Hµ Néi" Else sSQL = "SELECT * FROM tbldonvi " & _ "WHERE capdv= 2;" rs.Open sSQL, cnn, adOpenDynamic, adLockOptimistic With rs .MoveFirst While .EOF = False cboCT.AddItem !TenDV .MoveNext Wend End With End If cboCT.ListIndex = 0 txtMaDV.Enabled = True txtMaDV.Text = CodeDV(cboCT.Text) txtMaDV.Enabled = False End Sub Function CDublicate(TenDV As String) As Boolean Dim sSQL As String Dim Check As Boolean sSQL = "SELECT * FROM tbldonvi WHERE tendv= '" & TenDV & "';" Dim rsDV1 As ADODB.Recordset
  • 73. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 73 Set rsDV1 = New ADODB.Recordset rsDV1.Open sSQL, cnn, adOpenDynamic, adLockOptimistic If rsDV1.EOF And rsDV1.BOF Then Check = False Else Check = True End If CDublicate = Check End Function Private Sub ThemDVCD(TenCT As String) Dim rsDV2 As ADODB.Recordset Set rsDV2 = New ADODB.Recordset rsDV2.Open "tbldonvi", cnn, adOpenDynamic, adLockOptimistic With rsDV2 .MoveFirst While .EOF = False And !TenDV <> TenCT .MoveNext Wend !sodvcd = !sodvcd + 1 .Update End With End Sub Public Function MaDV_T(Ten As String) As String 'Tim Ma don vi tu ten don vi Dim Ma As String Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open "Tbldonvi", cnn, adOpenDynamic, adLockOptimistic With rs .MoveFirst While Not .EOF If !TenDV = Ten Then Ma = !MaDV End If .MoveNext Wend End With MaDV_T = Ma End Function Private Sub SuaDonVi() Dim i As Integer Dim l As Integer With rsDV
  • 74. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 74 .MoveFirst While Not .EOF And !MaDV <> MaDV .MoveNext Wend If !Capdv = 2 Then optCap2.Value = True ElseIf !Capdv = 3 Then optCap3.Value = True End If i = 0 While i < cboCT.ListCount cboCT.ListIndex = i If MaDV_T(cboCT.Text) = !DonViCT Then l = i i = i + 1 Wend cboCT.ListIndex = l txtMaDV.Enabled = True txtMaDV.Text = !MaDV txtMaDV.Enabled = False txtTenDV.Text = !TenDV txtDT.Text = !SoDT txtDiachi.Text = !DiaChi txtSoNV.Text = !sonv i = 0 While i < cboQuan.ListCount cboQuan.ListIndex = i If MaDV_T(cboQuan.Text) = !DonViCT Then l = i i = i + 1 Wend cboQuan.ListIndex = l If !chucnang = "qlnn" Then optQLNN.Value = True Else optHCSN.Value = True End If End With End Sub Private Sub DoiTS(MaCu As String, MaMoi As String) Dim rsDat As ADODB.Recordset Dim rsKLD As ADODB.Recordset Set rsDat = New ADODB.Recordset Set rsKLD = New ADODB.Recordset
  • 75. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 75 rsDat.Open "tbltonghopdat_master", cnn, adOpenDynamic, adLockOptimistic rsKLD.Open "tblTongHopTSCD_KLD_Master", cnn, adOpenDynamic, adLockOptimistic With rsDat If .EOF And .BOF Then .MoveFirst While Not .EOF And MaCu <> !MaDV .MoveNext Wend !MaDV = MaMoi End If End With With rsKLD If .EOF And .BOF Then .MoveFirst While Not .EOF And MaCu <> !MaDV .MoveNext Wend !MaDV = MaMoi End If End With End Sub Private Sub Check_Empty() Dim ctl As Control Dim B As Boolean B = True For Each ctl In Controls If TypeOf ctl Is TextBox Or TypeOf ctl Is MaskEdBox _ Or TypeOf ctl Is ComboBox Then If ctl.Text = "" Then B = False End If Next ctl If B = True Then cmdCapNhat.Enabled = True Else cmdCapNhat.Enabled = False End If End Sub 1.7 Form: frmTimKiem
  • 76. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 76 Dim rsDV As ADODB.Recordset Dim rsTS As ADODB.Recordset Dim i As Integer Dim Flag As Boolean Dim ok As Boolean Private Sub cboCap_KeyPress(KeyAscii As Integer) KeyAscii = Num_Check(KeyAscii) If Not (KeyAscii = "2" Or KeyAscii = "3") Then cboCap.Text = "" End If End Sub Private Sub cmdThoat_Click() Child_Unload Me End Sub Private Sub cmdTim_Click() Flag = True Select Case SSTab1.Tab Case 0 'Tim don vi TimDV iButton = 0 Case 1 'Tim tai san TimTS iButton = 1 Case 2 'Tim phieu
  • 77. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 77 If txtTu.Text <> "" Or txtDen.Text <> "" Then If Not IsDate(txtTu.Text) And Not IsDate(txtDen.Text) Then MsgBox "NhËp sai ®iÒu kiÖn t×m kiÕm!", , "Th«ng b¸o:" Flag = False Exit Sub End If End If TimPhieu iButton = 2 End Select If Flag Then MsgBox "Ch-a nhËp ®iÒu kiÖn t×m kiÕm", , "Th«ng b¸o:" Else Call cFind(findSQL) End If End Sub Private Sub Form_Load() Child_Load Me Set rsDV = New ADODB.Recordset rsDV.Open "tbldonvi", cnn, adOpenDynamic, adLockOptimistic i = 0 With rsDV .MoveFirst While .EOF = False cboMaDV.AddItem rsDV!MaDV, i cboTenDV.AddItem rsDV!TenDV, i i = i + 1 .MoveNext Wend End With cboCap.AddItem 1, 0 cboCap.AddItem 2, 1 cboCap.AddItem 3, 2 cboCN.AddItem "QLNN", 0 cboCN.AddItem "HCSN", 1 End Sub Private Sub TimDV() findSQL = "SELECT * FROM tbldonvi WHERE "
  • 78. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 78 If cboMaDV.Text <> "" Then findSQL = findSQL & "( madv LIKE '%" & cboMaDV.Text & "%')" Flag = False End If If cboTenDV.Text <> "" Then If Not Flag Then findSQL = findSQL & " AND ( tendv LIKE '%" & cboTenDV.Text & "%')" Else findSQL = findSQL & "( tendv LIKE '%" & cboTenDV.Text & "%')" End If Flag = False End If If cboCap.Text <> "" Then If Not Flag Then findSQL = findSQL & " AND ( capdv LIKE '%" & cboCap.Text & "%')" Else findSQL = findSQL & "( capdv LIKE '%" & cboCap.Text & "%')" End If Flag = False End If If cboCN.Text <> "" Then If Not Flag Then findSQL = findSQL & " AND ( Chucnang LIKE '%" & cboCN.Text & "%')" Else findSQL = findSQL & "( tendv LIKE '%" & cboTenDV.Text & "%')" End If Flag = False End If End Sub Private Sub TimTS() findSQL = "SELECT * FROM tblloaits_master" & _ " INNER JOIN tblnhom" & _ " ON tblloaits_master.maloaits=tblnhom.maloaits" & _ " WHERE " If cboMaNhomTS.Text <> "" Then findSQL = findSQL & " (tblnhom.manhom LIKE '%" & cboMaNhomTS.Text & "%')" Flag = False End If If cboNhom.Text <> "" Then If Flag Then findSQL = findSQL & " (tblnhom.tennhom LIKE '%" & cboNhom.Text & "%')" Else
  • 79. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 79 findSQL = findSQL & " AND (tblnhom.tennhom LIKE '%" & cboNhom.Text & "%')" End If Flag = False End If If cboLoaiTS.Text <> "" Then If Flag Then findSQL = findSQL & " (tblloaits_master.tenloaits LIKE '%" & cboLoaiTS.Text & "%')" Else findSQL = findSQL & " AND (tblloaits_master.tenloaits LIKE '%" & cboLoaiTS.Text & "%')" End If Flag = False End If End Sub Private Sub TimPhieu() findSQL = "SELECT * " & _ "FROM tblphieu " & _ "WHERE " If cboMP.Text <> "" Then findSQL = findSQL & "(tblphieu.maphieu LIKE '%" & cboMP.Text & "%')" Flag = False End If If cboNguoiLP.Text <> "" Then If Flag Then findSQL = findSQL & "(tblphieu.tennlp LIKE '%" & cboNguoiLP.Text & "%')" Else findSQL = findSQL & " AND (tblphieu.tennlp LIKE '%" & cboNguoiLP.Text & "%')" End If Flag = False End If If txtTu.Text <> "" Then If Flag Then If txtDen.Text <> "" Then findSQL = findSQL & " (tblphieu.ngaylp >=DateValue(Format('" & txtTu.Text & "'))) and " _ & " (tblphieu.ngaylp <=DateValue(Format('" & txtDen.Text & "'))) " Else findSQL = findSQL & " (tblphieu.ngaylp >=DateValue(Format('" & txtTu.Text & "')));" End If Else
  • 80. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 80 If txtDen.Text <> "" Then findSQL = findSQL & " AND ( tblphieu.ngaylp >=DateValue(Format('" & txtTu.Text & "'))) and " _ & " (tblphieu.ngaylp <=DateValue(Format('" & txtDen.Text & "'))) " Else findSQL = findSQL & " AND (tblphieu.ngaylp >=DateValue(Format('" & txtTu.Text & "')));" End If End If Flag = False Else If Flag Then If txtDen.Text <> "" Then findSQL = findSQL & " (tblphieu.ngaylp <=DateValue(Format('" & txtDen.Text & "'))) " End If Else If txtDen.Text <> "" Then findSQL = findSQL & " AND (tblphieu.ngaylp <=DateValue(Format('" & txtDen.Text & "'))) " End If End If Flag = False End If 'MsgBox findSQL End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then Child_Unload Me End Sub Private Sub cFind(sql As String) Dim hang As String Dim cot As String Set rsKQ = New ADODB.Recordset rsKQ.Open findSQL, cnn, adOpenDynamic, adLockOptimistic Dim i As Integer With rsKQ If .EOF And .BOF Then If SSTab1.Tab = 0 Then MsgBox "Kh«ng t×m thÊy ®¬n vÞ ", , "Th«ng b¸o:"
  • 81. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 81 ElseIf SSTab1.Tab = 1 Then MsgBox "Kh«ng t×m thÊy tµi s¶n ", , "Th«ng b¸o:" Else MsgBox "Kh«ng t×m thÊy phiÕu", , "Th«ng b¸o:" End If Exit Sub rsKQ.Close Set rsKQ = Nothing Else frmTimKiemKQ.Show End If End With End Sub Private Sub SSTab1_DblClick() End Sub 1.8 Form: frmTimKiemKQ Private Sub cmdThoat_Click() Child_Unload Me End Sub
  • 82. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 82 Private Sub Form_Load() Dim Li As ListItem Child_Load Me With rsKQ Select Case iButton Case 0: 'Tim don vi i = 0 List.ColumnHeaders.Clear List.ColumnHeaders.Add , , "STT", 1000 List.ColumnHeaders.Add , , "M· ®¬n vÞ", 3000 List.ColumnHeaders.Add , , "Tªn ®¬n vÞ", 3000 .MoveFirst While Not .EOF Set Li = List.ListItems.Add i = i + 1 Li.Text = i Li.ListSubItems.Add Text:=!MaDV Li.ListSubItems.Add Text:=!TenDV .MoveNext Wend Case 1: 'Tim tai san List.ColumnHeaders.Clear List.ColumnHeaders.Add , , "STT", 1000 List.ColumnHeaders.Add , , "M· nhãm tµi s¶n", 3000 List.ColumnHeaders.Add , , "Tªn tµi s¶n", 3000 .MoveFirst While Not .EOF Set Li = List.ListItems.Add i = i + 1 Li.Text = i Li.ListSubItems.Add Text:=!MaNhom Li.ListSubItems.Add Text:=!tennhom .MoveNext Wend Case 2: 'Tim phieu List.ColumnHeaders.Clear List.ColumnHeaders.Add , , "STT", 1000 List.ColumnHeaders.Add , , "M· PhiÕu", 2000 List.ColumnHeaders.Add , , "Ngµy lËp phiÕu", 2000 List.ColumnHeaders.Add , , "Ng-êi lËp phiÕu", 3000 .MoveFirst While Not .EOF Set Li = List.ListItems.Add i = i + 1
  • 83. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 83 Li.Text = i Li.ListSubItems.Add Text:=!Maphieu Li.ListSubItems.Add Text:=!NgayLP Li.ListSubItems.Add Text:=!TenNLP .MoveNext Wend End Select End With End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then Child_Unload Me End Sub Private Sub Form_Unload(Cancel As Integer) rsKQ.Close Set rsKQ = Nothing End Sub Private Sub List_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then Select Case iButton Case 0: frmPopUpMenu.SetDV List.SelectedItem.ListSubItems(2).Text, List.SelectedItem.ListSubItems(1).Text Me.PopupMenu frmPopUpMenu.mnuDonvi End Select End If End Sub 1.9 Form: frmDoThi
  • 84. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 84 Option Explicit Private Sub Command1_Click() Chart1.Plot.Axis(VtChAxisIdY).AxisTitle.TextLayout.VertAlignment = VtVerticalAlignmentTop Chart1.Plot.Axis(VtChAxisIdY).AxisTitle = "(VND)" Chart1.Plot.Axis(VtChAxisIdY).AxisTitle.VtFont.Size = 18 With Chart1 If lisLoaiDT.ListIndex = 0 Then .chartType = VtChChartType2dBar ElseIf lisLoaiDT.ListIndex = 1 Then .chartType = VtChChartType2dPie ElseIf lisLoaiDT.ListIndex = 2 Then .chartType = VtChChartType3dBar .Plot.View3d.Elevation = 15 .Plot.View3d.Rotation = 30 End If .Refresh End With End Sub Private Sub Form_Load() Child_Load Me With Chart1 .ChartData = gt .Title = "Gi¸ trÞ Tµi s¶n"
  • 85. Qu¶n lý tµi s¶n cè ®Þnh Tr-êng §¹i häc Qu¶n lý vµ kinh doanh Hµ Néi §ç §øc Chung Tin4 85 .FootnoteText = "Tµi s¶n cè ®Þnh" .Title.VtFont.Name = ".vntime" .Title.VtFont.Size = 16 .Legend.VtFont.Name = 14 .Legend.VtFont.Name = ".vntime" .Footnote.VtFont.Name = ".vntime" .Column = 1 .ColumnLabel = "Gia tri thuc te" .Column = 2 .ColumnLabel = "Gia tri ke toan" .Refresh End With '-------------------------------------------------------- lisLoaiDT.AddItem "Cét, 2D", 0 lisLoaiDT.AddItem "H×nh Trßn,2D", 1 lisLoaiDT.AddItem "Cét, 3D", 2 End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then Child_Unload Me End Sub Private Sub lisLoaiDT_dblClick() Command1_Click End Sub 2 Các Modul 2.1 Modul:cCodeNTS Option Explicit Public Const Them = 0 Public Const Sua = 1 Public MaNhom As String Function CodeNTS(MaLoai As String) Dim soN As Integer Dim Ma As String Dim MaTaiSan As String Dim rsLTS As ADODB.Recordset Set rsLTS = New ADODB.Recordset rsLTS.Open "tblLoaiTS_master", cnn, adOpenDynamic, adLockOptimistic With rsLTS .MoveFirst While Not (.EOF) If !TenloaiTS = MaLoai Then Ma = !MaloaiTS