• Xin giúp đỡ về VBA Access !
  • Xin giúp đỡ về VBA Access !

    vocan > 14-05-16, 11:49 AM

    Xin chao moi nguoi !
    Vi kien thuc cua minh ve access va VBA chi o dang tap toe  ma gio lai phai viet mot cai tool nho nen gap rat nhieu kho khan nho moi nguoi giup do .
    Kho khan dau tien cua minh hien tai la minh muon dung cau lenh SQL de tao bang trong Access nhưng tên của bảng thì có thể tùy biến được
    Ví dụ:  Trên form tạo một button , khi nhấn vào sẽ tự động theo một bảng thì được rồi , nhưng tên của bảng sẽ là cố định . Giờ mình muốn tên bảng có thể nhập vào được . Ví dụ như nhập tên bảng vào một textbox , khi ấn vào button thì sẽ tự động tạo một bảng có tên giống như trong text box
    Mong mọi người giúp đơn
    Cảm ơn nhiều
  • RE: Xin giúp đỡ về VBA Access !

    vocan > 14-05-16, 12:09 PM

    KHo khăn tiếp theo mong mọi người giúp đỡ là tạo một bảng mới có dữ liệu được lấy từ 2 bảng khác nhau . Cái này mình có thể làm được với câu lệnh insert into với dữ liệu là liên kết của hai bảng (inner join ..) (Minh không biết có đúng không nữa vì khi đánh lệnh nó chạy không được . Va mình hi vọng các bạn giúp mình một vấn đề nhỏ nữa là mình muốn tên của 2 bảng có thể tùy chọn .
    Vi du mình muốn lấy dữ liệu của 2 ngày 19 ,20 hoặc 19, 2.... . Gần giống như mình chọn tên 2 bảng trên text hoặc combo thì sẽ tạo ra một bảng mới có dữ liệu 2 ngày đó.
     Chốt lại cả 2 kho khăn của mình đều là làm thế nào để dùng biến trong câu lệnh SQL trong VB a
    Cảm ơn mọi người
  • RE: Xin giúp đỡ về VBA Access !

    ongke0711 > 14-05-16, 12:33 PM

    Tạo bảng mới:
    Mã PHP:
    Private Sub cmdTaoBang_Click()
       Dim db As Database
       Dim strSQL 
    As String
       Set db 
    CurrentDb()
       strSQL "CREATE TABLE [" Me.TextBoxTenBang "] (FieldPK COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, Field1 TEXT,Field2 TEXT, Field3 MEMO, Field4 CURRENCY, Field5 NUMBER, Field6 DATE );"
       db.Execute strSQL
       Set db 
    Nothing
    End Sub 

    Bạn tham khảo thêm link này: http://thuthuataccess.com/forum/thread-9257.html

    Có dữ liệu mẫu để hướng dẫn cho nhanh.
  • RE: Xin giúp đỡ về VBA Access !

    vocan > 29-06-16, 09:01 AM

    (14-05-16, 12:33 PM)ongke0711 Đã viết: Tạo bảng mới:
    Mã PHP:
    Private Sub cmdTaoBang_Click()
       Dim db As Database
       Dim strSQL 
    As String
       Set db 
    CurrentDb()
       strSQL "CREATE TABLE [" Me.TextBoxTenBang "] (FieldPK COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, Field1 TEXT,Field2 TEXT, Field3 MEMO, Field4 CURRENCY, Field5 NUMBER, Field6 DATE );"
       db.Execute strSQL
       Set db 
    Nothing
    End Sub 

    Bạn tham khảo thêm link này: http://thuthuataccess.com/forum/thread-9257.html

    Có dữ liệu mẫu để hướng dẫn cho nhanh.

    Cam on ban , minh lai co them thac mac mong ban giup do , ban xem giup minh  đoạn Code :
    Mã:
    Private Sub Capnhat_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim rs1 As DAO.Recordset
    Dim dbqf As DAO.QueryDef
    Set db = CurrentDb
    Set rs = db.OpenRecordset("T_hanghoa")
    Set rs1 = db.OpenRecordset("SELECT * FROM T_ChiTietNhap WHERE T_ChiTietNhap.MaPN='" & [Forms]![F_Nhap]![MaPN] & "'")
    rs.MoveFirst
    rs1.MoveFirst
    Do While rs1.EOF = False
    Do While rs.EOF = False
    '' MsgBox " hang hoa " & rs!mamh & " nhap " & rs1!mahang
    If rs!mamh = rs1!mahang Then
    rs.Edit
    rs!slton = rs!slton + rs1!soluongnhap
    rs.Update
    End If
    rs.MoveNext
    Loop
    ''MsgBox "Nhap" & rs1!mahang
    rs1.MoveNext
    Loop
    rs.Close
    rs1.Close
    db.Close
    End Sub

    Mục đích của mình dùng để cập nhật tôn kho , Nhưng khi chay nó chỉ cập nhật được record đầu của bảng hàng hóa, vòng lặp trong chỉ thực hiện 1 lân.
    Mình mới tập tành nên không biết sai chỗ nào
    ban xem giúp mình
    Bạn cho mình hỏi thêm , mọi người hay dùng cách nào để cập nhật TK vậy , vì mình thấy cách của mình không được hay á
    Cảm ơn nhiều
  • RE: Xin giúp đỡ về VBA Access !

    maidinhdan > 29-06-16, 03:43 PM

    (29-06-16, 09:01 AM)vocan Đã viết: Ban xem giup minh  đoạn Code :
    Mã:
    Private Sub Capnhat_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim rs1 As DAO.Recordset
    Dim dbqf As DAO.QueryDef
    Set db = CurrentDb
    Set rs = db.OpenRecordset("T_hanghoa")
    Set rs1 = db.OpenRecordset("SELECT * FROM T_ChiTietNhap WHERE T_ChiTietNhap.MaPN='" & [Forms]![F_Nhap]![MaPN] & "'")
    rs.MoveFirst
    rs1.MoveFirst
    Do While rs1.EOF = False
    Do While rs.EOF = False
    '' MsgBox " hang hoa " & rs!mamh & " nhap " & rs1!mahang
    If rs!mamh = rs1!mahang Then
    rs.Edit
    rs!slton = rs!slton + rs1!soluongnhap
    rs.Update
    End If
    rs.MoveNext
    Loop
    ''MsgBox "Nhap" & rs1!mahang
    rs1.MoveNext
    Loop
    rs.Close
    rs1.Close
    db.Close
    End Sub

    Mục đích của mình dùng để cập nhật tôn kho , Nhưng khi chay nó chỉ cập nhật được record đầu của bảng hàng hóa, vòng lặp trong chỉ thực hiện 1 lân.
    Mình mới tập tành nên không biết sai chỗ nào
    ban xem giúp mình
    Bạn cho mình hỏi thêm , mọi người hay dùng cách nào để cập nhật TK vậy , vì mình thấy cách của mình không được hay á
    Cảm ơn nhiều

    Gửi cái file lên đây.
  • RE: Xin giúp đỡ về VBA Access !

    vocan > 30-06-16, 08:52 AM

    (29-06-16, 03:43 PM)maidinhdan Đã viết: Gửi cái file lên đây.
    Xin lỗi , mình không biết chèn file vào đây , bạn tải về giúp mình theo link
    https://drive.google.com/file/d/0BwUQpIi...sp=sharing
    Code năm trên sự kiện Click của nút " Cập Nhât" trên form "Nhap"
    Bạn xem giúp mình
    Thank!
    PS :Vì mình mới tập làm nên mới chỉ nghĩ được phương pháp cập nhật TK này , bạn có thể chỉ dẫn mình có cách khác không !
  • RE: Xin giúp đỡ về VBA Access !

    ongke0711 > 30-06-16, 12:19 PM

    Tôi thấy code bạn chạy đúng rồi mà. Để loại trường hợp giá trị tồn = Null thì bạn dùng thêm hàm Nz vào công thức tính tồn.
    rs!slton= nz(rs!slton) + nz(rs1!soluongnhap)

    Về việc tính tồn kho, cách của bạn sẽ phát sinh sai tồn kho từa lưa khi thực hiện nghiệp vụ nhập liệu trên form.
    VD: sau khi nhập và Update xong, muốn vô sửa lại số lượng nhập, tồn kho sẽ tiếp tục thêm số lượng vừa mới sửa chứ nó có biết trừ ra số lượng cũ không?  007
    Bạn cứ test tất cả các trường hợp phát sinh đi sẽ thấy.
    Cách tính tồn kho, trên diễn đàn cũng có nhiều bài viết rồi đấy, bạn search rồi tham khảo.
  • RE: Xin giúp đỡ về VBA Access !

    vocan > 30-06-16, 12:44 PM

    (30-06-16, 12:19 PM)ongke0711 Đã viết: Tôi thấy code bạn chạy đúng rồi mà. Để loại trường hợp giá trị tồn = Null thì bạn dùng thêm hàm Nz vào công thức tính tồn.
    rs!slton= nz(rs!slton) + nz(rs1!soluongnhap)

    Về việc tính tồn kho, cách của bạn sẽ phát sinh sai tồn kho từa lưa khi thực hiện nghiệp vụ nhập liệu trên form.
    VD: sau khi nhập và Update xong, muốn vô sửa lại số lượng nhập, tồn kho sẽ tiếp tục thêm số lượng vừa mới sửa chứ nó có biết trừ ra số lượng cũ không?  007
    Bạn cứ test tất cả các trường hợp phát sinh đi sẽ thấy.
    Cách tính tồn kho, trên diễn đàn cũng có nhiều bài viết rồi đấy, bạn search rồi tham khảo.

    Hix vậy mà nó chỉ cộng tồn kho một mặt hàng đầu tiên , ví dụ 1 phiếu nhập nhập nhiều mặt hàng , nó chỉ cộng vào có một măth hàng á .
    Vòng lặp trong chỉ chạy có một lần , mình cũng không biết sai chỗ nào nữa . Bạn thử chạy sẽ thấy
    để mình tìm các bài hướng dẫn TK xem thế nào a
  • RE: Xin giúp đỡ về VBA Access !

    ongke0711 > 30-06-16, 02:49 PM

    Thì tôi đã nói nếu [slton] trong table hàng hóa có giá trị NULL thì code sẽ không cập nhật vì nó không hiểu trị NULL + số lượng nhập = cái gì? các field tính toán không được NULL.
    Do vậy, hoặc bạn set default value của field [slton] = 0 (trong table) hoặc dùng hàm Nz cho field tính toán.
  • RE: Xin giúp đỡ về VBA Access !

    vocan > 10-07-16, 03:32 PM

    (30-06-16, 02:49 PM)ongke0711 Đã viết: Thì tôi đã nói nếu [slton] trong table hàng hóa có giá trị NULL thì code sẽ không cập nhật vì nó không hiểu trị NULL + số lượng nhập = cái gì? các field tính toán không được NULL.
    Do vậy, hoặc bạn set default value của field [slton] = 0 (trong table) hoặc dùng hàm Nz cho field tính toán.

    Phiền các bạn giúp mình chút nữa
    Làm cách nào để mình có thể gán data cho subform được vậy ạ .
    Vi dụ như trong file cua mình trong form quanlyphieunhap , hiện tại mình có 3 Subform để khi chọn điều kiện tìm thì 2 cái còn lại sẽ bị ẩn , cái còn lại hiện . Có cách nào để khi mình chọn điều kiện tìm thì data của SF sẽ thay đổi theo được a
    Thứ 2 là khi mình ấn double vào phiếu nhập  bên SF tìm được thì bên Subform bên cạnh sẽ hiện chi tiết phiếu nhập đó được a
    Các bạn lấy file về giup mình với
    Mình cảm ơn nhiều

    https://drive.google.com/file/d/0BwUQpIi...sp=sharing