안녕하세요.. 흐미.. 이거땜시 오늘 시간이 다가네요.. 움니.. 저녁도 안직 안먹었습니다.
본론부터 말씀드리겠습니다. Database, Datasource, Query, DBGrid로 해서 선택한 레코드를 찾아서 지우는것입니다.
소스는 다음과 같습니다. 근데 절대 안지워지고 SQL커서만 한참을 기다렸다 꿈쩍도 안합니다.
참고(Window2000, MSSQL NetworkDB입니다 ODBC 로연결해서 잘붙습니다)
// 선택한 레코드를 삭제한다.
procedure TForm1.DeleteBtnClick(Sender: TObject);
var
i: Integer;
MsgBuff: String;
TempSEQNO: String;
DeleteSQL: String;
begin
if( DBGrid.SelectedRows.Count = 0 )then begin
Exit;
end;
MsgBuff := '선택하신 '+ IntToStr(DBGrid.SelectedRows.Count)+'개의 레코드를 삭제하시겠습니까?';
if Application.MessageBox(PChar(MsgBuff),'경고', MB_OKCANCEL ) = IDOK then begin
DeleteSQL := 'DELETE FROM MASTER WHERE SEQNO IN (';
for i:=0 to DBGrid.SelectedRows.Count-1 do begin
DBGrid.DataSource.DataSet.GotoBookmark(pointer(DBGrid.SelectedRows.Items[i]));
TempSEQNO := Query.FieldByName('SEQNO').AsString;
if(i = DBGrid.SelectedRows.Count-1 )then
DeleteSQL := DeleteSQL + '''' + TempSEQNO + ''')'
else
DeleteSQL := DeleteSQL + '''' + TempSEQNO + ''',';
end;
end;
DBGrid.SelectedRows.Delete;
Query.Close;
Query.SQL.Clear;
Query.SQL.Add(DeleteSQL); // 요기까지는 됩니다.
Query.ExecSQL; // 이눔의 자슥이 도저히 꿈쩍도 안혀요... T_T
Query.CommitUpdates;
Query.SQL.Clear;
Query.SQL.Add(FindSQL); // 처음 목록을 보여주는 SQL을 다시 실행시킵니다.
Query.Open;
end;
다른건 이상이 없어 보이는데...
정확히 알지도 못하면서리..지송^.^~
최현수 wrote:
> 안녕하세요.. 흐미.. 이거땜시 오늘 시간이 다가네요.. 움니.. 저녁도 안직 안먹었습니다.
>
> 본론부터 말씀드리겠습니다. Database, Datasource, Query, DBGrid로 해서 선택한 레코드를 찾아서 지우는것입니다.
>
> 소스는 다음과 같습니다. 근데 절대 안지워지고 SQL커서만 한참을 기다렸다 꿈쩍도 안합니다.
> 참고(Window2000, MSSQL NetworkDB입니다 ODBC 로연결해서 잘붙습니다)
>
> // 선택한 레코드를 삭제한다.
> procedure TForm1.DeleteBtnClick(Sender: TObject);
> var
> i: Integer;
> MsgBuff: String;
> TempSEQNO: String;
> DeleteSQL: String;
> begin
>
> if( DBGrid.SelectedRows.Count = 0 )then begin
> Exit;
> end;
>
> MsgBuff := '선택하신 '+ IntToStr(DBGrid.SelectedRows.Count)+'개의 레코드를 삭제하시겠습니까?';
> if Application.MessageBox(PChar(MsgBuff),'경고', MB_OKCANCEL ) = IDOK then begin
>
> DeleteSQL := 'DELETE FROM MASTER WHERE SEQNO IN (';
> for i:=0 to DBGrid.SelectedRows.Count-1 do begin
> DBGrid.DataSource.DataSet.GotoBookmark(pointer(DBGrid.SelectedRows.Items[i]));
> TempSEQNO := Query.FieldByName('SEQNO').AsString;
>
> if(i = DBGrid.SelectedRows.Count-1 )then
> DeleteSQL := DeleteSQL + '''' + TempSEQNO + ''')'
> else
> DeleteSQL := DeleteSQL + '''' + TempSEQNO + ''',';
> end;
> end;
>
> DBGrid.SelectedRows.Delete;
>
> Query.Close;
> Query.SQL.Clear;
> Query.SQL.Add(DeleteSQL); // 요기까지는 됩니다.
> Query.ExecSQL; // 이눔의 자슥이 도저히 꿈쩍도 안혀요... T_T
> Query.CommitUpdates;
>
> Query.SQL.Clear;
> Query.SQL.Add(FindSQL); // 처음 목록을 보여주는 SQL을 다시 실행시킵니다.
> Query.Open;
>
> end;