Test triển khai ứng dụng và đào tạo người sử dụng

Một phần của tài liệu Xây dựng phần mềm quản trị quan hệ khách hàng tại công ty cổ phần phần mềm quản lý doanh nghiệp Fast (Trang 85 - 106)

Sau quy trình lập trình nhóm đã xây dựng được phần mềm hoàn chỉnh của mình, và chuyển giao cho bộ phận Test. Quá trình Test được thực hiện theo ba tiêu chí: Test hệ thống, test nhiệm thu và test theo tiêu chuẩn của khách hàng.

Kiểm tra những điều kiện khắc nghiệt nhất mà hệ thống có thể dễ chịu lỗi nhất. qua đó có thể xử lý triệt để những lỗi cấu trúc của chương trình. Đảm bảo phần mềm đạt hiệu quả cao nhất đóng góp vào hệ thống thông tin của công ty Fast nhằm cung cấp một giải pháp tối ưu cho hoạt động quản trị quan hệ khách hàng.

Giải pháp kỹ thuật cho cài đặt phần mềm tại công ty Fast: Mô hình hệ thống được phát triển theo kiến trúc Client - Server. Máy chủ cơ sở dữ liệu được cài đặt và cấu hình cơ sở dữ liệu để máy trạm có thể truy cập cơ sở dữ liệu và thực hiện thao tác ứng dụng. Hệ thống dữ liệu trước đây của công ty được cập nhật vào hệ thống mới.

Đối với máy trạm, yêu cầu cấu hình ở mức trung bình và nền tảng hệ điều hành Windows. Mỗi máy trạm được cài gói ứng dụng quản trị quan hệ khách hàng

CRM.V2k8.

Người viết đã nghiên cứu và quyết định sử dụng phương pháp chuyển đổi song song, có nghĩa là hệ thống mới hoạt động song song với hệ thống hiện tại trong thời gian một tháng để kiểm tra tính ổn định và chính xác của hệ thống mới, đồng thời cũng là thời gian để cho ban lãnh đạo công ty có thời gian thẩm định lại chất lượng của phần mềm.

Để chuẩn bị cho công tác triển khai được thành công, người viết đã tiến hành lập kế hoạch triển khai. Song song với công tác chuyển đổi dữ liệu, người viết cũng lên kế hoạch đào tạo người sử dụng. Kế hoạch đào tạo thực hiện trong vòng hai ngày. Đối với mỗi đối tượng khác nhau sẽ được đào tạo sử dụng ở mức độ khác nhau. Với ba đối tượng chính là: Ban lãnh đạo, Nhân viên kinh doanh, Nhân viên hỗ trợ tư vấn.

STT Đối tượng Thời gian Nội dung

1 Ban lãnh đạo ½ ngày Ý nghĩa và vai trò tổng quát của PM

2 Nhân viên kinh doanh

1 ngày Chức năng Quản lý khách hàng và Quản lý bán hàng

3 Nhân viên hỗ trợ tư vấn, bảo hành

½ ngày Chức năng Dịch vụ hỗ trợ sau bán hàng

KẾT LUẬN

Hiện nay, vai trò của tin học đang ngày càng chiếm ưu thế lớn trong cuộc sống hiện đại, việc vận dụng tin học vào đa số các lĩnh vực ngày càng phát triển. Qua thời gian đi thực tập cùng với kiến thức tích luỹ tại nhà trường em đã hiểu biết được thêm nhiều kiến thức thực tế. Từ đó, em đã áp dụng vào việc giải quyết một bài toán cụ thể là phát triển một chương trình quản lý ở một đơn vị cụ thể: “Phát triển phần mềm quản trị quan hệ khách hàng tại

công ty cổ phẩn phần mềm quản lý doanh nghiệp Fast”.

Chương trình được viết bằng ngôn ngữ lập trình Visual Basic 6.0 cùng hệ quản trị cơ sở dữ liệu MS Access 2k3, chạy trong môi trường Windows với nền tảng cấu hình chỉ yêu cầu ở mức cơ bản mang lại những lợi ích và hiệu quả kinh tế trong công tác quản trị quan hệ khách hàng. Chương trình cung cấp những giải pháp hiệu quả theo dõi các công việc được tiến hành với khách hàng, ai là người chịu trách nhiệm và đưa ra báo cáo kịp thời. Chương trình còn giúp cho việc tìm kiếm thông tin nhanh chóng.

Tuy nhiên, đây mới chỉ là bước đầu có tính khái quát, chương trình vẫn còn nhiều khiếm khuyết cần hoàn thiện trong thời gian tới về các mặt sau đây:

- Tối ưu hoá về tốc độ, kích thước và sự tiện dụng cho người dùng - Phát triển và bổ sung một số module sao cho phù hợp với nhu cầu

nâng cao hiệu quả hoạt động quản lý - Theo dõi khách hàng chi tiết hơn…

Trong thời gian thực tập, em đã nỗ lực để hoàn thành đề tài một cách tốt nhất trong phạm vi khả năng của mình. Tuy nhiên, do khả năng còn có hạn nên ứng dụng phần mềm quản trị quan hệ khách hàng còn nhiều hạn chế so với tiềm năng của một phần mềm quản trị quan hệ khách hàng - một trợ thủ đắc lực trong cạnh tranh giữa các doanh nghiệp kinh doanh.

Trong tương lai, để sản phẩm ngày càng hoàn thiện hơn đòi hỏi công ty phải có sự đầu tư công sức và thời gian để phát triển hệ thống ngày càng hoàn thiện với những công nghệ hiện đại như ngôn ngữ lập trình Visual Studio .NET, và hệ quản trị cơ sở dữ liệu MicroSoft Sql Sever. Với những công cụ này lập trình viên có thể phát triển hệ thống với những chức năng chuyên sâu cũng như quản lý hiệu quả khối dữ liệu khổng lồ của hệ thống quản trị quan hệ khách hàng. Đáp ứng yêu cầu quản lý nâng cao chất lượng dịch vụ khách hàng, đáp ứng cao nhất yêu cầu khách hàng đặt ra. Đó là cơ sở để thực hiện mục tiêu cùng khách hàng hướng tới thành công.

Một lần nữa, em xin gửi lời cảm ơn chân thành tới thầy giáo tiến sĩ Trương Văn Tú đã giúp đỡ, hướng dẫn tận tình trong thời gian em nghiên cứu chuyên đề này. Em cũng xin chân thành cảm ơn các anh chị trong công ty cổ phần phần mềm quản lý doanh nghiệp Fast đã giúp đỡ em hoàn thành kỳ thực tập.

TÀI LIỆU THAM KHẢO Tài liệu tiếng việt

[1]. Giáo trình Hệ thống thông tin quản lý, NXB Thống kê, Hà Nội - TS.Trương Văn Tú - TS. Trần Thị Song Minh.

[2]. Phân tích thiết kế và cài đặt hệ thống thông tin quản lý, NXB Thanh niên- TS. Hàn Viết Thuận,

[3]. Giáo trình Cơ Sở Dữ Liệu 1, 2 - NXB Thống Kê 2005 - Trần Công Uẩn - Trường Đại học Kinh Tế Quốc Dân - Khoa Tin học Kinh tế.

[4]. Nguyên lý các hệ cơ sở dữ liệu và cơ sở tri thức (Principles of Database and Knowledge-Base Systems), Jeffrey D. Ullman, NXB Thống Kê 1998.

[5]. Nguyên lý các hệ cơ sở dữ liệu phân tán, Trần Đức Quang biên dịch, NXB Thống Kê 1999.

[6]. Mocrosoft Visual Basic 6.0 và lập trình Cơ sở dữ liệu - Nguyễn Thị Ngọc Mai (Chủ biên), GSTS. Nguyễn Hữu Anh - NXB Lao động xã hội.

[7]. Sổ tay nhân viên FAST năm 2008 - Fast Software co.,Ltd (adsbygoogle = window.adsbygoogle || []).push({});

[8]. Giới thiệu giải pháp Fast Accounting, Fast Business - Fast Software co.,Ltd. [9]. www.fast.com.vn

Tài liệu tiếng anh

[1]. TaTaMcGraw Hill (Edition), Seagate Crystal Report 8, Tài liệu đào tạo của hãng Seagate.

[2]. Tạp chí Harvard Business Review - HBR số tháng 9 và 10 năm 1993 [3]. www.vtiger.com

PHỤ LỤC

Một số đoạn code của chương trình

Đăng nhập:

Private Sub cmdOK_Click() Dim rs As ADODB.Recordset Dim check As Boolean

Dim sql As String

Do While txtUsername.Text = ""

MsgBox "Tên đăng nhập không thể trống!" txtUsername.SetFocus Exit Sub Loop pw = Trim(txtPassword.Text) user = Trim(UCase(txtUsername.Text)) mdlgerneral.getConnection

Set rs = New ADODB.Recordset sql = "Select * from DMNhanVien"

rs.Open sql, Conn, adOpenStatic, adLockOptimistic check = False

rs.MoveFirst

Do While ((Not rs.EOF) And (check = False))

If (UCase(rs![TenTruyNhap]) = user And rs![Password] = pw) Then cq = rs![IDQuyen] check = True Else rs.MoveNext End If Loop

If dem < 3 Then

If check = False Then dem = dem + 1 cq = "0"

MsgBox "Tên đăng nhập hoặc mật khẩu sai!" txtUsername.SetFocus SendKeys "{Home}+{End}" Exit Sub Else dem = 0 mdlAddComBo.phanquyen

MsgBox "Chào mừng bạn " & rs.fields("BietDanh") & " đã đăng nhập thành công!"

LoginSucceeded = True Me.Hide

End If Else

MsgBox "Bạn đã đăng nhập sai ba lần xin vui lòng thử lại sau", ,"Thông báo" End

End If End Sub

Danh mục nhân viên

Option Explicit

Dim mbChangedByCode As Boolean Dim mvBookMark As Variant

Dim mbEditFlag As Boolean Dim mbAddNewFlag As Boolean Dim mbDataChanged As Boolean Dim sql As String

Dim rs As ADODB.Recordset Private Sub cbGioiTinh_Click() If CInt(cbGioiTinh.Text) = 0 Then Label1.Caption = "Nam" Else Label1.Caption = "Nữ" End If End Sub

Private Sub cbIDNhomNV_Click() Set rs = New ADODB.Recordset (adsbygoogle = window.adsbygoogle || []).push({});

sql = "Select * From DMNhomNV Where IDNhomNV Like '%" & cbIDNhomNV.Text & "%'"

rs.Open sql, Conn, adOpenKeyset, adLockOptimistic rs.MoveFirst

Label3.Caption = rs.fields("TenNhom") rs.Close

End Sub

Private Sub cbIDPhongban_Click() Set rs = New ADODB.Recordset

sql = "Select * From DMPhongban Where IDPhongBan Like '%" & cbIDPhongban.Text & "%'"

rs.Open sql, Conn, adOpenKeyset, adLockOptimistic rs.MoveFirst

Label4.Caption = rs.fields("TenPhongban") rs.Close

End Sub

Private Sub cbIDViTri_Click() Set rs = New ADODB.Recordset

rs.Open sql, Conn, adOpenKeyset, adLockOptimistic rs.MoveFirst

Label2.Caption = rs.fields("MoTa") rs.Close

End Sub

Private Sub Check1_Click()

If Check1.Value = 0 Then Check1.Caption = "Còn làm việc"

If Check1.Value = 1 Then Check1.Caption = "Không còn làm việc" End Sub

Private Sub Form_Load() mdlgerneral.KiemTraKN mdlgerneral.getConnection

sql = "Select * From DMNhanVien Order By IDNhanVien"

Adodc1.ConnectionString = "Provider=MSDataShape.1;Persist Security Info=False;Data Source=" & conStr & ";Data Provider=Microsoft.Jet.OLEDB.4.0" Adodc1.CommandType = adCmdUnknown Adodc1.RecordSource = sql Adodc1.Refresh cbGioiTinh.Clear cbGioiTinh.AddItem "0" cbGioiTinh.AddItem "1" Set rs = New ADODB.Recordset sql = "Select * From DMViTri"

rs.Open sql, Conn, adOpenKeyset, adLockOptimistic rs.MoveFirst

cbIDViTri.Clear Do While Not rs.EOF

cbIDViTri.AddItem rs.fields("IDViTri") rs.MoveNext

Loop rs.Close

Set rs = New ADODB.Recordset sql = "Select * From DMNhomNV"

rs.Open sql, Conn, adOpenKeyset, adLockOptimistic rs.MoveFirst

cbIDNhomNV.Clear Do While Not rs.EOF

cbIDNhomNV.AddItem rs.fields("IDNhomNV") rs.MoveNext

Loop rs.Close

Set rs = New ADODB.Recordset sql = "Select * From DMPhongBan"

rs.Open sql, Conn, adOpenKeyset, adLockOptimistic rs.MoveFirst (adsbygoogle = window.adsbygoogle || []).push({});

cbIDPhongban.Clear Do While Not rs.EOF

cbIDPhongban.AddItem rs.fields("IDPhongBan") rs.MoveNext Loop rs.Close cbGioiTinh.Text = Adodc1.Recordset.fields("GioiTinh") cbGioiTinh_Click If Adodc1.Recordset.fields("TrangThai") <> 0 Then Check1.Value = 1 Else Check1.Value = 0 End If

Check1_Click cbIDViTri.Text = Adodc1.Recordset.fields("IDViTri") cbIDViTri_Click cbIDNhomNV.Text = Adodc1.Recordset.fields("IDNhomNV") cbIDNhomNV_Click cbIDPhongban.Text = Adodc1.Recordset.fields("IDPhongBan") cbIDPhongban_Click mbDataChanged = False End Sub

Private Sub Form_Resize() On Error Resume Next

Adodc1.Width = Me.Width - 1500 Me.Width = 9855

Me.Height = 5220 End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If mbEditFlag Or mbAddNewFlag Then Exit Sub

Select Case KeyCode Case vbKeyEscape cmdClose_Click Case vbKeyEnd Adodc1.Recordset.MoveLast Case vbKeyHome Adodc1.Recordset.MoveFirst Case vbKeyUp, vbKeyPageUp If Shift = vbCtrlMask Then Adodc1.Recordset.MoveFirst Else

Adodc1.Recordset.MovePrevious Else:

Adodc1.Recordset.MoveFirst End If

End If

Case vbKeyDown, vbKeyPageDown If Shift = vbCtrlMask Then

Adodc1.Recordset.MoveLast Else

If Adodc1.Recordset.EOF = False Then Adodc1.Recordset.MoveNext Else: Adodc1.Recordset.MoveLast End If End If End Select End Sub

Private Sub Form_Unload(Cancel As Integer) Screen.MousePointer = vbDefault

End Sub

Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)

'This will display the current record position for this recordset

If Adodc1.Recordset.BOF = True Then Adodc1.Recordset.MoveFirst If Adodc1.Recordset.EOF = True Then Adodc1.Recordset.MoveLast

If Adodc1.Recordset.fields("BietDanh") <> "" Then Adodc1.Caption = "Bản ghi: " & CStr(Adodc1.Recordset.fields("BietDanh"))

End Sub

Private Sub Adodc1_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)

'This is where you put validation code

'This event gets called when the following actions occur Dim bCancel As Boolean

Select Case adReason Case adRsnAddNew Case adRsnClose Case adRsnDelete Case adRsnFirstChange Case adRsnMove Case adRsnRequery Case adRsnResynch Case adRsnUndoAddNew Case adRsnUndoDelete Case adRsnUndoUpdate Case adRsnUpdate End Select

If bCancel Then adStatus = adStatusCancel End Sub

Private Sub cmdAdd_Click() On Error GoTo AddErr

Set rs = New ADODB.Recordset

rs.Open sql, Conn, adOpenKeyset, adLockOptimistic If rs.RecordCount <> 0 Then txtIDNguoiCapNhat.Text = rs.fields("IDNhanVien") Label5.Caption = rs.fields("BietDanh") End If txtIDNhanVien.SetFocus Adodc1.Recordset.AddNew

Adodc1.Caption = "Thêm bản ghi" mbAddNewFlag = True SetButtons False Exit Sub AddErr: MsgBox Err.Description End Sub (adsbygoogle = window.adsbygoogle || []).push({});

Private Sub cmdDelete_Click() On Error GoTo DeleteErr With Adodc1.Recordset .Delete

.MoveNext

If .EOF Then .MoveLast End With

Exit Sub DeleteErr:

MsgBox Err.Description End Sub

Private Sub cmdRefresh_Click() On Error GoTo RefreshErr Adodc1.Refresh

Exit Sub RefreshErr:

MsgBox Err.Description End Sub

Private Sub cmdEdit_Click() On Error GoTo EditErr

Adodc1.Caption = "Sửa thông tin NV:" mbEditFlag = True SetButtons False Exit Sub EditErr: MsgBox Err.Description End Sub

Private Sub cmdCancel_Click() On Error Resume Next

SetButtons True mbEditFlag = False mbAddNewFlag = False Adodc1.Refresh Adodc1.Recordset.MoveFirst mbDataChanged = False End Sub

Private Sub cmdUpdate_Click() On Error GoTo UpdateErr

Adodc1.Recordset.UpdateBatch adAffectAll If mbAddNewFlag Then

Adodc1.Recordset.Update End If

mbAddNewFlag = False SetButtons True mbDataChanged = False Exit Sub UpdateErr: MsgBox Err.Description End Sub

Private Sub cmdClose_Click() Unload Me

End Sub

Private Sub SetButtons(bVal As Boolean) cmdAdd.Visible = bVal

cmdEdit.Visible = bVal

cmdUpdate.Visible = Not bVal cmdCancel.Visible = Not bVal cmdDelete.Visible = bVal cmdClose.Visible = bVal cmdRefresh.Visible = bVal End Sub Tìm kiếm khách hàng Option Explicit Dim sql As String Dim Sodu As Integer

Dim sql1, sql2, sql3, sql4, sql5, sql6 As String Private Sub cmdAddCondition_Click()

Sodu = Sodu + 1 Makehide Sodu End Sub

Unload Me End Sub

Private Sub Form_Load() mdlgerneral.KiemTraKN

Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & conStr & ";Persist Security Info=False"

Adodc1.CommandType = adCmdUnknown Adodc1.RecordSource = "tbKhachHang" Adodc1.Refresh mdlAddComBo.ConditionKH cbCondition1 mdlAddComBo.ConditionKH cbCondition2 mdlAddComBo.ConditionKH cbCondition3 mdlAddComBo.OperatorKH cbOperator1 mdlAddComBo.OperatorKH cbOperator3 mdlAddComBo.OperatorKH cbOperator5 cbOperator2.AddItem " AND " cbOperator2.AddItem " OR " cbOperator4.AddItem " AND " cbOperator4.AddItem " OR " End Sub

Sub Makehide(du As Integer) If du Mod 3 = 0 Then cbOperator2.Visible = False cbOperator3.Visible = False cbOperator4.Visible = False cbOperator5.Visible = False cbCondition2.Visible = False cbCondition3.Visible = False txtKeyword2.Visible = False

txtKeyword2.Visible = False txtKeyword3.Visible = False Else If du Mod 3 = 1 Then cbOperator2.Visible = True cbOperator3.Visible = True cbCondition2.Visible = True txtKeyword2.Visible = True Else cbCondition3.Visible = True cbOperator4.Visible = True cbOperator5.Visible = True txtKeyword3.Visible = True End If End If End Sub

Private Sub Form_Resize() Me.Width = 10710 Me.Height = 5235 End Sub (adsbygoogle = window.adsbygoogle || []).push({});

Private Sub txtKeyword1_Change() txtKeyword2.Text = ""

txtKeyword3.Text = "" If cbCondition1.Text = "" Then

MsgBox "Mời bạn chọn điều kiện tìm kiếm!" cbCondition1.SetFocus

SendKeys "%{Down}" Exit Sub

If cbOperator1.Text = "" Then

MsgBox "Mời bạn chọn toán tử tìm kiếm!" cbOperator1.SetFocus

SendKeys "%{Down}" Exit Sub

End If

sql1 = "Select * From tbKhachHang Where " & cbCondition1.Text & " " & cbOperator1.Text & " '%" & txtKeyword1.Text & "%'"

Adodc1.RecordSource = sql1 Adodc1.Refresh

Label3.Caption = "Tìm thấy " & Adodc1.Recordset.RecordCount & " bản ghi phù hợp điều kiện!"

End Sub

Private Sub txtKeyword2_Change() txtKeyword3.Text = ""

If cbOperator2.Text = "" Then

MsgBox "Mời bạn chọn toán tử tìm kiếm!" cbOperator2.SetFocus

SendKeys "%{Down}" Exit Sub

End If

If cbCondition2.Text = "" Then

MsgBox "Mời bạn chọn điều kiện tìm kiếm!" cbCondition2.SetFocus

SendKeys "%{Down}" Exit Sub

End If

MsgBox "Mời bạn chọn toán tử tìm kiếm!" cbOperator3.SetFocus

SendKeys "%{Down}" Exit Sub

End If

sql2 = sql1 & " " & cbOperator2.Text & " " & cbCondition2.Text & " " & cbOperator3.Text & " '%" & txtKeyword2.Text & "%'"

Adodc1.RecordSource = sql2 Adodc1.Refresh

Label3.Caption = "Tìm thấy " & Adodc1.Recordset.RecordCount & " bản ghi phù hợp điều kiện!"

End Sub

Private Sub txtKeyword3_Change() If cbOperator4.Text = "" Then

MsgBox "Mời bạn chọn toán tử tìm kiếm!" cbOperator4.SetFocus (adsbygoogle = window.adsbygoogle || []).push({});

SendKeys "%{Down}" Exit Sub

End If

If cbCondition3.Text = "" Then

MsgBox "Mời bạn chọn điều kiện tìm kiếm!" cbCondition3.SetFocus

SendKeys "%{Down}" Exit Sub

End If

If cbOperator5.Text = "" Then

MsgBox "Mời bạn chọn toán tử tìm kiếm!" cbOperator5.SetFocus

Exit Sub End If

sql3 = sql2 & " " & cbOperator4.Text & " " & cbCondition3.Text & " " & cbOperator5.Text & " '%" & txtKeyword3.Text & "%'"

Adodc1.RecordSource = sql3 Adodc1.Refresh

Label3.Caption = "Tìm thấy " & Adodc1.Recordset.RecordCount & " bản ghi phù hợp điều kiện!"

End Sub

Hiển thị báo cáo

Private Sub cmdRpt_Click() On Error GoTo Loi

Dim res As ADODB.Recordset Set res = New ADODB.Recordset

sql = "SELECT DMChiTietHD.IDChiTiet, DMChiTietHD.IDBoPhan,

DMChiTietHD.IDNhanVien, DMChiTietHD.NgayBatDau,

DMChiTietHD.NgayKetThuc, DMChiTietHD.VaiTro,

DMChiTietHD.TyLeHoanThanh From DMChiTietHD Where IDHopDong Like '%" & txtIDHopDong.Text & "%'"

res.Open sql, Conn, adOpenKeyset, adLockOptimistic MsgBox res.fields("IDNhanVien")

rpt.SetTablePrivateData 0, 3, res

rpt.ReportFileName = App.Path + "\Reports\rptHopDong.rpt" rpt.Formulas(0) = "IDNhomHD='" & cbIDNhomHD.Text & "'" rpt.Formulas(1) = "IDHopDong='" & txtIDHopDong.Text & "'" rpt.Formulas(2) = "IDKhachHang='" & cbIDKhachHang.Text & "'" rpt.Formulas(3) = "TieuDe='" & txtTieuDe.Text & "'"

rpt.Formulas(4) = "DienGiai='" & txtDienGiai.Text & "'" rpt.Formulas(5) = "TongGiaTri='" & txtTongGiaTri.Text & "'"

rpt.Formulas(6) = "TongChiPhi='" & txtTongChiPhi.Text & "'" rpt.Formulas(7) = "LoiNhuan='" & txtLoiNhuan.Text & "'"

rpt.Formulas(8) = "IDTinhTrangHD='" & cbIDTinhtrangHD.Text & "'" rpt.Formulas(9) = "PhuongThucTT='" & txtPhuongThucTT.Text & "'" rpt.Formulas(10) = "ThoiHanTT='" & txtThoiHanTT.Text & "'" rpt.Formulas(11) = "IDTienTe='" & cbIDTienTe.Text & "'" rpt.Formulas(12) = "IDNhanVien='" & cbIDNhanVien.Text & "'" rpt.Formulas(13) = "NgayKy='" & txtNgayKy.Text & "'"

rpt.Formulas(14) = "tgTrienKhai='" & txtTGTrienKhai.Text & "'" rpt.Formulas(15) = "NgayBD='" & txtNgayBD.Text & "'"

rpt.Formulas(16) = "NgayKT='" & txtNgayKT.Text & "'"

rpt.Formulas(17) = "IDNguoiPhuTrach1='" & cbIDNguoiPhuTrach1.Text & "'" rpt.Formulas(18) = "IDNguoiPhuTrach2='" & cbIDnguoiPhuTrach2.Text & "'" rpt.Formulas(19) = "DieuKienKhac='" & txtDieuKienKhac.Text & "'"

rpt.PrintReport res.Close Exit Sub Loi: (adsbygoogle = window.adsbygoogle || []).push({});

MsgBox "Đã có lỗi khi in hoá đơn. Xin xem lại trợ giúp", vbOKOnly, "Thông báo" Unload Me

Một phần của tài liệu Xây dựng phần mềm quản trị quan hệ khách hàng tại công ty cổ phần phần mềm quản lý doanh nghiệp Fast (Trang 85 - 106)