가 나는 BC에있는 모든 레코드를 반복하고, 그들 중 일부 삭제해야하는 비즈니스 서비스 쓰고 있어요 그러나루프에서 레코드를 삭제하려면 어떻게해야합니까?
bc.ExecuteQuery(ForwardBackward);
var isRecord = bc.FirstRecord();
while (isRecord) {
if (...) {
bc.DeleteRecord();
}
isRecord = bc.NextRecord();
}
, DeleteRecord moves the cursor to the next one를, 그래서 각각의 존재에 대한 기록을 건너 뛰는 것 삭제되었는데, 이는 내가 원하는 것이 아닙니다. 어떤 표준이 있습니까? ish이 문제를 해결할 방법이 있습니까?
나는 수표 하나와 삭제를위한 두 개의 루프를 만들 수 있다고 생각하는데 ... 작동하지만 레코드보다 두 번 반복하는 것이 어리석은 느낌이 든다. 이보다 더 좋은 방법이 있어야한다. :
bc.ExecuteQuery(ForwardBackward);
var isRecord = bc.FirstRecord();
var list = [];
while (isRecord) {
if (...) {
list.push(bc.GetFieldValue("Id"));
}
isRecord = bc.NextRecord();
}
bc.ClearToQuery();
bc.SetSearchSpec("Id", "='" + list.join("' OR ='") + "'"); // "='1-ABCD' OR ='1-1234'"
bc.ExecuteQuery(ForwardBackward);
while (bc.FirstRecord()) {
bc.DeleteRecord();
}
문제는 DeleteRecord는 반환하지 않는다는 것입니다 아무것도. 그렇지 않으면 논리는 if 루프로 쉽게 재 배열 될 수있었습니다. 목록으로 이동하고 선택적으로 삭제하는 논리는 최적화 된 모양입니다. –