2015-11-04 64 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 

我使用谷歌瀏覽器的「檢查元素」的功能,並檢查該上市的時候我檢查了文本框的元素的事件監聽器中發現的功能。