2014-12-14 6 views
2

Когда я удаляю строку из БД, она удаляет строку, но я не получаю событие, что она удаляла строку (мне нужно обновить список после того, как пользователь что-то удалит). Вот методы результатов рукояток из БД:Оператор 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})); 
    } 

Является ли это e любая ошибка или это просто не дает никакого результата после DELETE? Помоги пожалуйста.

EDIT: Пока я жду ответа - я использую таймер (через 1 секунду после DELETE он обновляет список файлов). Может быть, это хорошая альтернатива событию?

EDIT 2 переменная действия null, когда дело доходит до события отправки O_o Почему это null? О мой Бог.

ответ

0

RESOLVED !!! Было событие, я сделал несколько «следов» и выяснил, что проблема была в переменной действия, она была нулевой, когда событие было отправлено. Я удалил строки action = null;, и теперь все работает хорошо. Hooray :)

Смежные вопросы