2014-02-05 23 views
0

因此,我們出口的記錄和這些文件提交給通過EDI我們的供應商,但他們的系統不能接受我們,因爲一些非常靠不住的文件「..」(十六進制0B)字符在文本文檔的每一個新行的開始處顯示。六角字從FileMaker Pro中的數據庫問題

我讀過Filemaker Pro如何導出文件以及因爲這些十六進制0B字符無法事先刪除而存在問題,from within Filemaker。我對Java的理解有限,是否會有適當的基於Java的運行時解決方案可以創建來解決此問題?

我已經嘗試在每種可用的導出方法中導出有問題的文本文件,包括.mer,.csv,.tab等,以及每種導出類型可用的輸出文件字符集的每種組合,有些甚至可以創建更多隱藏字符的問題。我最終決定了.tab(ASCII [DOS]),因爲它具有最低的剩餘信息量,但我仍然需要擺脫這些0B字符,以便我們的EDI集成合作夥伴能夠毫無問題地接受我們的文件。

編輯:爲清楚起見,增加了更多的信息。

+0

「*我讀過Filemaker Pro如何導出文件存在問題*」我從來沒有聽說過這樣的問題 - 也許是一個鏈接?你究竟如何輸出:什麼格式,什麼字符集? –

+0

我應該補充說xOb是一個垂直製表符;當* *導出爲csv或製表符分隔時,* *如果**您在導出的字段中有回車符,回車符以這些格式保留爲記錄分隔符。 –

+0

更新了帖子。我只是感到困惑,因爲我將如何獲得這些數據導出,因爲我試圖直接導出字段,我試圖導出記錄,只選擇該字段......我有點難住。 –

回答

0

在ASCII十六進制值「0B」是一個垂直製表符。

This chart是用於特定的ASCII值,反之亦然搞清楚十六進制值良好的參考點。

獲取垂直選項卡出來的文本字段的有點刺激,但這樣做,能。我必須爲我們作爲文本導入到filemaker中的一系列文檔執行此操作,然後將其移至postgresql數據庫。我所做的是以下幾點:

  • 下載免費應用Hex Fiend(這個程序允許你輸入文字,並看到它的十六進制值或十六進制,並看到它的等效文本)
  • 輸入值0B到左側面板六角魔(十六面)
  • 點擊進入魔方右側面(文字面),然後點擊菜單命令編輯 - >全選選擇全文內容,然後編輯 - >複製將內容(垂直製表符文本字符)複製到剪輯板
  • 在的FileMaker,創建腳本步驟的腳本:

    Set Field[myTable::myField ; Substitute (myTable::myField ; "*pasteVerticalTabCharacterHere*" ; "")]

  • 您的垂直製表符在第一盤的替代功能

    • 注意引號之間粘貼時你這樣做,你的替代功能將可能突破兩行
  • 樂AVE第二套引號的替代功能空白

當你火上包含豎直突出在myfield它將替代他們爲空字符串""創紀錄的腳本。你也可以改變替代功能切換垂直製表出以回車像這樣:

Set Field[myTable::myField ; Substitute (myTable::myField ; "*pasteVerticalTabCharacterHere*" ; ¶)] 

如果你有一些需要這套場階上跑,你可以創建一個循環通過腳本記錄所有的記錄和火災這一步。

你也可以做它的快速和骯髒的方式:

  • 顯示了需要清洗
  • 點擊進入現場進行清理
  • 從記錄菜單中的所有記錄,選擇Replace Field Contents
  • 輸入替代計算上述作爲取代計算
  • 命中取代

這將通過一次性清理所有記錄中的垂直製表符。最後,如果你有一個特定的字段或者你知道的字段可能在其中包含垂直標籤,我會建議在包含替代計算的修改版本的字段上進行自動輸入計算以上:

Substitute (Self ; "*pasteVerticalTabCharacterHere*" ; "") 

這樣一來,只要您輸入記錄到包含垂直製表符的表中,垂直製表符,自動清理。

我還應該注意到hexfiend是一個mac應用程序。我想在Windows電腦上,您只需按control+K即可輸入垂直製表符,但我沒有嘗試過。

希望這會有所幫助!

+0

恐怕你錯過了這裏的觀點:垂直製表符在字段中不是**;它們在出口期間被添加,作爲在該字段中*的*的回車替換。順便說一句,如果你曾經在一個領域得到一個垂直標籤,使用'Substitute(Yourfield; Char(11);「」)''來取出它是很平常的。 –