Đánh giá chủ đề:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Code lấy một field trong query ra textbox trong Access
#11
(19-10-14, 08:59 PM)canhcfc Đã viết: Trong code đã có lệnh rs.movefirst là đi đến mẫu tin đầu tiên, có nghĩa mấun tin đầu tiên là hiện hành và lấy giá trị của Field tên là "3" không có gì sai.
Rất cảm ơn bạn @vulhu06, lỗi ở đây là do mình không focus về textbox cần đưa giá trị ra, thêm dòng lệnh "textbox1.setfocus" là okay. Nhưng khi đó lại xuất hiện lỗi mới mong mọi người giúp đỡ
Lỗi như sau:
Khi lấy dữ liệu từ 1 field trong bảng hay query độc lập đưa ra 1 textbox trong form bằng code như trên thì okay nhưng khi query cần lấy dữ liệu lọc theo 1 listbox nằm trên form đó thì lại lỗi " 3061 - too few parameters".
Cụ thể để dễ hiểu như sau: trên form1 có listbox1 và textbox1
query1 lọc dữ liệu theo listbox1
khi đó dùng code như trên để lấy 1 field trong query1 đưa ra textbox1 lại bị lỗi "too few parameters"

Các bác xem giúp em http://www.mediafire.com/download/11x0a8...U_CD.accdb
Cảm ơn! 015

mình có vài góp ý với file của bạn như sau:

1/thường thì khi gán giá trị cho một điều khiển ta dùng thuộc tính .Value chứ không dùng .Text . Chẳng lẽ trên form có vài chục control thì phải set focus cho từng cái?( .Value thì không cần có focus)

2/Câu SQL của bạn phát biểu sai
Mình sửa câu:
Mã:
"SELECT PHATSINH.STT, PHATSINH.ngay, PHATSINH.TENVT, PHATSINH.slnhap, PHATSINH.slxuat, PHATSINH.sltondau, PHATSINH.sltoncuoi, PHATSINH.BPSD, PHATSINH.LYDO FROM PHATSINH WHERE (((PHATSINH.TENVT) Like [Forms]![Frphsinh]![TENVT]))ORDER BY PHATSINH.STT DESC;"

lại thành:
Mã:
"SELECT  * FROM PHATSINH WHERE (((PHATSINH.TENVT) Like '" & [Forms]![Frphsinh]![TENVT] & "'))ORDER BY PHATSINH.STT DESC;"

-Ở câu SQL trên có 3 chỗ cần lưu ý sau:
a/ Khi chọn tất cả các trường trong table thì chỉ cần viết ngắn gọn "SELECT * FROM PHATSINH"
b/Khi đưa biến vào bạn phải tách chuỗi ra, ghép với biến sau đó ráp phần còn lại của chuỗi vào
VD: câu SQL trên gồm "SELECT ... '" và Biến và "'))ORDER BY ..."
c/ Bạn chú ý dấu nháy đơn (') trước và sau tên biến kiểu string

***Thường để gỡ lỗi khi viết SQL là Debug.Print: bạn khai báo một biến SQL, gán chuỗi trên cho SQl sau đó gõ Debug.Print SQL, Mở cửa sổ Immedite (Bấm Ctrl + G), chạy code, bạn sẽ thấy câu SQL đầy đủ sau khi ráp nối với giá trị của biến


3/Vấn đề về khai báo biến đối tượng
-luôn luôn phải hủy biến đối tượng khi không sử dụng đến để giải phóng tài nguyên cho máy
-Đề sử dụng biến rs như code cho nút nhấn của bạn thì phải khai báo rs trên đầu trang code của Form (Bạn nên tham khảo thêm về tầm vực của biến)
-Biến Recordset nên khai báo rõ thuộc DAO hay ADO vì cả DAO và ADO đều sử dụng Recordset nhưng các phương thức, thuộc tính,... thì lại hoàn toàn khác nhau
Giả sử chỉ khai báo: Dim rs As Recordset thì do trong danh sách thư viện tham chiếu bạn chỉ tham chiếu đến DAO nên chạy bình thường.
Sau đó trong quá trình phát triển ứng dụng bạn thấy cần thêm ADO và vô tình khai báo ADO nằm trên DAO(trong danh sách thư viện tham chiếu ), khi đó Recordset đó sẽ thuộc về ADO và tất nhiên bạn sẽ nhận được rất nhiều lỗi (do các câu lệnh trước đây bạn viết cho DAO) mà nếu là người ít kinh nghiệm bạn sẽ không hiểu vì sao
Ví dụ sau đây bạn sẽ thấy báo lỗi:
QUAN LY VAT TU CD (Error).rar

Còn đây là file mình đã sửa cho bạn:

http://www.mediafire.com/download/p9m9d6...+TU+CD.rar

Có lẽ bài viết cũng khá dài rùi, có gì thắc mắc bạn cứ hỏi nhé! 015
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn canhcfc , Minh Tiên , bvchauthanh
#12
Cảm ơn bạn @MatTroiNguQuen rất nhiều
Mình mới xem sơ qua tại đang làm việc nhưng có câu này mình không hiểu mong bạn giúp:
Mã:
Nz([Forms]![Frphsinh]![TENVT].Value, "")
từ Nz ở trong câu đó nghĩa là gì vậy bạn? 016
Chữ ký của canhcfc Xin chào, mình là canhcfc, Tham gia http://thuthuataccess.com/forum từ ngày 24-09 -14.
Reply
Những người đã cảm ơn
#13
Hàm Nz dùng để khử giá trị null:
bạn xem thêm tại đây:
http://office.microsoft.com/en-in/access...28890.aspx
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn canhcfc
#14
Cảm ơn mọi người đã giúp đỡ, các vấn đề trên mình đã thực hiện được nhưng mình lại vướng vấn đề sau mong mọi người giúp:
1. Mình khia báo biến & dùng xong muốn xóa biến như bạn @MatTroiNguQuen đã nói để giải phóng tài nguyên thì lại lỗi
Mã:
Dim bienA as string
set bienA = Nothing

2. Mình muốn ghép câu lệnh thì dùng như thế nào. Cụ thể:
Mình muốn Text1 = 1 +(-) 2
trong đó dấu + hay - là mình quy định trong biến "Dim Dau as string*1". Code của mình như sau & không chạy được"
Mã:
Dim Dau as string*1
If Frame1.Value = 1 then Dau = "+" Else Dau = "-" 'Set dau + hay -
Text1.Value = 1 & Dau & 2 'Loi
040
Chữ ký của canhcfc Xin chào, mình là canhcfc, Tham gia http://thuthuataccess.com/forum từ ngày 24-09 -14.
Reply
Những người đã cảm ơn
#15
1/các biến kiểu chuỗi, số, luận lý,.. không phải là biến đối tượng nên không cần hủy sau khi sử dụng

2/Báo lỗi gì vậy bạn?
-Nếu làm như bạn thì Text1.Value sẽ có giá trị là một chuỗi "1+2" (hoặc "1-2")
-Muốn chuyển đổi một chuỗi thành công thức thì bạn dùng hàm Eval:
VD: nếu muốn Text1.Value = 3 hay -1 thì bạn code như sau:
Mã:
Dim Dau As String * 1
    If Frame1.Value = 1 Then Dau = "+" Else Dau = "-"
    Text1.Value = Eval(1 & Dau & 2)
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn canhcfc
#16
Qua 1 thời gian tìm tòi & được sự giúp đỡ nhiệt tình của mọi người, mình đã viết được file quản lý vật tư bằng access đến được phần xuất báo cáo & lại vướng nhiều vấn đề không giải quyết được, xin phép nhờ các bạn giúp đỡ, vấn đề như sau:
[Hình: Photo-VKCEGM7X-D.jpg]
1./ Report như hình trên, số lượng tồn cuối phải là 4 mới đúng (lấy theo tồn cuối gần đây nhất) vậy phải làm sao, mặc định nó sẽ lấy mẫu tin đầu tiên nhất.016

2./ Vấn đề 2: trong form mình gán biến như sau:
Mã:
i=val(Slnhap)
Khi đó nếu slnhap là 12.7 thì nó chỉ hiểu là 12 --> mình phải bỏ hàm val mới đúng, vấn đề này mình chỉ hỏi để biết vì khi mình bỏ hàm Val thì kết quả ok

3./ Mình muốn xuất báo cáo chỉ gồm những dòng in đậm trong báo cáo trên thì làm sao? Muốn xuất tất cả phát sinh trong 1 ngày tùy chọn thì sao? phát sinh theo BPSD thì làm sao? 021

4./ trong Form Frphsinh mình nhập vào ô số lượng là 12,7 thì ok nhưng nhập 12.7 thì nó tự hiểu là 127 khi đó nếu sơ xuất là đi luôn. Mình muốn là nhập sai dấu thì báo lỗi hay tốt hơn nữa là nhập "," hay "." gì cũng hiểu là dấu thập phân.

Mong các bạn giúp đỡ sớm vì mình định đầu tháng sẽ sử dụng file này 040
File mình gửi kèmhttps://www.mediafire.com/?ldvann1jxn8o8ih
Chữ ký của canhcfc Xin chào, mình là canhcfc, Tham gia http://thuthuataccess.com/forum từ ngày 24-09 -14.
Reply
Những người đã cảm ơn
#17
Vấn đề thứ 4 mình đã giải quyết được bằng cách thay mã Ascii 46 bằng 44 như sau
Mã:
Private Sub slnhap_Keypress(KeyAscii As Integer) 'Thay dau cham bang dau phay
    'On Error Resume Next
    If KeyAscii = 46 Then
        KeyAscii = 44
    End If
End Sub
Các vấn đề còn lại vẫn bí, nhờ các bạn giúp giùm 015
Chữ ký của canhcfc Xin chào, mình là canhcfc, Tham gia http://thuthuataccess.com/forum từ ngày 24-09 -14.
Reply
Những người đã cảm ơn
#18
Mọi người làm ơn giúp mình, mình muốn tham chiếu đến Table VATTU bằng tabledef nhưng bị lỗi
Mã:
dim db as DAO.Database
dim tbl as DAO.Tabledef
set db = CurrentDb
set tbl = Db.TableDefs(VATTU)
MsgBox tbl.RecordCount() 'Lỗi 3265 - Item not found in this collection???
Rất là đau cái đầu, tìm trên Internet nó toàn dùng như thế này mà mình dùng lại bị crash 020
Chữ ký của canhcfc Xin chào, mình là canhcfc, Tham gia http://thuthuataccess.com/forum từ ngày 24-09 -14.
Reply
Những người đã cảm ơn
#19
Bạn nên tách các câu hỏi ra thành các chủ đề khác nhau!

-Mình bận quá nên bạn xem ví dụ nhá:

QUAN LY VAT TU CD 1.rar

-Câu này phát biểu sai: set tbl = Db.TableDefs(VATTU) Sử lại là:

Mã:
set tbl = Db.TableDefs("VATTU")

(Tên table phải để trong hai dấu móc kép "" )

P/S: các câu hỏi không cùng chủ đề bạn nhớ tạo chủ đề khác nhé 024
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn
#20
-Nếu muốn báo cáo trong 1 ngày thì chỉ cần chọn "Từ ngày" và "đến ngày " trùng nhau là được
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
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
Question [Help] Link tất các table trong một file.mdb bằng VBA MinhnHang 6 141 29-11-16, 05:18 PM
Bài mới nhất: MinhnHang
  Tránh xung đột dữ liệu trong access quocdung9999 16 1,686 23-11-16, 11:13 AM
Bài mới nhất: quocdung9999
  [Hỏi] Kết nối nhiều lần hay kết nối 1 lần trong ADO ưu điểm hơn Minh Tiên 1 114 10-11-16, 10:41 AM
Bài mới nhất: maidinhdan
  Summary bằng VBA trong MS Access. MinhnHang 6 313 08-11-16, 08:36 AM
Bài mới nhất: MinhnHang
  [Hỏi] Số Thứ Tự Theo Nhóm Hàng Hóa Trong Access pherotao 2 134 02-11-16, 03:05 PM
Bài mới nhất: pherotao

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ơ