[Help] Cách ghép chuỗi có dấu phẩy ngăn giữa

Liên hệ QC

vietcnttit

Thành viên mới
Tham gia
14/6/10
Bài viết
43
Được thích
5
Ví dụ mình có vấn đề:
các loại tài sản: nhà, xe, tivi, tủ lạnh, đất, khác
- Hộ ông A có: nhà, xe, tivi, tủ lạnh
- Hộ ông B có nhà, tivi
- Hộ ông C có: nhà, xe, tủ lạnh

Mỗi hộ có tài sản khác nhau, nhưng khi ghép tên có dấu phẩy ngăn theo đúng thứ tự thì mình bị các lỗi như:

- Hộ ông A có: nhà, xe, tivi, tủ lạnh, ,
- Hộ ông A có: nhà, , tivi, , ,
- Hộ ông C có: nhà, xe, , tủ lạnh, ,

Giúp mình loại bỏ các dấu phẩy thừa với, Rất cảm ơn các anh/chị !!
 
Ví dụ mình có vấn đề:
các loại tài sản: nhà, xe, tivi, tủ lạnh, đất, khác
- Hộ ông A có: nhà, xe, tivi, tủ lạnh
- Hộ ông B có nhà, tivi
- Hộ ông C có: nhà, xe, tủ lạnh

Mỗi hộ có tài sản khác nhau, nhưng khi ghép tên có dấu phẩy ngăn theo đúng thứ tự thì mình bị các lỗi như:

- Hộ ông A có: nhà, xe, tivi, tủ lạnh, ,
- Hộ ông A có: nhà, , tivi, , ,
- Hộ ông C có: nhà, xe, , tủ lạnh, ,

Giúp mình loại bỏ các dấu phẩy thừa với, Rất cảm ơn các anh/chị !!
dùng hàm if xét điều kiện như <>"" mới ghép
 
Ví dụ mình có vấn đề:
các loại tài sản: nhà, xe, tivi, tủ lạnh, đất, khác
- Hộ ông A có: nhà, xe, tivi, tủ lạnh
- Hộ ông B có nhà, tivi
- Hộ ông C có: nhà, xe, tủ lạnh

Mỗi hộ có tài sản khác nhau, nhưng khi ghép tên có dấu phẩy ngăn theo đúng thứ tự thì mình bị các lỗi như:

- Hộ ông A có: nhà, xe, tivi, tủ lạnh, ,
- Hộ ông A có: nhà, , tivi, , ,
- Hộ ông C có: nhà, xe, , tủ lạnh, ,

Giúp mình loại bỏ các dấu phẩy thừa với, Rất cảm ơn các anh/chị !!
Gửi cái đã làm cho cái kết quả không mong muốn lên đây để sửa từ gốc.
 
Cảm ơn các anh/chị đã giúp đỡ, em đã tự tìm ra cách này rồi, hi vọng nó luôn chạy đúng.
CTT: [NHA] & IIf(Not IsNull([NHA]),", ",Null) & [XE] & IIf(Not IsNull([XE]),", ",Null) & [TIVI] & IIf(Not IsNull([TIVI]),", ",Null) & [TULANH] & IIf(Not IsNull([TULANH]),", ",Null) & [DAT] & IIf(Not IsNull([DAT]),", ",Null)& [KHAC] & IIf(Not IsNull([KHAC]),", ",Null)

CHITIET: Left([CTT],Len([CTT])-2)
 
Cảm ơn các anh/chị đã giúp đỡ, em đã tự tìm ra cách này rồi, hi vọng nó luôn chạy đúng.
CTT: [NHA] & IIf(Not IsNull([NHA]),", ",Null) & [XE] & IIf(Not IsNull([XE]),", ",Null) & [TIVI] & IIf(Not IsNull([TIVI]),", ",Null) & [TULANH] & IIf(Not IsNull([TULANH]),", ",Null) & [DAT] & IIf(Not IsNull([DAT]),", ",Null)& [KHAC] & IIf(Not IsNull([KHAC]),", ",Null)

CHITIET: Left([CTT],Len([CTT])-2)
Tất cả đều Null hết, không biết Left có báo lỗi không?
 
Không cần dùng IIF nhé. Chỉ cần dùng toán tử + và dấu ().

CTT = Mid((","+[nha] & (","+[xe]) & (","+[tivi]) & (","+[tulanh])),2)
 
Lần chỉnh sửa cuối:
Đây là câu lệnh Access phải không?
Nếu là Access thì dùng hàm NZ. Nếu NZ chuyển null thành ký tự X thì sau đó sẽ dùng Replace để đổi ", X" thành ""
CTT:
Replace( Replace( Replace( NZ([F1], "#") & ", " & NZ([F2], "#") & ", " & NZ([F3], "#")... , ", #", ""), "#, ", ""), "#", "")

Lần Replace thứ nhất tháo các nulls kể từ F2. Lần thứ 2 tháo null ở F1. Lần thứ 3 tháo null nếu tất cả các trường đều null
 
Lần chỉnh sửa cuối:
Đây là câu lệnh Access phải không?
Nếu là Access thì dùng hàm NZ. Nếu NZ chuyển null thành ký tự X thì sau đó sẽ dùng Replace để đổi ", X" thành ""
CTT:
Replace( Replace( Replace( NZ([F1], "#") & ", " & NZ([F2], "#") & ", " & NZ([F3], "#")... , ", #", ""), "#, ", ""), "#", "")

Lần Replace thứ nhất tháo các nulls kể từ F2. Lần thứ 2 tháo null ở F1. Lần thứ 3 tháo null nếu tất cả các trường đều null
Đúng là access. em cảm ơn ạ !!
 
Không cần dùng IIF nhé. Chỉ cần dùng toán tử + và dấu ().

CTT = Mid((","+[nha] & (","+[xe]) & (","+[tivi]) & (","+[tulanh])),2)

Em cảm ơn bác ạ. Em dùng hàm của bác thấy dễ hiểu lắm ạ.
Mid(((", "+[nha]) & (", "+[xe]) & (", "+[tivi]) & (", "+[tulanh])& (", "+[dat])& (", "+[khac])),3)
 
Web KT
Back
Top Bottom