-
Update theo chuỗi VBA
mrsiro > 20-09-18, 11:16 AM
Trên form mình cho các option chọn năm chẳng hạn : 2016, 2017, 2018
Mình muốn nếu người dùng chọn năm 2016 với 2018 thì chạy lệnh update trong vba cập nhật vào table theo 2 năm này chứ ko cập nhật từ 2016, 2017, 2018 luôn.
Nếu mình viết: Docmd.runsql "update tble set field1 = abc where nam beetween 2016 and 2018" thì nó update từ 2016 tới 2018.
Còn nếu mình viết: Docmd.runsql "update tble set field1 = abc where nam = 2018" thì nó chỉ update 2018
Vậy có cách nào để nó update theo lựa chọn của mình hay ko.
Mình có ý tưởng là tạo 1 textbox ẩn, khi người dùng chọn năm thì cập nhật những năm đó vào textbox này và cách nhau dấu ","
Ví dụ người dùng chọn năm 2016 và 2018 thì đẩy dữ liệu vào textbox này là: 2016,2018.
Sau đó tách chuỗi này rồi chạy lệnh update theo từng giá trị đã tách. Ý tưởng là như thế nhưng không đủ khả năng code. Ai có thể giúp mình xin cám ơn -
RE: Update theo chuỗi VBA
cpucloi > 20-09-18, 11:50 AM
Bạn xem bài:
Hàm chuyển giá trị trong cột thành chuỗi cách nhau dấu phẩy
Sau khi lấy được giá trị rồi, trong điều kiện sử dụng mệnh đề IN(.....................) -
RE: Update theo chuỗi VBA
ongke0711 > 20-09-18, 12:27 PM
Mệnh đề IN (...,...) rất mạnh mà ít bạn biết khai thác dùng nó.
-
RE: Update theo chuỗi VBA
mrsiro > 20-09-18, 03:12 PM
Mệnh đề in nếu dùng với giá trị từ 1 textbox trên form thì thế nào. Mình làm thử nếu dùng in("2016","2018") thì ok. Nhưng nếu truyền tham số theo kiểu in(Forms!form1!txtbox) thì gõ giá trị 2016,2018 vào code ko chạy. -
RE: Update theo chuỗi VBA
Xuân Thanh > 20-09-18, 07:10 PM
http://thuthuataccess.com/forum/thread-6499.html
Download và đọc bài này rồi vận dụng vào bài của bạn
Thân -
RE: Update theo chuỗi VBA
tranthanhan1962 > 20-09-18, 10:36 PM
Đơn giản là bạn sử dụng sai biểu thức:
Docmd.runsql "update tble set field1 = abc where nam beetween 2016 and 2018" thì nó update từ 2016 tới 2018 là đúng. Vì mệnh đề beetween [A] and [B] có nghĩa là trong khoảng [A] đến [B] hoặc là từ [A] đến [b]. Vì vậy 2016,2017, 2018 đều là những giá trị thỏa đều kiện beetween 2016 and 2018.
Biểu thức đúng của nó là "update tble set field1 = abc where nam = 2016 or nam = 2018", toán tử or có nghĩa lả hoặc "where nam = 2016 or nam = 2018" nó sẽ xử lý thỏa điều kiện năm =2016 hoặc nam =2018. Trường hợp bạn có nhiều điều kiện thì cứ tiếp tục OR, Bạn cũng có thể sử dụng 1 function đổi ký tự "," hay ";" sang or trong biểu thức để xử lý theo cách của bạn 2016,2018 biến đoạn textbox này thành "where nam = 2016 or nam = 2018" tất nhiên phải chú ý viết code cho đúng. Function này bạn có thể sử dụng hàm LEN, MID, đưa vào cấu trúc điều kiển FOR ... NEXT cũng không khó lắm