Проблема, Вставляющая данные в базу данных Access MS с помощью ADO с помощью Python

Если я вас правильно понимаю, вы хотите объединить все страницы в одну страницу, которая содержит всю информацию.

Этого можно добиться с помощью функции Array.reduce. reduce берет массив и объединяет все элементы в одно значение, используя функцию (предоставленную вами) для объединения первых двух элементов, пока не останется только один (т. Е. 1 * 2 => new1; new1 * 3 => new2, где * представляет вашу функцию).

Ваша проблема будет выглядеть примерно так:

rows[0].pages = rows[0].pages.reduce((currentElement, currentState) => {
    if (!currentState) { // first iteration return first element but make sure display is an array
        currentElement.sections[0].answers[0].valuesMetadata[0].display =
            [currentElement.sections[0].answers[0].valuesMetadata[0].display];
        return currentElement;
    }

    // add values of current element to arrays in current state
    currentState.sections[0].answers[0].values
        .concat(currentElement.sections[0].answers[0].values);
    currentState.sections[0].answers[0].valuesMetadata[0].display
        .concat(currentElement.sections[0].answers[0].valuesMetadata[0].display);
    return currentState;
});

currentElement - это объект массива, который в настоящее время сокращается, currentState - промежуточный результат сокращения.

PS:

Объект выглядит так, как будто вы слишком много массивов там, где они вам не нужны. Данный фрагмент кода работает только для первого элемента в каждом массиве (отсюда [0]). Если у вас действительно есть несколько значений в каждом массиве, вам придется перебирать все эти значения соответственно.

6
задан mavnn 1 October 2009 в 15:47
поделиться

3 ответа

И найденный ответом.

    rs = client.CreateObject("ADODB.Recordset")

Потребности быть:

    rs = client.CreateObject("ADODB.Recordset", dynamic=True)

Теперь я просто должен изучить почему. Просто надеюсь, что этот вопрос сохраняет кого-то еще несколько часов...

4
ответ дан 17 December 2019 в 07:09
поделиться

data[i] будучи рассматриваемым как строку? Что происходит, если Вы конкретно снимаете его в качестве международного/двойного, когда Вы устанавливаете rs.Fields[i].Value?

Кроме того, что происходит, когда Вы распечатываете содержание rs.Fields[i].Value после того, как это установлено?

0
ответ дан 17 December 2019 в 07:09
поделиться

Не полный ответ все же, но это, кажется, проблема во время обновления. Я добавил некоторый дальнейший код отладки в процессе вставки, который генерирует следующее (пример обновляемой одной строки):

Inserted into field ID (type 3) insert value 1, field value now 1.
Inserted into field TextField (type 202) insert value u'Blah', field value now Blah.
Inserted into field Numbers (type 5) insert value 55.0, field value now 55.0.
After update: [0, u'Blah', 55.0]

Последнее значение в каждом "Введенном..." строка является результатом вызова RS. Поля [я].Value перед называнием RS. Обновление (). "После..." строка показывает результаты вызова RS. Поля [я].Value после называния RS. Обновление ().

То, что является еще более раздражающим, - то, что это надежно не перестало работать. Повторное выполнение того же самого кода тех же записей несколько минут спустя генерировало:

Inserted into field ID (type 3) insert value 1, field value now 1.
Inserted into field TextField (type 202) insert value u'Blah', field value now Blah.
Inserted into field Numbers (type 5) insert value 55.0, field value now 55.0.
After update: [1, u'Blah', 2.0]

Как Вы видите, результаты надежны, пока Вы не фиксируете их, затем... нет.

0
ответ дан 17 December 2019 в 07:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: