Open은 결과값이 있는 쿼리를 날릴때, 즉 Select 문 같은 것을 날릴때 호출합니다.
Insert문 같은 결과값이 없는 쿼리를 날릴 때는 Execute() 를 호출해야합니다.
그리고 Append는 Select된 델타 데이터(메모리에 저장된 가상 데이터)셋에 Insert (append)할때 사용하는
거라 지금 님의 코딩엔 의미가 없다고 생각되네요
님이 쓰신쿼리는 두가지 방법으로 할 수 있는데
첫번째는================================
IBDataSet1->Close();
IBDataSet1->InsertSQL->Clear();
IBDataSet1->InsertSQL->Text = "Insert into table1 (a, b,,,, 등) values (1,2,,,,등)";
IBDataSet1->Execute();
두번째는================================
IBDataSet1->Close();
IBDataSet1->InsertSQL->Clear();
IBDataSet1->InsertSQL->Text = "Select * from table1";
IBDataSet1->Prepare();
IBDataSet1->Open();
IBDataSet1->Append();
// Append 후 데이터 콘트롤 들을 통해 값을 입력받는다던가
// IBDataSet1->FieldByName('a')->AsString = '1';
// IBDataSet1->FieldByName('b')->AsString = '2';
// IBDataSet1->FieldByName('등')->AsString = '등';
// .....
IBDataSet1->Post();
IBDataSet1->ApplyUpdates(); // <- 실제 데이터 베이스로 적용합니다.
========================================
할 수 있겠네요...( 아마 님이 의도하신건 첫번째 방법이라 보입니다.)
그리고 한가지 더 Max함수 쓸 수 있습니다.
Matthew 님이 쓰신 글 :
: 안냐세요..
: IBTable을 쓰니까 넘 느려서... 바꿀려구 하는 데...
: 속도는 좀 빨라졌어요 근데...
: IBDataSet을 이용해서 InsertSQL을 쓸려니 에러가 계속 남니다.
: isql에서 똑 같이 쓰면 아무런 문제 없이 입력 되는데..
: 코드는 아래와 같구.. (Text 문은 간략하게 줄여서 보였음)
: Post()에서 문제가 생기는 데...
: 아이디어 있으신 분 도움을 부탁드립니다.
: 감쏴...
: IBDataSet1->Close();
: IBDataSet1->InsertSQL->Clear();
: IBDataSet1->InsertSQL->Text = "Insert into table1 (a, b,,,, 등) values (1,2,,,,등)";
: IBDataSet1->Prepare();
: IBDataSet1->Open();
: IBDataSet1->Append();
: IBDataSet1->Post();
:
: 한가지 더.
: SelectSQl에서는 "Select MAX(DUM) .." 과 같이 MAX 함수는 못 써나요?
|