2013-03-06 75 views
7

當我附加Excel文件時,訪問將截斷幾個備註字段中的數據。 Access表中的字段已被設置爲備註類型。我相信問題在於,我在某些備註字段的前幾行沒有任何條目。 Access假定數據是文本字段,即使我已經將其設置爲備忘錄類型。從Excel導入訪問備註字段時的截斷數據

我試着以CSV格式追加。不工作。

我已經將第一行中的虛擬數據放在超過255個字符的限制,並且數據不會被截斷如果我這樣做。

我不想在每次需要導入Excel文件時都需要輸入虛擬數據。這是一個至少每兩週完成一次的過程,可能會更頻繁。我想建立一個簡單的方法來爲將來的員工使用同一個數據庫導入數據。有任何想法嗎?

更新:即使在第幾排的假數據,訪問被截斷3將數據從10個備註精密組件,當我導入Excel文件(虛擬數據的字符長度是785)。現在我真的對創意不知所措。

+0

我們在Access 2010的「外部數據」選項卡中使用「導入電子表格嚮導」。我不確定如何從嚮導中獲取SQL代碼。有沒有和簡單的方法來做到這一點。 – RBSt 2013-03-07 18:10:27

回答

9

它已經有一段時間了,但我和你有同樣的問題。

多挖後,我發現wonderful world of microsoft explains

爲了避免出錯導入過程,確保每個源列 包含了每一個行中的相同類型的數據。 Access掃描第一個 八個源行,以確定 表中的字段的數據類型。我們強烈建議您確保前八個數據源行不混合任何列中不同數據類型的值。 否則,Access可能不會將正確的數據類型分配給 列。

顯然,這意味着當附加 Excel文件到現有的表,甚至當列被格式化並保存爲備註字段,如果在Excel文件中的第一行的所有8少於256個字符,Access假設你實際上意思是指定文本,因此在255個字符之後截斷剩餘的行。我已經執行了幾個測試,在前8行內放置「虛擬」行,並且每個測試都觸發超過255個字符的導入。

現在,如果您將導入到新表,該向導允許您選擇所有格式選項。

如果您可以覆蓋表中已有的所有數據,則導入到新表格很方便。但是,如果您真的需要追加,我會建議導入到臨時表,然後從那裏追加。一個簡單的方法是保存一個導入,然後從VBA執行它,如Elliot_et_al wanted to do。您也可以在VBA中運行追加查詢。如果您設置表正確你可以逃脫

INSERT INTO [MyTable] 
SELECT [MyTable_temp].* 
FROM [MyTable_temp]; 
2

對於它的價值....我遇到了類似的問題與Access 2013 - 它是從進口截斷爲255個字符的字段即使導入嚮導選擇LONG TEXT作爲字段,甚至當我在前幾行中有> 255個字符的字段時也是如此。

一位同事建議我將電子表格鏈接到新表格中,但問題就消失了。我還創建了一個基於鏈接表的新表,並且都很好。

編輯補充:在Access 2013,如果你已經導入的XLS文件導入Access,不能再回到它首先嚐試鏈接,試試這個來代替:

轉到設計視圖該表,轉到該屏幕底部的字段屬性,並將長文本「文本格式」設置爲「富文本」。就在今天,我發現這使我不必重新創建一個我從Excel幾個月前導入的表格,並發現即使我已將「註釋」列設置爲長文本,仍然會截斷我手動創建的文本無論如何輸入255個字符。切換到Rich Text使此文本可見。

0

我與Access 2010有同樣的確切問題。在找出訪問先查看25條記錄以確定導入時每個列上的數據類型後,我找到了兩種不同的解決方法。

  1. 按列的長度按降序排列導入記錄。這意味着某些列中大於255個字符的記錄將成爲前25個記錄中的記錄。然後,Access能夠在不截斷的情況下導入這些記錄。
  2. 創建鏈接表指定列數據類型作爲備忘錄,然後附加到表。
0

我以前用上面提供的Rich Text解決方案運行過以及使用「虛擬行」作爲導入的第一條記錄。謝謝你!但是,今天我認爲我已經遇到了一個更有效/一致的解決方案,您可以多次重複這些解決方案。我在Access 2007中試過。

使用導入嚮導就好像你正在將數據導入新表一樣。瀏覽所有設置您的規格的屏幕。最重要的是,在繁瑣的字段選項/數據類型區域(對於我最近的文本文件,這是導入文本嚮導的第三個屏幕)檢查或指定數據類型 - 確保在此處指定您的備註字段。 (別擔心,你只需要做一次!)

當你到達最後的「這是嚮導需要的所有信息...」屏幕時,請查找「高級...」按鈕在左下角。這會帶來一個總結你剛剛做的所有事情的屏幕。在右側尋找「另存爲...」。用一個有用的名字保存這些規格。 (您可以直接點擊下方的「規格...」來確認您保存了規格。)點擊「確定」離開高級屏幕。

如果您實際上不需要創建新表,則現在可以取消該向導。接下來 - 這是您從現在起每次都可以執行的操作,以避免截斷 - 使用「將記錄的副本追加到表中......」轉到常規導入嚮導中。在嚮導中,您應該看到相同的「高級...」按鈕。打開它,點擊「規格...」,然後雙擊保存的規格。說「確定」退出「高級」,然後完成嚮導。這應該告訴Access將您的備忘錄字段保存爲備忘錄字段!

將CSV導入到現有表格時,我發現我需要在進入「高級」屏幕之前通過一些常規嚮導屏幕(例如,指定文本限定符)。不知道爲什麼這讓它開心,只是FYI。

我希望這可以幫助別人誰像我這樣的字段截斷導入錯誤掙扎!

0

在很多情況下,你只需要改變備註字段的文本格式,從普通文本爲RTF,現在如果你打開的表的數據可以看到所有導入的文本

1

我用Excel來與他們外部的合作伙伴和捕獲報告交流進入訪問數據庫。我發現最好的辦法是在工作表中插入一個「虛擬」第一行,在任何給定列中包含超過255個字符的用戶填充數據可能超過255個字符。

通過這種方式,當我導入數據時,它總是導入所有文本,然後我可以簡單地從數據庫表中刪除「虛擬」行。

我經常使用從導入數據庫鏈接到的「導入模板」工作簿。在鏈接之前,我將模板頁面設置爲表格格式(以便導入包含所有數據,而不必每次都指定範圍),並將第一個「虛擬」行隱藏在那裏。

以這種方式,我可以簡單地將數據複製並粘貼到導入模板中,然後運行數據庫查詢以將數據導入(並在必要時轉換)到數據庫中,第二個查詢刪除「dummy」事後記錄。

希望這有助於..?

0

Excel和Access很古怪。顯然,將Excel或CSV附加到具有長文本屬性的現有Access表的末尾是個問題。追加數據將默認所有長文本爲簡短文本。解決方法是將數據輸出到Excel,將數據附加到一個表中,然後在Access中將其作爲新表導入。無論您做什麼,訪問都會將附加數據視爲短文本而不是長文本。

確保在使用導入嚮導將列的屬性更改爲長文本時。

我希望這會有所幫助。