Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Xin giúp đỡ về VBA Access !
#1
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
Chữ ký của vocan vocan,gia nhập Thủ Thuật Access từ 14-05 -16.
Reply
Những người đã cảm ơn
#2
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
Chữ ký của vocan vocan,gia nhập Thủ Thuật Access từ 14-05 -16.
Reply
Những người đã cảm ơn
#3
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.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan , vocan
#4
(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
Chữ ký của vocan vocan,gia nhập Thủ Thuật Access từ 14-05 -16.
Reply
Những người đã cảm ơn
#5
(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.
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
(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 !
Chữ ký của vocan vocan,gia nhập Thủ Thuật Access từ 14-05 -16.
Reply
Những người đã cảm ơn
#7
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.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn vocan
#8
(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
Chữ ký của vocan vocan,gia nhập Thủ Thuật Access từ 14-05 -16.
Reply
Những người đã cảm ơn
#9
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.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn vocan
#10
(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
Chữ ký của vocan vocan,gia nhập Thủ Thuật Access từ 14-05 -16.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Tránh xung đột dữ liệu trong access quocdung9999 16 1,689 23-11-16, 11:13 AM
Bài mới nhất: quocdung9999
  Summary bằng VBA trong MS Access. MinhnHang 6 317 08-11-16, 08:36 AM
Bài mới nhất: MinhnHang
  Cần giúp đỡ chuyển số có thập phân ra chữ ledangvan 12 633 07-11-16, 03:56 PM
Bài mới nhất: maidinhdan
  [Hỏi] Số Thứ Tự Theo Nhóm Hàng Hóa Trong Access pherotao 2 145 02-11-16, 03:05 PM
Bài mới nhất: pherotao
  [Help] Truy vấn ngày phát sinh gần nhất trong access cuuvinh 4 226 21-09-16, 05:01 PM
Bài mới nhất: cuuvinh

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ