2015-11-04 2 views
0

Я создал код VBA, который открывает веб-форму для базы данных Oracle, манипулирует страницей, чтобы все видимые текстовые поля были видны и вводились значения из электронной таблицы Excel. Все это работает хорошо и, как ожидалось.IE Автоматизация HTML/Java Form для базы данных Oracle: входные данные не сохраняются в базе данных

Когда я отправляю форму, я получаю поздравительное сообщение с сообщением о том, что мои данные были приняты и обновлены. Но когда я перехожу к просмотру этих данных, он отсутствует. Когда я вручную обновляю веб-страницу, данные обновляются, как ожидалось.

Любые мысли о том, что такое поведение и как его преодолеть?

Он находится в интрасети, поэтому я не смогу поделиться URL-адресом. Я лично считаю, что веб-страница различает между тем, как я ввел данные и когда был введен в.

x = 1 
For Each i In Range("dailyCV") 
    IE.document.all(col_1.Item(x)).Value = i 
    IE.document.all(col_2.Item(x)).Value = col_5(x) 
    x = x + 1 
Next i 

Есть ли способ, чтобы иметь VBA имитировать фактический ввод чисел, или даже простой способ от этого?

ответ

0

Основная причина проблемы заключалась в том, что входные значения не выключали функцию, которая проверяла правильность ввода. Эта функция затем передает данные в массив, который в конечном итоге сохраняется в базе данных. Я был связан с тем, когда я попытался ввести десятичное число или символ в поле; они автоматически меняются на ноль. Нарушитель фрагмент кода ниже:

$('.allowedValues').keyup(function(){ 
    var n = this.value; 
    if(this.value.length >0 && !(isNaN(this.value)) && !(n.indexOf(".")>0)){ 
    //Nothing 
    }else { 
     this.value="0"; 
    } 
}); 

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

x = 1 
For Each i In Range("dailyCV") 
    IE.document.all(col_1.Item(x)).Value = i 
    Call IE.document.parentWindow.execScript("$('.allowedValues').keyup()", "JavaScript") 
    IE.document.all(col_2.Item(x)).Value = col_5(x) 
    Call IE.document.parentWindow.execScript("$('.allowedValues').keyup()", "JavaScript") 
    x = x + 1 
Next i 

Я нашел функцию с помощью функции «инспектировать элементы» Google Chrome, и проверки обработчиков событий, которые были перечислены, когда я проверил элемент текстового поля.

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