Access(2003)データベースに、OutlookのフォルダのEntryID(約750文字)を保存するためのメモフィールドがあります。その文字列を取り戻して、次のコードでメールをそのフォルダIDに移動しようとしています。
Dim myNameSpace As Outlook.NameSpace
Dim StoreID As String
Dim target as String 'This is the long EntryID string
Dim objMail as mailitem 'some mail
Set myNameSpace = Application.GetNamespace("MAPI")
StoreID = Application.GetNamespace("MAPI").folders("LiveLink").StoreID
Set dossier = myNameSpace.GetFolderFromID(target, StoreID)
objMail.Move dossier
このtarget
場合、varには748ではなく最初の252文字しかありません。興味深いのは、同じ〜255の最初の文字で使用できる他のフォルダーがない場合でも、Outlookが正しいフォルダーを見つけることです。ただし、複数あるためにクラッシュする場合もあります。データベースからメモを取得するためにRecordsetを使用しています。これが私のSQLです:
SELECT EntryID FROM Folder
私はついにこの振る舞いに関するいくつかの情報を見つけました:http://allenbrowne.com/ser-63.html。ただし、ご覧のとおり、クエリでユニオンや特定のものを使用していません...
なぜまだ切り捨てられているのですか?
データベース内の元のメモ/文字列:
00000000CE5B922DF5D7654C993FFDB4FF79A7A00100000057010000307E7E2D317E305C307E4C6976656C696E6B204851457E307E2D315C307E4C6976656C696E6B204851457E2D357E305C307E4C6976656C696E6B204851457E313233373235387E2D355C307E4C6976656C696E6B204851457E31303233363334317E313233373235385C307E4C6976656C696E6B204851457E31323930393430387E31303233363334315C307E4C6976656C696E6B204851457E31343539333439307E31323930393430385C307E4C6976656C696E6B204851457E31383735353632377E31343539333439305C307E4C6976656C696E6B204851457E3131363434333236317E31383735353632375C307E4C6976656C696E6B204851457E3131363434333236347E3131363434333236315C307E4C6976656C696E6B204851457E3131363434333238397E3131363434333236345C307E4C6976656C696E6B204851457E3131363434333330337E313136343433323839
SQLクエリ後の切り捨てられたメモ/オブジェクト/フィールド/文字列:
00000000CE5B922DF5D7654C993FFDB4FF79A7A00100000057010000307E7E2D317E305C307E4C6976656C696E6B204851457E307E2D315C307E4C6976656C696E6B204851457E2D357E305C307E4C6976656C696E6B204851457