Where do custom form fields save?

M

marcomputers

Hi all-

I'm using Outlook to track extra appointment information in fields that
I've placed on the second page of an Appointment Form. To my surprise,
the text I enter in these User-Defined fields is saved when I save the
Appointment.. however I can't find out where Outlook is saving it. We
run exchange, and this Appointment Form posts to a Public Calendar, so
I thought it would save the info in the backofficestorage\domain\public
folders\calendar\*.eml file that corresponds to the appointment,
however I can't find the text from the User-Defined fields there. It
only has the first page Appointment fields saved there.

Does anyone know where the form could be saving the User-Defined fields
data?

Thanks,

Mike
 
S

Sue Mosher [MVP-Outlook]

Why would this be surprising? Since the data is associated with a particular appointment, it makes sense for it to be saved with that appointment. You can see this for yourself with tools like Outlook Spy and MFCMAPI.

Whether it's exposed in the .eml file representation of the item is another matter, about which I have no information. I"m curious -- why does it matter to you? (Remember, that the .eml files are not real files like .txt and .doc files. The data is all in the Exchange database, not stored in individual files.)

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
K

Ken Slovak - [MVP - Outlook]

Custom user properties are saved as named MAPI fields in the item. You need
a MAPI viewer such as MDBView on the server or OutlookSpy on the client to
see them.
 
M

Mike

Thanks Ken and Sue. I thought that the exifs showed the entire
database, obviously I was wrong.

What I'm trying to do is use ado to retrieve my User-Defined field from
an exchange Public folder, however I can't seem to find out how to
reference this field since its an MAPI field. I know with specific
Outlook pre-defined fields you use the urn:schema reference.. Here's an
example of the code I'm trying to build, where PlaceOnWebCalendar is
the MAPI Field...clearly this is not the way to reference the
user-defined field.. :
---------------------------------------------------------------------------------------------------------------------
Rs.Source = "SELECT ""DAV:href"", " & _
" ""urn:schemas:httpmail:subject"", " & _
" ""urn:schemas:calendar:dtstart"", " & _
" ""urn:schemas:calendar:dtend"", " & _
" ""urn:schemas:calendar:location""," & _
" ""PlaceOnWebCalendar""" & _
"FROM scope('shallow traversal of """ & CalendarURL &
"""') " & _
"WHERE (""PlaceOnWebCalendar""='true')" & _
"ORDER BY ""urn:schemas:calendar:dtstart"" DESC"
Rs.Open
Rs.MoveFirst
 
K

Ken Slovak - [MVP - Outlook]

You can access the user properties using WebDAV syntax, but you need to know
the property name and type to do so. For a string user property named
MailClass here's what it would look like:

"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/MailClass"

Replace "string" with another type if needed and "MailClass" for a different
property name. The "{00020329-0000-0000-C000-000000000046}" is consistent,
that's the MAPI named property space where user properties live.
 
M

Mike

Thanks Ken. In between when you replied and when I had posted I ended
up messing around and figuring out another way to do this.
I'm posting the code here for anyone else to use...


Paste it into an asp file on your webserver, replace DOMAIN NAME and
CALENDAR NAME with your domain and the name of the Calendar you're
trying to access, and it works. Note the user-defined fields
referenced.


<%@ Language=VBScript%>
<%
Dim CalendarURL
Dim Rs
Dim Rec
Dim strSubject
Dim strStartTime
Dim strEndTime
Dim strLocation
Dim filesys, filetxt, getname, path
Dim strOnWebCal
Dim strRealStartTime
Dim strRealEndTime
Dim strWebDescription
Dim strWebLink

Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.CreateTextFile("e:/Calendar_Data/calendar.xml",
True)
Set Rs = CreateObject("ADODB.RecordSet")
Set Rec = CreateObject("ADODB.Record")

path = filesys.GetAbsolutePathName("e:/Calendar_Data/calendar.xml")
getname = filesys.GetFileName(path)
CalendarURL = "file://./BackOfficeStorage\DOMAIN_NAME\PUBLIC
FOLDERS\CALENDAR NAME"

Rec.Open CalendarURL

Set Rs.ActiveConnection = Rec.ActiveConnection
Rs.Source = "SELECT ""DAV:href"", " & _
" ""urn:schemas:httpmail:subject"", " & _
" ""urn:schemas:calendar:location""," & _
" ""PlaceOnWebCalendar""," & _
" ""RealStartTime""," & _
" ""RealEndTime""," & _
" ""WebDescription""," & _
" ""WebLink""" & _
"FROM scope('shallow traversal of """ & CalendarURL &
"""') "
Rs.Open
Rs.MoveFirst

filetxt.WriteLine("<XML>")

Do Until Rs.EOF
strOnWebCal = Rs.Fields("PlaceOnWebCalendar").Value
if strOnWebCal = "True" then

strTitle =
Rs.Fields("urn:schemas:httpmail:subject").Value
strLocation =
Rs.Fields("urn:schemas:calendar:location").Value
strRealStartTime = Rs.Fields("RealStartTime").Value
strRealEndTime = Rs.Fields("RealEndTime").Value
strWebDescription = Rs.Fields("WebDescription").Value
strWebLink = Rs.Fields("WebLink").Value

filetxt.WriteLine
"<CalendarItem name='" & strTitle & "'>"
filetxt.WriteLine "<location>"
& strLocation & "</location>"
filetxt.WriteLine
"<realstarttime>" & strRealStartTime & "</realstarttime>"
filetxt.WriteLine
"<realendtime>" & strRealEndTime & "</realendtime>"
filetxt.WriteLine
"<webdescription>" & strWebDescription & "</webdescription>"
filetxt.WriteLine "<weblink>"
& strWebLink & "</weblink>"
filetxt.WriteLine
"</CalendarItem>"
end if
Rs.MoveNext

Loop

filetxt.Close
Set Rs = Nothing
Set Rec = Nothing
%>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top