2015-11-04 67 views
0

我创建了VBA代码,它打开一个Web表单到Oracle数据库,操作页面以便所有相关文本框都可见,并输入Excel电子表格中的值。这一切运作良好,并如预期。IE对Oracle数据库的HTML/Java表单自动化:输入数据不保存到数据库

当我提交表格时,我收到一条祝词,建议我的数据已被接受并更新。但是当我去查看这些数据时,它已经丢失了。当我手动更新网页时,数据按预期更新。

有关这种行为源于什么以及如何克服它的任何想法?

它位于内联网上,因此我无法共享该网址。我个人认为,网页之间我如何输入的数据,当它在被键入区分。

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 

我使用谷歌浏览器的“检查元素”的功能,并检查该上市的时候我检查了文本框的元素的事件监听器中发现的功能。