2012-03-12 4 views
0

У меня возникла проблема при отправке запросов в базу данных SQLite.Заполните пустые ячейки в листе excel (или SQLite) со значением ближайшей заполненной ячейки выше

Проблема заключается в том, что база данных (которая исходит из листа excel) имеет пустые ячейки, где в том же столбце должны быть значения, заданные из ячейки выше.

Другими словами, создатель листа excel оставил ячейки в том же столбце пустым, если значение не изменяется. Мне действительно нужны значения в этих ячейках!

Я не могу сделать это вручную из-за размера листа/db, есть ли способ сделать это программно?

Я бы предпочел использовать метод sql-query, если он есть!

С наилучшими пожеланиями, Tor

+0

Это вопрос андроида? Пожалуйста, удалите тег, если он не применяется. – Kekoa

+0

Да и нет. База данных относится к андроидному приложению, хотя это не специфический вопрос для Android. Тег удален. – user1264884

+0

Если данные были забыты, откуда вы знаете, что было выше, правильно? – datatoo

ответ

0

Вы запросить всю БД, сохранить первоначальный порядок сортировки, а затем перебирать каждую строку. Если что-то пусто, обновите его со значением сверху.

Edit: вы можете сделать это с чем-то похожее на это здесь:

SQLiteDatabase db = SQLiteDatabase.openDatabase("myDb.db", null, SQLiteDatabase.OPEN_READWRITE); 
Cursor c = db.query("table", null, null, null, null, null, "the column that defines the sort order"); 
if (c != null) { 
    int columnCount = c.getColumnCount(); 
    String[] lastValues = new String[columnCount]; 
    while (c.moveToNext()) { 
     ContentValues cv = new ContentValues(); 
     for (int i = 0; i < columnCount; i++) { 
      String value = c.getString(i); 
      if (TextUtils.isEmpty(value)) { 
       // if that happens on first column you are screwed anyways. 
       cv.put(c.getColumnName(i), lastValues[i]); 
      } else { 
       lastValues[i] = value; 
      } 
      // we need to save some id here 
     } 
     if (cv.size() > 0) { 
      // use the id here 
      db.update("table", cv, "column=?", new String[] { "id" }); 
     } 
    } 
    c.close(); 
} 

Но я хотел бы предложить вам использовать Excel, чтобы установить базу данных. Это проще, и вам не нужно понимать выше код.

+0

И как мне это точно выполнить? – user1264884

+0

см. Обновленный ответ – zapl

2

вы можете сделать это в отличном состоянии. Я ответил на аналогичный вопрос здесь:

Blank Values in Excel File From CSV (not just rows)

Вы также можете сделать это полностью в первенствует:

Выберите столбец (или любой диапазон вы работаете с), затем на Edit> Go To (Ctrl + G) и нажмите Special. Проверьте пробелы & нажмите OK. Этот будет выбирать только пустые ячейки в списке. Теперь введите ключ = , затем стрелку вверх и ctrl-enter.

Это поместит формулу в каждую пустую ячейку, чтобы она была равна ячейке выше . Затем вы можете скопировать значения только для того, чтобы избавиться от формул .

0

Аналогичным способом, предложенным компанией @maneesha, является фильтрация пустых ячеек, а затем формула «равна формуле верхней ячейки», а затем очистка фильтра.

Но я думаю, что решение @maneeshas более прохладное.