Chương Trình Quản Lý Kho Vật Tư (phụ Tùng)

Liên hệ QC

vungoc

Thành viên tiêu biểu
Tham gia
2/8/06
Bài viết
633
Được thích
2,603
Nghề nghiệp
Quản lý
Gửi lên đây chia sẻ với các bạn CHƯƠNG TRÌNH QUẢN LÝ KHO VẬT TƯ (PHỤ TÙNG)

I- LỜI CẢM ƠN !

Trước hết tôi xin được trân trọng cảm ơn những người bạn đã rất rất nhiệt tình giúp đỡ tôi trong quá trình thực hiện chương trình này, xin gửi lời cảm ơn đến:
- Mr. Okebab (Mr. Hiếu)
- Anhphuong (Anh Phạm Xuân Trường)
- Anh ThuNghi
- SoiBien (Anh Quốc Anh)
Trong chương trình này có sử dụng một số đọan Code có trên diễn đàn GPE.


II- SỬ DỤNG CHƯƠNG TRÌNH:

1/- Setup chế độ cho Excel:
Mở Excel -> Chọn Tools -> Chọn Macros -> Chọn Security -> Chọn Medium

2/- Mở File QUẢN LÝ KHO PHỤ TÙNG (VẬT TƯ) chọn chế độ Enable Macros.

3/- Đọc kỹ hướng dẫn sử dụng, trước khi dùng.
(Nếu có có vấn đề vui lòng liên hệ: Mr. Vũ Ngọc - 0903744734)



III/- NHỮNG ĐIỀM CẦN HÒAN THIỆN:


Tuy đã rất cố gắng nhưng chắc chắn chương trình vẫn còn nhiều thiếu sót. Một lần nữa tôi rất mong tiếp tục nhận được sự trợ giúp của các bạn để hòan thiện cho những nội dung sau:

1- Thiết lập code sao cho khi mở File sẽ tự động bỏ qua bước chọn Enable macros và vào thẳng giao diện Menu chính của chương trình / hoặc người dùng chỉ có thể chọn được chế độ Enable Macros (Tránh trường hợp người dùng vô tình hoặc cố ý chọn chế độ Disable Macros).

2- Ở Form Giấy Đề Nghị:
- Khi ta nhập liệu xong một hóa đơn / chứng từ và kết thúc bằng nút CẬP NHẬP. Lúc này dữ liệu đã được ghi vào DATA, chúng ta có thể nhìn thấy dữ liệu trong List Data Tổng Hợp Các Giấy Đề Nghị (Ở Form Nhập Liệu Giấy Đề Nghị).

- Làm sao để khi ta gõ một Số Chứng Từ nào đó đã có trong List Data Tổng Hợp Các Giấy Đề Nghị vào trong Ô Textbox Số Chứng Từ tại Form Nhập Liệu Giấy Đề Nghị (hoặc ta chọn một dòng dữ liệu nào đó trong List Data Tổng Hợp Các Giấy Đề Nghị) thì dữ liệu sẽ hiện ngược lên List Ghi Tạm và các ô Textbox, Combobox tương ứng trên form này để chúng ta sửa được dữ liệu sau đó bấm Nút Sửa để cập nhật lại những dữ liệu đã được sửa vào Data GiayDeNghi.

3- Form DANH MỤC, tạo chức năng cho các nút: Thêm mới, Sửa, Xóa.

4- Và các vấn đề khác cần sửa đổi / cải tiến cho tốt hơn (theo ý mọi người).

Đây là phần mềm chia sẻ, chúng ta hãy cùng nhau mỗi người một tay, làm cho nó hòan thiện hơn để có một PM ứng dụng hòan chỉnh từ Excel góp vào thư viện của GPE.

Mong sớm nhận được sự đóng góp của tất cả các bạn cho chương trình này !

TRÂN TRỌNG CẢM ƠN TẤT CẢ CÁC BẠN VÀ GPE !
 

File đính kèm

  • Quan ly kho phu tung (Ver01)19-10-07.rar
    306.5 KB · Đọc: 12,109
Lần chỉnh sửa cuối:
Không thể nhấn nút thanks được mà ngoài lơi nói cảm ơn Vu Ngọc có ý tưởng , thực hiện mà còn phải nói lời cảm ơn của những người tiếp nhân đến tất cả những người đã góp phần hoàn thành chương trình quản lý này.

Cảm ơn thật nhiều.
 
vungoc đã viết:
I- LỜI CẢM ƠN !

Trước hết tôi xin được trân trọng cảm ơn những người bạn đã rất rất nhiệt tình giúp đỡ tôi trong quá trình thực hiện chương trình này, xin gửi lời cảm ơn đến:
- Mr. Okebab (Mr. Hiếu)
- Anhphuong (Anh Phạm Xuân Trường)
- Anh ThuNghi
- SoiBien (Anh Quốc Anh)
Trong chương trình này có sử dụng một số đọan Code có trên diễn đàn GPE.


II- SỬ DỤNG CHƯƠNG TRÌNH:

1/- Setup chế độ cho Excel:
Mở Excel -> Chọn Tools -> Chọn Macros -> Chọn Security -> Chọn Medium

2/- Mở File QUẢN LÝ KHO PHỤ TÙNG (VẬT TƯ) chọn chế độ Enable Macros.


III/- NHỮNG ĐIỀM CẦN HÒAN THIỆN:


Tuy đã rất cố gắng nhưng chắc chắn chương trình vẫn còn nhiều thiếu sót. Một lần nữa tôi rất mong tiếp tục nhận được sự trợ giúp của các bạn để hòan thiện cho những nội dung sau:

1- Thiết lập code sao cho khi mở File sẽ tự động hoặc người dùng chỉ có thể chọn được chế độ Enable Macros (Tránh trường hợp người dùng vô tình hoặc cố ý chọn chế độ Disable Macros).

2- Ở Form Giấy Đề Nghị:
- Khi ta nhập liệu xong một hóa đơn / chứng từ và kết thúc bằng nút CẬP NHẬP. Lúc này dữ liệu đã được ghi vào DATA, chúng ta có thể nhìn thấy dữ liệu trong List Data Tổng Hợp Các Giấy Đề Nghị.

- Làm sao để khi ta gõ một Số Chứng Từ nào đó đã có trong List Data Tổng Hợp Các Giấy Đề Nghị vào trong Ô Textbox Số Chứng Từ Click (hoặc ta chọn một dòng dữ liệu nào đó trong List Data Tổng Hợp Các Giấy Đề Nghị) thì dữ liệu sẽ hiện ngược lên List Ghi Tạm và các ô Textbox, Combobox tương ứng trên form này để chúng ta sửa được dữ liệu sau đó bấm Nút Sửa để cập nhật lại những dữ liệu đã được sửa vào Data.

3- Form DANH MỤC, tạo chức năng cho các nút: Thêm mới, Sửa, Xóa.

4- Và các vấn đề khác cần sửa đổi / cải tiến cho tốt hơn (theo ý mọi người).

TRÂN TRỌNG CẢM ƠN TẤT CẢ CÁC BẠN VÀ GPE !

Bác sửa lại chút xíu :
Tại Form Xuất :
Bỏ hẳn sub này đi, vì không cần thiết :
PHP:
Private Sub NMaHang_AfterUpdate()
    On Error Resume Next
    If CDbl(Me.NTon) <= 0 Then
        MsgBox "Ma hang nay Khong Xuat duoc vi Ton bang Khong", vbOKOnly, "Mr Vu Ngoc"
        Me.NMaHang = ""
    End If
End Sub

Thân!
 
PM này Vũ Ngọc phải nên có thưởng như Lã Bất Vi, đại ý, nếu ai sửa 1 chữ trong "Lã Thị Xuân Thu" sẽ được ngàn vàng (# 1 chai Ken).
Mình sẽ cố gắng kiếm bia thôi nhé.
 
ThuNghi đã viết:
PM này Vũ Ngọc phải nên có thưởng như Lã Bất Vi, đại ý, nếu ai sửa 1 chữ trong "Lã Thị Xuân Thu" sẽ được ngàn vàng (# 1 chai Ken).
Mình sẽ cố gắng kiếm bia thôi nhé.

Em hòan tòan đồng ý với bác.

Chúng ta hãy cố gắng cùng nhau hòan thiện PM này, xong tổ chức hòan công một phát cho nó hòanh tráng.

Hẹn gặp lại các bác với Ken & Tiên nhé !

Thân mến !

P/S: Chiều nay em có mặt ở SG, bác mà rảnh hú em nhé.
 
Lần chỉnh sửa cuối:
vungoc đã viết:
Gửi lên đây chia sẻ với các bạn CHƯƠNG TRÌNH QUẢN LÝ KHO VẬT TƯ (PHỤ TÙNG)

I- LỜI CẢM ƠN !

Trước hết tôi xin được trân trọng cảm ơn những người bạn đã rất rất nhiệt tình giúp đỡ tôi trong quá trình thực hiện chương trình này, xin gửi lời cảm ơn đến:
- Mr. Okebab (Mr. Hiếu)
- Anhphuong (Anh Phạm Xuân Trường)
- Anh ThuNghi
- SoiBien (Anh Quốc Anh)
Trong chương trình này có sử dụng một số đọan Code có trên diễn đàn GPE.


II- SỬ DỤNG CHƯƠNG TRÌNH:

1/- Setup chế độ cho Excel:
Mở Excel -> Chọn Tools -> Chọn Macros -> Chọn Security -> Chọn Medium

2/- Mở File QUẢN LÝ KHO PHỤ TÙNG (VẬT TƯ) chọn chế độ Enable Macros.

3/- Đọc kỹ hướng dẫn sử dụng, trước khi dùng.
(Nếu có có vấn đề vui lòng liên hệ: Mr. Vũ Ngọc - 0903744734)



III/- NHỮNG ĐIỀM CẦN HÒAN THIỆN:


Tuy đã rất cố gắng nhưng chắc chắn chương trình vẫn còn nhiều thiếu sót. Một lần nữa tôi rất mong tiếp tục nhận được sự trợ giúp của các bạn để hòan thiện cho những nội dung sau:

1- Thiết lập code sao cho khi mở File sẽ tự động bỏ qua bước chọn Enable macros và vào thẳng giao diện Menu chính của chương trình / hoặc người dùng chỉ có thể chọn được chế độ Enable Macros (Tránh trường hợp người dùng vô tình hoặc cố ý chọn chế độ Disable Macros).

2- Ở Form Giấy Đề Nghị:
- Khi ta nhập liệu xong một hóa đơn / chứng từ và kết thúc bằng nút CẬP NHẬP. Lúc này dữ liệu đã được ghi vào DATA, chúng ta có thể nhìn thấy dữ liệu trong List Data Tổng Hợp Các Giấy Đề Nghị (Ở Form Nhập Liệu Giấy Đề Nghị).

- Làm sao để khi ta gõ một Số Chứng Từ nào đó đã có trong List Data Tổng Hợp Các Giấy Đề Nghị vào trong Ô Textbox Số Chứng Từ tại Form Nhập Liệu Giấy Đề Nghị (hoặc ta chọn một dòng dữ liệu nào đó trong List Data Tổng Hợp Các Giấy Đề Nghị) thì dữ liệu sẽ hiện ngược lên List Ghi Tạm và các ô Textbox, Combobox tương ứng trên form này để chúng ta sửa được dữ liệu sau đó bấm Nút Sửa để cập nhật lại những dữ liệu đã được sửa vào Data GiayDeNghi.
- Tạo code cho nút xóa trong phần form Giấy đề nghị này.


3- Form DANH MỤC, tạo chức năng cho các nút: Thêm mới, Sửa, Xóa.

4- Và các vấn đề khác cần sửa đổi / cải tiến cho tốt hơn (theo ý mọi người).

Đây là phần mềm chia sẻ, chúng ta hãy cùng nhau mỗi người một tay, làm cho nó hòan thiện hơn để có một PM ứng dụng hòan chỉnh từ Excel góp vào thư viện của GPE.

Mong sớm nhận được sự đóng góp của tất cả các bạn cho chương trình này !

TRÂN TRỌNG CẢM ƠN TẤT CẢ CÁC BẠN VÀ GPE !

Hôm nay tôi post lên đây File đã sửa bổ sung một số vấn đề như:
1- In Label, In phiếu nhập, xuất kho.
2- Trong Form Giấy đề nghị, khi click chọn vào List Data Tổng Hợp các Giấy Đề Nghị thì danh mục hàng hóa đó đã hiển thị ngược lên trên để chúng ta có thể sửa và ghi lại.

Các phần cần hòan thiện như đã nêu trên xin mời các bạn tiếp tục tham gia !
Nếu sửa, vui lòng thực hiện trong file này.
 

File đính kèm

  • Quan ly kho phu tung (Ver02)22-10-07.rar
    336.4 KB · Đọc: 5,878
Lần chỉnh sửa cuối:
Sub THXNT()
Dim HC As Long
Dim i As Long
Dim Ma As Range

Application.Calculation = xlCalculationManual
HC = S109.Range("C65500").End(xlUp).Row

S109.Select
Range("EA9:p9").EntireColumn.Hidden = False
S109.Range("A9:O" & HC + 1).ClearContents
S109.Range("A10:O" & HC + 2).Select
Call NLine

HC = S101.Range("A65000").End(xlUp).Row

S109.Range("B9:C" & HC + 7).Value = S101.Range("A2:B" & HC).Value
S109.Range("D9:D" & HC + 7).Value = S101.Range("D2:D" & HC).Value
S109.Range("E9:F" & HC + 7).Value = S101.Range("F2:G" & HC).Value
S109.Range("O9:O" & HC + 7).Value = S101.Range("E2:E" & HC).Value
Range("G9:G" & HC + 7).FormulaR1C1 = "=SUMPRODUCT((DataNgay<R5C7)*((LEFT(DataPhieu,2)=""PN"")-(LEFT(DataPhieu,2)=""PX""))*(DataPTMa=RC[-5])*(DataPTSL))+RC[-2]"
Range("H9:H" & HC + 7).FormulaR1C1 = "=SUMPRODUCT((DataNgay<R5C7)*((LEFT(DataPhieu,2)=""PN"")-(LEFT(DataPhieu,2)=""PX""))*(DataPTMa=RC[-6])*(DataPTGT))+RC[-2]"
Range("I9:I" & HC + 7).FormulaR1C1 = "=SUMPRODUCT((DataNgay>=R5C7)*(DataNgay<=R5C9)*(LEFT(DataPhieu,2)=""PN"")*(DataPTMa=RC[-7])*(DataPTSL))"
Range("J9:J" & HC + 7).FormulaR1C1 = "=SUMPRODUCT((DataNgay>=R5C7)*(DataNgay<=R5C9)*(LEFT(DataPhieu,2)=""PN"")*(DataPTMa=RC[-8])*(DataPTGT))"
Range("K9:K" & HC + 7).FormulaR1C1 = "=SUMPRODUCT((DataNgay>=R5C7)*(DataNgay<=R5C9)*(LEFT(DataPhieu,2)=""PX"")*(DataPTMa=RC[-9])*(DataPTSL))"
Range("L9:L" & HC + 7).FormulaR1C1 = "=SUMPRODUCT((DataNgay>=R5C7)*(DataNgay<=R5C9)*(LEFT(DataPhieu,2)=""PX"")*(DataPTMa=RC[-10])*(DataPTGT))"
Range("M9:N" & HC + 7).FormulaR1C1 = "=RC[-6]+RC[-4]-RC[-2]"
Range("P9:p" & HC + 7).FormulaR1C1 = "=IF(SUM(RC[-9]:RC[-2])>0,1,"""")"

With S109.Range("B9:p" & HC + 7)
.Calculate
.Value = .Value
.Sort Key1:=Range("P9"), Order1:=xlAscending, Key2:=Range( _
"B9"), Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase _
:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
End With

i = S109.Range("P65000").End(xlUp).Row
If i < 10 Then i = 10
S109.Range("A" & i + 1 & ":p" & HC + 7).ClearContents
S109.Range("P1:p5000").ClearContents

With Range("A9:A" & i)
.FormulaR1C1 = "=ROW()-8"
.Calculate
.Value = .Value
End With
With Range("E" & i + 2 & ":N" & i + 2)
.FormulaR1C1 = "=SUM(R9C:R[-1]C)"
.Calculate
.Value = .Value
End With
Range("C" & i + 2) = "TONG CONG"
Range("E9:F9").EntireColumn.Hidden = True
S109.Range("A10:O" & i + 1).Select
Call YLine
S109.Range("A" & i + 2 & ":O" & i + 2).Select
Call YLineTC
Range("D5").Select
End Sub
Sao tôi thử bỏ bớt .Calculate mà vẫn chạy ào ào, vậy có dư không.
Còn .FormulaR1C1 hình như cũng không cần.
Range("P9:p" & HC + 7).FormulaR1C1 = "=IF(SUM(RC[-9]:RC[-2])>0,1,"""")"
Thay bằng (bỏ .FormulaR1C1)
Range("P9:p" & HC + 7) = "=IF(SUM(RC[-9]:RC[-2])>0,1,"""")"
Tạo sao không làm thẳng vào cột A mà phải cột B, với lại chỉ cần tồn đầu kỳ + nhập trong kỳ >0 là lấy rồi không cần sum hết.
Tôi làm thử code sau, Vũ Ngọc xem thử. Vẫn theo thuật tóan cũ.
PHP:
Sub THXNT()
    Dim HC As Long
    Dim i As Long, j As Long
    Application.Calculation = xlCalculationManual
    HC = S109.Range("C65500").End(xlUp).Row
    S109.Select
    Range("EA9:P9").EntireColumn.Hidden = False
    S109.Range("A9:O" & HC + 1).ClearContents
    S109.Range("A10:O" & HC + 2).Select
    Call NLine
    HC = S101.Range("A65000").End(xlUp).Row
    S109.Range("B9:C" & HC + 7).Value = S101.Range("A2:B" & HC).Value
    S109.Range("D9:D" & HC + 7).Value = S101.Range("D2:D" & HC).Value
    S109.Range("E9:F" & HC + 7).Value = S101.Range("F2:G" & HC).Value
    S109.Range("O9:O" & HC + 7).Value = S101.Range("E2:E" & HC).Value
    Range("G9:G" & HC + 7) = "=SUMPRODUCT((DataNgay<R5C7)*((LEFT(DataPhieu,2)=""PN"")-(LEFT(DataPhieu,2)=""PX""))*(DataPTMa=RC[-5])*(DataPTSL))+RC[-2]"
    Range("H9:H" & HC + 7) = "=SUMPRODUCT((DataNgay<R5C7)*((LEFT(DataPhieu,2)=""PN"")-(LEFT(DataPhieu,2)=""PX""))*(DataPTMa=RC[-6])*(DataPTGT))+RC[-2]"
    Range("I9:I" & HC + 7) = "=SUMPRODUCT((DataNgay>=R5C7)*(DataNgay<=R5C9)*(LEFT(DataPhieu,2)=""PN"")*(DataPTMa=RC[-7])*(DataPTSL))"
    Range("J9:J" & HC + 7) = "=SUMPRODUCT((DataNgay>=R5C7)*(DataNgay<=R5C9)*(LEFT(DataPhieu,2)=""PN"")*(DataPTMa=RC[-8])*(DataPTGT))"
    Range("K9:K" & HC + 7) = "=SUMPRODUCT((DataNgay>=R5C7)*(DataNgay<=R5C9)*(LEFT(DataPhieu,2)=""PX"")*(DataPTMa=RC[-9])*(DataPTSL))"
    Range("L9:L" & HC + 7) = "=SUMPRODUCT((DataNgay>=R5C7)*(DataNgay<=R5C9)*(LEFT(DataPhieu,2)=""PX"")*(DataPTMa=RC[-10])*(DataPTGT))"
    Range("M9:N" & HC + 7) = "=RC[-6]+RC[-4]-RC[-2]"
    Range("A9:A" & HC + 7) = "=IF(SUM(RC7:RC9)>0,1,"""")"
        
    With S109.Range("a9:N" & HC + 7)
        .Value = .Value
        .Sort Key1:=Range("A9"), Order1:=xlAscending, Key2:=Range( _
            "B9"), Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase _
            :=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
            DataOption2:=xlSortNormal
      
    End With

    i = S109.Range("A65000").End(xlUp).Row
    If i < 10 Then i = 10
    S109.Range("A" & i + 1 & ":P" & HC + 7).ClearContents
       
    With Range("A9:A" & i)
        .FormulaR1C1 = "=ROW()-8"
        .Value = .Value
    End With
    With Range("E" & i + 2 & ":N" & i + 2)
        .FormulaR1C1 = "=SUM(R9C:R[-1]C)"
        .Value = .Value
    End With
    
    Range("C" & i + 2) = "T" & ChrW$(7893) & "ng " & "c" & ChrW$(7897) & "ng"
    Range("E9:F9").EntireColumn.Hidden = True
    S109.Range("A10:O" & i + 1).Select
    Call YLine
    S109.Range("A" & i + 2 & ":O" & i + 2).Select
    Call YLineTC
    Range("D5").Select
End Sub
Nhờ các bạn nghiên cứu hộ.
 
Lần chỉnh sửa cuối:
ThuNghi đã viết:
Sao tôi thử bỏ bớt .Calculate mà vẫn chạy ào ào, vậy có dư không.
Còn .FormulaR1C1 hình như cũng không cần.
Range("P9:p" & HC + 7).FormulaR1C1 = "=IF(SUM(RC[-9]:RC[-2])>0,1,"""")"
Thay bằng (bỏ .FormulaR1C1)
Range("P9:p" & HC + 7) = "=IF(SUM(RC[-9]:RC[-2])>0,1,"""")"
Tạo sao không làm thẳng vào cột A mà phải cột B, với lại chỉ cần tồn đầu kỳ + nhập trong kỳ >0 là lấy rồi không cần sum hết.
Tôi làm thử code sau, Vũ Ngọc xem thử. Vẫn theo thuật tóan cũ.

[/php] Nhờ các bạn nghiên cứu hộ.

Việc có thêm .Caculate là một thói quen khi lập trình (giống như khi khai báo Dim).
Ngay khi bắt đầu ta đã cho Application.Calculation = xlCalculationManual
Vì vậy với bất cứ việc tính toán nào trên Sheet (không kể tính trên VBA) thì ta nên sử dụng .Caculate để đảm bảo rằng việc tính toán này xảy ra.
With S109.Range("B9:p" & HC + 7)
.Calculate

Cái này bác không được bỏ, vì nếu bỏ thì vùng này sẽ không được tính toán -->> Kết quả sai.

Việc cho .FormualaR1C1 chẳng qua là để tính giá trị của nó thôi, sợ rằng khi Sort mà có công thức thì sẽ chậm hơn là không có công thức (???), vì vậy mới có nó.

Còn theo đề nghị thì cứ Mã hàng nào có tồn đầu kỳ, hoặc có phát sinh hoặc có tồn cuối kỳ thì sẽ được tính toán, còn không thì xóa hết.

Tạo sao không làm thẳng vào cột A mà phải cột B,
Cái này không hiểu lắm ??? Cột A để đánh số TT, cột B là mã hàng . Ý bác là bỏ STT đi à ??? cái này thì đơn giản thôi mà, ai thích thì có, không thích thì bỏ, có ảnh hưởng gì đâu.


Thân!
 
313132132132132131
 
Lần chỉnh sửa cuối:
1. Đó là việc các bạn ko bắt lỗi nên đại đa số xảy ra Runtime error, rồi nhảy ngay vào màn hình IDE của VBA.
2. Khi nhìn vào code (lúc bị lỗi thì nhảy ngay vào code - VBA's IDE), thấy các bạn viết quá cụ thể tới từng cell (A5, B5 gì đó), range, sheet, v.v... mà trong lập trình ít khi người ta viết cụ thể như vậy (Sao các bạn ko đặt tên vùng, v.v... đi, ko nên viết cụ thể như mấy dòng code ở topic trên, hay là trong Excel phải viết tường minh cho cell kiểu A4j....nhỉ?). Viết như vậy rất dễ bị lỗi. Theo mình nghĩ, viết trong VB đã tường minh rồi mà rất dễ xảy ra lỗi nếu ko biết viết, trong Excel's VBA còn khó hơn vì các cells, ranges, sheets,... thường đụng đến những thứ rất cụ thể. Mình rất hay viết kiểm tra trước khi thực hiện như: If cmdSave.Enable Then cmdSave.SetFocus chứ ko bao giờ mình viết thẳng cmdSave.SetFocus ngay. Như thế hạn chế được lỗi rất nhiều.
3. Có rất nhiều thao tác rất bình thường (save, thoát, v.v...) chạy chả hiểu sao ... lâu thế và 90% các thao tác như vậy dẫn đến treo Excel (hình như nó ghi vào file Excel). Tôi thường thao tác vài cái thì ... treo excel (hay là tôi chưa quen làm việc với Excel nhỉ???). Lần nào Excel của tôi mở các chương trình có VBA là y như rằng Excel của tôi cứ lăn quay ra chết.
Vâng, vì vậy GPE này rất cần những người . . . như bác!!!!!!!!

Ko rõ ý này có đụng chạm gì đến Excel ko nhé, nếu có gì ko phải thì mình xin lỗi trước, đó là việc mình thấy tại sao các bạn đang viết chương trình dưới dạng nhập liệu bằng Form thì tại sao lại viết trên Excel mà lại ko viết trên Access. Access cho phép tổ chức CSDL có quan hệ 1 chút, làm form và báo cáo cũng nhanh. Khi lưu record vào CSDL thì nhanh chứ ko phải save file Excel vào harddisk (cái này thì mình thấy tệ nhất khi làm trên Excel vì save file lâu kinh khủng). Mà rất rõ ràng trong bộ MS Office thì MS Access là công cụ để làm các chương trình quản lý vừa và nhỏ là rất phù hợp (còn Excel là bảng tính dạng ... Sheets). Nếu những lời này ko phù hợp thì mình sorry trước.
Cái này thì . . . vô cùng đúng . . nhưng lại rất nhiều người không theo kịp. Bởi làm ở Excel thì chẳng cần hiểu cấu trúc CSDL là gì cũng có thể làm được một cái gì đấy hay hay. Tuy nhiên nếu dùng Access mà không có những cái nền tảng đó thì coi như . . . thua.
Đây chính là một trong những lý do mà mọi người mất rất nhiều công sức với excel mà vẫn cứ làm trong khi đó để giải quyết vấn đề đó thì đối với Access (mới chỉ là Access thôi) coi như trò trẻ con.
Vì vậy Excell vẫn được ưa chuộng


P/S: Vừa chạy lại, trong màn hình xuất hàng, tại sao bấm nút cập nhật thì lại ... Printing??? (khó hiểu quá trời). Mình vội cancel printing thì chả thấy Excel đâu nữa :(
Cái này thì làm sao mà bác hiểu ngay được. Em là người trợ giúp mà còn lơ mơ nữa là. Vì đây là vấn đề đặc thù, đáng lý VuNgoc đưa lên File này sẽ phải nêu ra bài toán của File này như thế nào (Giải quyết vấn đề gì ??? tại sao??? . . . ). Nhưng chắc do thời gian không nhiều nên chưa viết

Nhân đây cũng nhắc nhở bác là nên cài một phần mềm in ảo để xem quản lý việc in ấn cũng như xem rằng cái mình in ra thực tế nó như thế nào (không phải lúc nào View cũng đúng đâu, đặc biệt là Excel)

Thân!
 
Lần chỉnh sửa cuối:
32132132132132132131
 
Lần chỉnh sửa cuối:
smbsolutions đã viết:
Nhưng thấy sau khi bấm "Cập nhật" mà nó Printing thì theo thói quen là "giật mình" và ... Esc vội :D :D

Chẳng qua là đặt tên hơi . . . Đáng lý phải là Lưu (hoặc Save). Chắc là bác VuNgoc muốn nói đến cái việc cập nhật dữ liệu từ Form vào trong Sheet Data. (Cái này phải nói là Lưu mới đúng)

Còn việc in là do khi Lưu chứng từ lại thì phải in ra chứng từ đó (mặc định), còn nếu không thích thì bỏ chọn (trên Form)

Còn cái việc làm cái List như bác nói quả thực là rất hay, nếu bác hoặc ai đó bỏ chút thời gian để làm mấy cái VD hoặc mấy cái bài về vấn đề này thì tốt quá. Em cũng thắc mắc rất nhiều về nó, làm sao để nhanh hơn nữa. Tuy nhiên cố gắng dùng ngôn ngữ và VD bình dân thì mới mong tụi em tiếp thu được. (kể cũng lạ, muốn học tiến sĩ mà cứ đòi phải được nghe giảng và đọc tài liệu = Tiếng Việt+-+-+-++-+-+-+)
Riêng khoản này thì bác phải thông cảm, tụi em không phải dân chuyên, chỉ lấy đây là niềm vui thôi nên cao quá là . . . đuối.

Thân!
 
Chữ màu đỏ là của Mr. Vũ Ngọc:

smbsolutions đã viết:
Tôi cũng thử sơ bộ file Excel này. Đây cũng là 1 file khá công phu, chứng tỏ tác giả cũng rất tập chung vào sản phẩm.

Tôi cũng định chạy thử để report lên cho các bạn nhưng... lại một lần nữa gặp phải vấn đề mà lần nào tôi chạy các file Excel cũng bị (chưa kịp làm gì).

1. Đó là việc các bạn ko bắt lỗi nên đại đa số xảy ra Runtime error, rồi nhảy ngay vào màn hình IDE của VBA (Sao mình test thử nhiều lần mà chưa bị trường hợp này - có ai bị giống smb... không cho mình biết luôn để tìm cách khắc phục).

2. Khi nhìn vào code (lúc bị lỗi thì nhảy ngay vào code - VBA's IDE), thấy các bạn viết quá cụ thể tới từng cell (A5, B5 gì đó), range, sheet, v.v... mà trong lập trình ít khi người ta viết cụ thể như vậy (Sao các bạn ko đặt tên vùng, v.v... đi, ko nên viết cụ thể như mấy dòng code ở topic trên, hay là trong Excel phải viết tường minh cho cell kiểu A4j....nhỉ?). (Trên excel phải vậy thôi) Viết như vậy rất dễ bị lỗi. Theo mình nghĩ, viết trong VB đã tường minh rồi mà rất dễ xảy ra lỗi nếu ko biết viết, trong Excel's VBA còn khó hơn vì các cells, ranges, sheets,... thường đụng đến những thứ rất cụ thể. Mình rất hay viết kiểm tra trước khi thực hiện như: If cmdSave.Enable Then cmdSave.SetFocus chứ ko bao giờ mình viết thẳng cmdSave.SetFocus ngay. Như thế hạn chế được lỗi rất nhiều.

3. Có rất nhiều thao tác rất bình thường (save, thoát, v.v...) (2 nút này đồng thời là nút SAVE - cho nên hơi lâu) chạy chả hiểu sao ... lâu thế và 90% các thao tác như vậy dẫn đến treo Excel (hình như nó ghi vào file Excel). Tôi thường thao tác vài cái thì ... treo excel (hay là tôi chưa quen làm việc với Excel nhỉ???). Lần nào Excel của tôi mở các chương trình có VBA là y như rằng Excel của tôi cứ lăn quay ra chết (Đúng là bác chưa quen với sử dụng ex rồi)

Rất tiếc là khi đã có quá nhiều runtime xảy ra thì mình lại ko thể tiếp tục chạy chương trình để test được nữa

Ko rõ ý này có đụng chạm gì đến Excel ko nhé, nếu có gì ko phải thì mình xin lỗi trước, đó là việc mình thấy tại sao các bạn đang viết chương trình dưới dạng nhập liệu bằng Form thì tại sao lại viết trên Excel mà lại ko viết trên Access. Access cho phép tổ chức CSDL có quan hệ 1 chút, làm form và báo cáo cũng nhanh. Khi lưu record vào CSDL thì nhanh chứ ko phải save file Excel vào harddisk (cái này thì mình thấy tệ nhất khi làm trên Excel vì save file lâu kinh khủng). Mà rất rõ ràng trong bộ MS Office thì MS Access là công cụ để làm các chương trình quản lý vừa và nhỏ là rất phù hợp (còn Excel là bảng tính dạng ... Sheets). Nếu những lời này ko phù hợp thì mình sorry trước.
(Rất muốn làm bằng Accsess nhưng tớ chả hiểu gì về nó cả nên phải làm bằng excel thôi !)


P/S: Vừa chạy lại, trong màn hình xuất hàng, tại sao bấm nút cập nhật thì lại ... Printing??? (khó hiểu quá trời). (Bấm cập nhật đồng nghĩa với việc làm xong nghĩa vụ ghi một chứng từ / hóa đơn, lúc ấy phải in luôn phiếu nhập hoặc xuất kho - đây là yêu cầu công việc của mình) Mình vội cancel printing thì chả thấy Excel đâu nữa :(. Lại phải vào Kill process)

Chạy lại quả nữa: Vào danh mục, tự nhiên thấy danh mục đã được list ra mà ko thấy cái option nào được check (tức là ko hiểu danh mục nào là hiện thời nữa). Sau đó, mình thử bấm vào "1-Phụ tùng" thì... mãi mới thấy danh mục được list lại (mình cứ tưởng...lại treo máy) - (Vấn đề này mình sẽ tiếp tục ghi nhận để cải tiến)

Nếu mà các bạn Add-Item lên ListBox thì thực sự ko được rồi các bạn ạ. Vì:

Thứ nhất, không có ai dùng Listbox (kể cả multi-listbox của FM20.DLL) để list những dữ liệu lớn (Vấn đề này mình lại phải nhờ các cao thủ trợ giúp rồi - có ai có pp khác giúp mình với nhé)

Thứ 2, Add item chỉ nên làm việc với lượng record là cực kỳ limited (danh sách đơn vị, phòng ban, kho hàng... thì OK chứ danh sách hàng hóa, vật tư, khách hàng,... thì ko nên). Bạn nên nghiên cứu về Grid (tỷ như cái lìu tìu nhất là MS Flexgrid có ngay trong Windows chẳng hạn) hoặc dùng ngay Sheet của Excel để list danh mục ra cũng được (như cái danh mục hay sổ nhật ký của A-Excel của Tuân ấy). Sheet của Excel có method để có thể query dữ liệu lên sheet thông qua ODBC APIs (cái này cũng cũ lắm rồi).

Thứ 3, khi có 1 long process thì nên thông báo cho người dùng chờ đợi (màn hình thông báo hoặc ít nhất có cái đồng hồ cát). Chứ bao lần mình tưởng ... treo máy Vấn đề này mình đã nghĩ tới, và cũng rất muốn như thế nhưng chưa làm được, nhờ các cao thủ giúp mình mục này đi
.
-

Cảm ơn ý kiến đóng góp của bạn.
Tiếp tục mong nhận được sự trợ giúp để khắc phục những điểm đã nêu trên.

Thân ái !
 
Lần chỉnh sửa cuối:
121314343432432432
 
Lần chỉnh sửa cuối:
smbsolutions đã viết:
Trên diễn đàn có ví dụ làm việc với dữ liệu Excel, đẩy lên MS FlexGrid sử dụng ADO rồi đấy. Chỉ viết thêm tý tẹo nữa là OK. Mỗi tội viết ... VB. Nhưng mình nghĩ cũng thế cả thôi. Cách làm việc với dữ liệu thì tạm thời nên sử dụng ADO đi (bác Duyệt làm món này nhiều rồi mà)

Bác Duyệt ơi, chung với em một tay đi nào !!!
 
30918382130921831
 
Lần chỉnh sửa cuối:
smbsolutions đã viết:
Trên diễn đàn có ví dụ làm việc với dữ liệu Excel, đẩy lên MS FlexGrid sử dụng ADO rồi đấy. Chỉ viết thêm tý tẹo nữa là OK. Mỗi tội viết ... VB. Nhưng mình nghĩ cũng thế cả thôi. Cách làm việc với dữ liệu thì tạm thời nên sử dụng ADO đi (bác Duyệt làm món này nhiều rồi mà)
Vâng, Bác Duyệt làm nhiều rồi, nhưng bác ấy cứ như là Yang Can Cook ấy.
Làm món thì cực ngon (em khỏi phải quảng cáo), luôn miệng nói là : Yang làm được, các bạn cũng làm được.
Híc híc, em làm theo bác ấy mà được thì em . . chết liền. Cũng bởi bì em . . ngu quá đấy mà.+-+-+-++-+-+-+
Lấy File của bác ấy, lắp ghép vào thì chạy Ok, tuy nhiên để hiểu được nó để khi áp dụng từng phần vào cái của mình thì lại . . . chít em.

Thôi, đành chạy ra cửa hàng ăn của Yang mua mấy phần về ăn thôi, còn Yang làm thế nào để ra các món ăn đó thì . . . hồi sau sẽ rõ.

(Cũng giống như bây giờ em hướng dẫn cho các bạn mới chập chững đi vào Excel làm 1 Form, làm 1 UF vậy)

Híc híc híc!!!

Thân!

P/S : Em nói thế các bác đừng giận em và cũng đừng nản lòng. Người ta thường nói : Danh sư xuất cao đồ.
Cũng chỉ tại tụi em không được thông minh lắm, lại không chuyên tâm nên mới đòi hỏi "bình dân học vụ" như vậy. Nếu thấy không hợp thì bỏ qua mấy bài kiểu này của em. Cảm ơn các bác.
 
Lần chỉnh sửa cuối:
Mình là dân "Mò", vì chẳng học tí ti nào về IT cũng như lập trình, bởi vậy phải lấy cái cần cù rồi lại "mò tiếp". Từ khi biết GPE cứ DownLoad file rồi xem, rồi mò mẫm, rồi làm ứng dụng cho công việc cụ thể (Những việc này thấy mấy em nhân viên trong công ty cứ phải làm thủ công mất thời gian mà kém hiệu quả) vậy là tính trách nhiệm lại phải trỗi dậy, quyết làm để thay đổi cách làm việc cho hiệu quả hơn. Tuy là mình mệt (vì đêm nào cũng mọ mẫm suốt đến khuya lắc - vợ con buồn quá trời vì không có thời gian để ... tâm sự) nhưng giúp mấy ẻm khỏe hơn để vui cười ... cho đời thêm tươi !!!

Tuy rất cố gắng nhưng mò mãi cũng phải tắc, đành phải chạy tới các bác Okebab, bác anhphuong, ThuNghi, ... phải nói là mọi người đều rất nhiệt tình giúp đỡ (có hôm bác MrOkebab phải mất cả ngày trời với mình, mà vẫn vui vẻ).

Được các bác chỉ bảo ngọn ngành thì là điều quý lắm rồi / cảm ơn nhiều !

Chúc mọi người luôn vui vẻ !
 
Lần chỉnh sửa cuối:
Lần nào Excel của tôi mở các chương trình có VBA là y như rằng Excel của tôi cứ lăn quay ra chết (Đúng là bác chưa quen với sử dụng ex rồi)

Nói là ko biết sử dụng là nói vui vậy thôi chứ tôi ko ngớ ngẩn đến mức ko làm Excel mà ko hiểu cách test ứng dụng đâu (tớ coding quen nên biết đụng vào đâu thì biết là xảy ra lỗi runtime). Phần mềm nào tôi test mà chẳng ra lỗi kiểu đó (chứ đừng nói đến Excel). Misa nổi tiếng là làm theo quy trình CMM level mấy gì đó mà khi tớ xóa hết dữ liệu đi thì lỗi cũng xảy ra. (Lập trình là bao giờ cũng có 1 kiểu kiểm tra (trong rất nhiều kiểu test) khi ko có dữ liệu và khi có cực nhiều dữ liệu). Đối với tớ, ở nghề lập trình thì tính cẩn thận được đặt lên hàng số 1.

VungNgoc cứ thử mấy cái combo box trong mục báo cáo, chọn xong rồi xóa đi (khi listindex = -1 mới gây ra đầy lỗi). Cái này dân lập trình biết là rất hay lỗi nên chỉ cần sờ đến là biết ngay lỗi sẽ xảy ra ở đâu mà. :)
 
smbsolutions đã viết:
Nói là ko biết sử dụng là nói vui vậy thôi chứ tôi ko ngớ ngẩn đến mức ko làm Excel mà ko hiểu cách test ứng dụng đâu (tớ coding quen nên biết đụng vào đâu thì biết là xảy ra lỗi runtime). Phần mềm nào tôi test mà chẳng ra lỗi kiểu đó (chứ đừng nói đến Excel). Misa nổi tiếng là làm theo quy trình CMM level mấy gì đó mà khi tớ xóa hết dữ liệu đi thì lỗi cũng xảy ra. (Lập trình là bao giờ cũng có 1 kiểu kiểm tra (trong rất nhiều kiểu test) khi ko có dữ liệu và khi có cực nhiều dữ liệu). Đối với tớ, ở nghề lập trình thì tính cẩn thận được đặt lên hàng số 1.

VungNgoc cứ thử mấy cái combo box trong mục báo cáo, chọn xong rồi xóa đi (khi listindex = -1 mới gây ra đầy lỗi). Cái này dân lập trình biết là rất hay lỗi nên chỉ cần sờ đến là biết ngay lỗi sẽ xảy ra ở đâu mà. :)

Mình sẽ cố gắng khắc phục những vấn đề đã nêu.

Thanks !
 
Web KT
Back
Top Bottom