|
한가지 덧붙이면...
아래 쿼리를 보면 레코드 하나를 추가한 후에 다시 전체 데이터를 가져오는군요. 추가한 이후에 결과 데이터가 필요한 경우에는 처음부터 TADODataSet을 쓰는 것이 더 편리할 것 같습니다.
1. TADODataSet을 폼에 추가.
2. Object Inspector 에서
a. Connection 을 설정
b. Command Type을 cmdText로 설정
c. Command Text에 select* from info를 입력
d. Active를 true로 바꾸어서 문제가 없는지 확인
e. 원하는 시점에 데이터셋을 열기 위해서 Active를 다시 false로 설정
3. 특정 event handle에서...
ADODataSet1->Open();
ADODataSe1t->Append();
ADODataSet->FieldValues["ID"] = ID;
ADODataSet->FieldValues["Pass"] = ps;
...
ADODataSet->Post();
그런데, 큰 테이블의 경우에는 모든 데이터를 불러올 필요가 없는 경우가 많습니다. 예를 들어, 한 순간에 특정 type의 데이터만 필요하다고 하면...
Command Text 를 "select * from info where type = :type"으로 설정하고 나서 데이터가 필요한 시점에
ADODataSet->Open(); // 아직 parameter값을 설정 안했으므로 빈데이터셋이 리턴
ADODataSet->Parameters->ParamValues["type"] = 1;
ADODataSet->Requery(TExecutOptions());
ADODataSet->Append();
ADODataSet->FieldValues["ID"] = ID;
...
ADODataSet->Post();
다른 type을 가지고 작업을 할때는...
ADODataSet->Parameters->ParamValues["type"] = 2;
ADODataSet->Requery(TExecutOptions());
처럼 하면 됩니다.
아카시아 님이 쓰신 글 :
: 아무리 찾아봐도 문법적인 에러가 없는데,
: 자꾸 위의 그림처럼 에러가 발생합니다.
: Build All Project를 할때는
: 아무 이상이 없는데,
: 클라이언트를 실행해서 디비에 저장하는
: 소스부분에 가게 되면
: 중간쯤에
: ADOQuery1->ExecSQL();
: ADOQuery1->SQL->Clear();
: 이부분에서 에러가 나거든요?
: 디버깅을 해도 항상 여기가 걸리고..
: 소스에 무슨 문제가 있는건가요?
:
: 아래는 제가 짜고 있는 쿼리문 소스입니다.
: ADOQuery1->Close();
: ADOQuery1->SQL->Clear();
: ADOQuery1->SQL->Add("insert into info");
: ADOQuery1->SQL->Add("(ID, Pass, Passa, Target, Time)");
: ADOQuery1->SQL->Add("values");
: ADOQuery1->SQL->Add("('"+id+"','"+ps+"','"+psa+"','"+coma+"','"+comb+"')");
: ADOQuery1->ExecSQL();
: ADOQuery1->SQL->Clear();
: ADOQuery1->SQL->Add("select* from info");
: ADOQuery1->Open();
|