|
ms-sql 에서 해당되는 퀴리를 날려서 100개씩 읽어오고 읽어온것을 한 필드에 값을 대입해서
다른 pc에서는 똑같은 값을 읽지 않으려고 합니다.
A PC에서
2초마다 타이머로 아래 와 같이 합니다.
sql = String("select top(100) * from tb01 where v1 = 'R'");
q->Close();
q->SQL->Clear();
q->SQL->Text = sql;
q->Open();
while(!q->Eof)
{
if(n >= max) break;
inc = q->FieldByName("inc")->AsInteger;
ListBox1->Items->Add(IntToStr(inc) + String(" Read"));
q->Edit();
q->FieldByName("v1")->AsString = "I";
q->Post();
/*
MSSQL->SQL->Clear();
MSSQL->SQL->Text = String("update tb01 set v1 = 'I', v2 = getdate()")+\
String("where inc = ")+IntToStr(inc);
MSSQL->Execute();
*/
n++;
q->Next();
}
q->Close();
그런데 막상 실행해보면
A, B, C 세개의 PC에서 실행해 보면
중첩된 행이 존재합니다.
100개를 가져와서 버퍼로 저장한후 필드에 값을 대입하는데
update하는 시간때문에 중복된 행이 읽어져 옵니다.
어떻게 해야하는지요.
|