2015-02-11 52 views
1

爲1當試圖運行一個程序,它與Access 2010,它拋出的錯誤警告:尋找在1774頁的使用地圖,但頁面類型的UCanAccess

WARNING:Looking for usage map at page 1774, but page type is 1 

接口,然後繼續拋出約user lacks privilege錯誤訪問我正在嘗試使用的表格。

這個程序似乎使用Access 2013時完全正常工作,並且它的Access 2010,當我試圖在第一次更新語句一次得手。現在它根本不起作用。

我似乎無法找到此錯誤的任何參考網上的任何地方,所以我希望其他人遇到過它。

它會引發錯誤在這條線的代碼,它與Access 2013接口時它不這樣做:

ResultSet rSet = stmt.executeQuery("Select * FROM Players"); 

整個方法是:

public int addPlayer(String name, int x) throws SQLException //drafts a person to team x (ownerID) 
, ClassNotFoundException 
    { 
    //Database db = new DatabaseBuilder().setCodecProvider(new CryptCodecProvider()).open(new File("BBFBLMasterVersion3.accdb")); 
    Connection con; 
    try 
    { 
     Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 
     con = DriverManager.getConnection("jdbc:ucanaccess://C:/Users/Andrew/Dropbox/Public/Schoolwork/IRC/BBFBLMasterVersion3.accdb"); //name of ODBC driver 
     Statement stmt = con.createStatement(); 
     //stmt.executeQuery("SELECT * FROM DraftNightQuery"); 
     //ResultSet rSet = stmt.getResultSet(); 
     ResultSet rSet = stmt.executeQuery("Select * FROM Players"); 
     String[] split = name.split(" "); 
     String salary = "1"; 
     while(rSet.next()) 
     { 
      String lastName = rSet.getString("Last"); 
      //int x = Integer.parseInt(salary); 
      if(split[0].toLowerCase().equalsIgnoreCase(lastName)) 
      { 
       String firstName = rSet.getString("First"); //get the item from column named Team Name 
       if(split[1].toLowerCase().equalsIgnoreCase(firstName)) 
       { 
        Statement connec = con.createStatement(); 
        Statement idMatch = con.createStatement(); 
        String id = rSet.getString("ID"); 
        connec.executeUpdate("UPDATE Players SET OwnerID = "+x+" WHERE Last ='"+split[0]+"' AND First='"+split[1]+"' "); 
        //stmt.executeUpdate(whoToAdd); 
        ResultSet temp =idMatch.executeQuery("SELECT * FROM Salaries WHERE ID ='"+id+"'"); 
        while(temp.next()){ 
         String tempID = rSet.getString("ID"); 
         if(id.toLowerCase().equalsIgnoreCase(tempID)){ 
          salary = temp.getString("Salary"); 
         } 
        } 
        con.close(); 
        connec.close(); 
        stmt.close(); 
        idMatch.close(); 
        return Integer.parseInt(salary); 
       } 
      } 
     } 
     return 1; 
    } 
    finally{} 
} 
+0

這是一個編程問題或你在找技術支持這一不確定計劃?要幫助您瞭解目前提供的詳細信息將非常困難。 – tnw 2015-02-11 19:52:56

+0

@tnw這是我寫的一個程序。我非常肯定,UCanAccess是造成這個問題的原因,但是無法說明,因爲它在警告開始時沒有引用它。 – Eabryt 2015-02-11 19:54:47

+0

@stevesliva我會使用它遇到的問題更新帖子。 – Eabryt 2015-02-11 19:55:43

回答

2

正如戈德表示,問題被檢測到並由jackcess記錄,它可能是由accdb文件損壞引起的(我會嘗試使用Compact和修復Access工具修復它)。此外,它可能會由於其在同步收件箱文件夾中的使用而導致。因此,該文件通過UCanAccess進行了修改,或者以其他方式無關緊要,因爲所有文件都發生在較低層。請發現在jackcess論壇報告了類似的問題(是的,他們是googlable,你刪除頁碼?)

+0

我在沒有頁碼的情況下使用Google搜索不成功。我運行了緊湊和修復工具,它工作。我現在擔心的是這是暫時的,我必須再次運行它,如果它正在嘗試使用該程序,這可能會很麻煩。現在雖然這似乎工作。這將在未來幾周內得到一些沉重的測試。 – Eabryt 2015-02-11 23:24:33

+0

@Eabryt雖然我沒有確鑿的證據來支持我的說法,但在我看來,直接從Dropbox共享數據庫打開一個Access數據庫是一個「壞主意」,如果存在多於一個用戶/進程的機會可能會同時做到這一點。看到相關的問題[這裏](http://stackoverflow.com/q/19328371/2144390)。 – 2015-02-12 00:15:22

相關問題