2014-12-14 3 views
2

DB에서 행을 삭제하면 행이 삭제되지만 행이 삭제 된 이벤트가 표시되지 않습니다. 사용자 삭제 후 목록을 새로 고침해야합니다. 다음은 DB에서 핸들 결과에 대한 방법은 다음과 같습니다AS3 SQLite DELETE 문이 결과를 제공하지 않습니다.

private final function onReady(e:EventWithMessage):void 
    { 
     switch (action) 
     { 
      case "get files": 
       dispatchEvent(new EventWithMessage(EventWithMessage.FILES, {files: null})); 
       break; 
      case "save note": 
       dispatchEvent(new EventWithMessage(EventWithMessage.SAVED, { ID:e.message.ID })); 
       break; 
      case "delete note": 
       // Saving and getting files above work! And this is not working 
       dispatchEvent(new EventWithMessage(EventWithMessage.DELETED, { })); 
       break; 
     } 
     action = null; 
    } 

    private final function onData(e:EventWithMessage):void 
    { 
     DATA = e.message.data; 
     switch (action) 
     { 
      case "get files": 
       // some code was here 
       dispatchEvent(new EventWithMessage(EventWithMessage.FILES, {files: fileArray})); 
       break; 
      case "load note": 
       dispatchEvent(new EventWithMessage(EventWithMessage.FILE, { text:DATA[0].text })); 
       break; 
      case "delete note": 
       // And even here it isn't working 
       dispatchEvent(new EventWithMessage(EventWithMessage.DELETED, { })); 
       break; 
     } 
     action = null; 
    } 

방법 DELETE를 위해 :

public final function deleteNote(ID:int):void 
    { 
     SQLiteManager.SQLM.Operations(String("DELETE FROM Notes WHERE id = " + ID)); 
     action = "delete note"; 
    } 

그리고는 SQLiteManager (내 수업)의 방법 :

public final function Operations(command:String, parameters:Array = null) 
    { 
     statement = new SQLStatement(); 
     statement.sqlConnection = connection; 
     statement.text = command; 
     if (parameters && parameters.length > 0) 
     { 
      for (i = 0; i < parameters.length; i++) 
      { 
       statement.parameters[i] = parameters[i]; 
      } 
     } 
     statement.execute (-1,responder); 
    } 

응답자는 두 가지 방법이 있습니다

private final function handleSuccess (result:SQLResult):void 
    { 
     if (result.data) 
     { 
      dispatchEvent(new EventWithMessage(EventWithMessage.SQLDATA, { data:result.data})); 
     } 
     else 
     { 
      dispatchEvent(new EventWithMessage(EventWithMessage.READY, { ID:result.lastInsertRowID })); 
     } 
    } 

    private final function handleError (e:SQLError):void 
    { 
     dispatchEvent (new EventWithMessage(EventWithMessage.ERROR,{error:e.message})); 
    } 

어떤 실수라도 아니면 DELETE 후에 어떤 결과도주지 않습니까? 도와주세요.

편집 : 답변을 기다리는 동안 - 저는 타이머를 사용합니다 (DELETE 후 1 초 후에 파일 목록을 새로 고침). 어쩌면 그것은 이벤트의 좋은 대안일까요?

EDIT 2 조치 변수가 널 (null) 일 때 디스패치 이벤트 O_o 이유는? null 인 이유는 무엇입니까? 세상에.

답변

0

해결됨 !!! 이벤트가 있었는데, 어떤 "흔적"을 만들었고 그 문제가 행동 변수에 있다는 것을 알았습니다. 이벤트가 발송되었을 때 null이었습니다. 나는 줄을 삭제했다 action = null; 이제 모든 것이 잘 작동합니다. 만세 :

관련 문제