오~ 또 버그를 찾았습니다.
AnsiString SQL;
AnsiString TMP;
SQL = "UPDATE " + AnsiString(DBTable) + " SET ";
TMP.printf("[ID] = '%d'", LM->ID);
SQL += TMP;
for(int SID=0; SID<FAWSEnv->LOGGER[LID].SENSOR.Count; SID++) {
TMP.printf(", [S%02dA] = '%.3f'", SID, LM->Sensor[SID].Field[F_AVG]); SQL += TMP;
TMP.printf(", [S%02dS] = '%.3f'", SID, LM->Sensor[SID].Field[F_SPC]); SQL += TMP;
TMP.printf(", [S%02dN] = '%.3f'", SID, LM->Sensor[SID].Field[F_MIN]); SQL += TMP;
TMP.printf(", [S%02dM] = '%.3f'", SID, LM->Sensor[SID].Field[F_MAX]); SQL += TMP;
TMP.printf(", [S%02dV] = '%d'" , SID, LM->Sensor[SID].Status); SQL += TMP;
}
위와 같은 소스가 있을때
소스를 블럭을 잡고 변수명을 일괄적으로 바꾸는 기능 있잖아요~
그 기능으로 TMP 를 SQLTMP 로 바꾸면
AnsiString SQL;
AnsiString SQLTMP;
SQL = "UPDATE " + AnsiString(DBTable) + " SET ";
SQLTMP.printf("[ID] = '%d'", LM->ID);
SQL += SQLTMP;
for(int SID=0; SID<FAWSEnv->LOGGER[LID].SENSOR.Count; SID++) {
SQLTMP.printf(", [S%02dA] = '%.3f'", SID, LM->Sensor[SID].Field[F_AVG]); SQL += TMP;
SQLTMP.printf(", [S%02dS] = '%.3f'", SID, LM->Sensor[SID].Field[F_SPC]); SQL += TMP;
SQLTMP.printf(", [S%02dN] = '%.3f'", SID, LM->Sensor[SID].Field[F_MIN]); SQL += TMP;
SQLTMP.printf(", [S%02dM] = '%.3f'", SID, LM->Sensor[SID].Field[F_MAX]); SQL += TMP;
SQLTMP.printf(", [S%02dV] = '%d'" , SID, LM->Sensor[SID].Status); SQL += TMP;
}
이처럼 바뀝니다.
즉 라인에 처음으로 나온 변수는 바뀌는 반면 같은 라인에 2번째이상 나오는 같은이름의 변수는 바뀌지 않습니다.
^^
|
그런데 보여주신 사례만 봐서는, 같은 라인에 2번째 나왔다고 해서 바뀌지 않는다기보다는, 한 라인에 두 문장이 있는 경우가 더 의심스럽군요.
역시, 좀더 테스트해보고 수일내로 레포팅하겠습니다.