Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Giúp đỡ hàm if access 2003
#1
Các bác cho e hỏi tại sao câu lệnh của e sử dụng access 2013 thì được mà chuyển qua 2003 thì không chạy:
Mã:
Private Sub Command0_Click()
   If Command0.Caption = "More >>" Then
       Command0.Caption = "Less <<"
       Command11.Visible = True
       Command12.Visible = True
       Command13.Visible = True
       Command14.Visible = True
       Command15.Visible = True
       Command16.Visible = True
   End If
   If Command0.Caption = "Less <<" Then
       Command0.Caption = "More >>"
       Command11.Visible = False
       Command12.Visible = False
       Command13.Visible = False
       Command14.Visible = False
       Command15.Visible = False
       Command16.Visible = False
   End If
End Sub
Thank u!
Chữ ký của chigonvh Xin chào, mình là chigonvh, Tham gia http://thuthuataccess.com/forum từ ngày 28-05 -12.
Reply
Những người đã cảm ơn
#2
(29-09-15, 10:07 AM)chigonvh Đã viết: Các bác cho e hỏi tại sao câu lệnh của e sử dụng access 2013 thì được mà chuyển qua 2003 thì không chạy:
Mã:
Private Sub Command0_Click()
   If Command0.Caption = "More >>" Then
       Command0.Caption = "Less <<"
   End If
   If Command0.Caption = "Less <<" Then
       Command0.Caption = "More >>"

   End If
End Sub
Thank u!

* Thứ 1, Câu lệnh không sai, vấn đề là Giao diện form trên Access 2013 và 2003 khác nhau, mở lên sẽ báo lỗi ngay. Vì thế muốn sử dụng câu lệnh này bạn phải thiết kế form trên Access 2003.

* Thứ 2, Câu lênh trên không có ý nghĩa khi kết quả cuối cùng của nhãn Command0 là More >>

Mình đoán ý thử: chắc bạn muốn, Nhãn lúc đầu là More >>; khi nhấn lần 1 thì nhãn chuyển thành Less <<

=> Vậy xem Demo này: [Thủ Thuật] Demo_1 Nút nhấn có 2 chức năng ( Thêm + Xóa)

Thân mến!
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 chigonvh
#3
Cám ơn bác maidinhdan. Form nay mih lam tren access 2003 va dung y cua mih la nhu vay.
Chữ ký của chigonvh Xin chào, mình là chigonvh, Tham gia http://thuthuataccess.com/forum từ ngày 28-05 -12.
Reply
Những người đã cảm ơn maidinhdan
#4
Mã:
Private Sub Command0_Click()
   If Me!Command0.Caption = "More >>" Then
       Me!Command0.Caption = "Less <<"
       Me!Command11.Visible = True
       MsgBox "ok"
   Else
       Me!Command0.Caption = "More >>"
       Me!Command11.Visible = False
   End If
End Sub
?
Chữ ký của chigonvh Xin chào, mình là chigonvh, Tham gia http://thuthuataccess.com/forum từ ngày 28-05 -12.
Reply
Những người đã cảm ơn
#5
(29-09-15, 10:07 AM)chigonvh Đã viết: Các bác cho e hỏi tại sao câu lệnh của e sử dụng access 2013 thì được mà chuyển qua 2003 thì không chạy:
Mã:
Private Sub Command0_Click()
   If Command0.Caption = "More >>" Then
       Command0.Caption = "Less <<"
       ...
   End If
   If Command0.Caption = "Less <<" Then
       Command0.Caption = "More >>"
       ...
   End If
End Sub
Thank u!

Câu lệnh của bạn không phải là không chạy. Nhưng cả trên access 2003, lẫn access 2013 đều chạy không đúng theo yêu cầu của bạn (cả hai đều chạy như nhau nhé. Vì cấu trúc If ... then ... End If của VB ở đâu cũng giống nhau nên dù access nào cũng thế)
Do access là lập trình hướng đối tượng nên các đoạn code ngang hàng trên các đối tượng sẽ có giá trị như nhau:
Ví dụ bạn có thể viết:

Mã:
If Command0.Caption = "A" Then
       Command0.Caption = "B"
       ...
   End If
If Command1.Caption = "B" Then
       Command1.Caption = "D"
       ...
   End If


Hoặc ngược lại cũng không sao (lệnh xử lý đối tượng nào sẽ giải quyết cho đối tượng đó)

Mã:
If Command1.Caption = "B" Then
       Command1.Caption = "D"
       ...
   End If
If Command0.Caption = "A" Then
       Command0.Caption = "B"
       ...
   End If

Nhưng nếu bạn tạo câu lệnh

Mã:
If Command0.Caption = "A" Then
       Command0.Caption = "B"
       ...
   End If
If Command0.Caption = "B" Then
       Command0.Caption = "D"
       ...
   End If

Thì đây là hai lệnh ngang hàng xử lý cùng một đối tượng là Command0.Caption
Vì vậy VBA sẽ ưu tiên cho lệnh đầu tiên và bỏ lệnh thứ 2. Kiểu như ưu tiên *,/ trước +,- vậy thôi.
Do đó, VBA sẽ xử lý khi giá trị có sẳn của Command0.Caption = "A" 
Mã:
If Command0.Caption = "A" Then
       Command0.Caption = "B"
       ...
   End If
Còn nếu giá trị của Command0.Caption không phải là "A" nó sẽ bỏ qua. Vì thế đoạn code 
Mã:
If Command0.Caption = "B" Then
       Command0.Caption = "D"
       ...
   End If
có cũng như không.
Cho nên muốn giải quyết trường hợp này phải chuyển thành 1 lệnh, mà bạn maidinhdan đã giải quyết cho bạn.
Mã:
Private Sub Command0_Click()
   If Command0.Caption = "More >>" Then
       Command0.Caption = "Less <<"
       ...
   Else
       Command0.Caption = "More >>"
       ...
   End If
End Sub

 Đối với trường hợp có nhiều cấu trúc If ... Then... Else ... End If lồng ghép nhau rất khó quản lý
Ví dụ
Mã:
If Command0.Caption = "A" Then
   Command0.Caption = "B"
Else
   If Command0.Caption = "B" Then
      Command0.Caption = "C"
   Else
      If Command0.Caption = "C" Then
         Command0.Caption = "D"
      Else
         Command0.Caption = "A"
      End If
   End If
End If

Chúng ta có thể đổi thành cấu trúc Select Case để dễ quản lý hơn

Mã:
Select Case Command0.Caption
   Case "A"
       Command0.Caption = "B"
   Case "B"
       Command0.Caption = "C"
   Case "C"
       Command0.Caption = "D"
   Case Else
       Command0.Caption = "A"
End Select

Chúc bạn thành công.
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan


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 316 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 632 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 144 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ơ