Jim DeMarco
Jdemarco at hudsonhealthplan.org
Mon Jan 23 13:56:41 CST 2006
Joe,
This is not true. Grab the class from my article and you're doing XML as soon as you've added it to your mdb. Not trying to push it on you but suggesting you give it a shot.
Jim DeMarco
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Joe Hecht
Sent: Friday, January 20, 2006 7:07 PM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Read External File for Path String
I have so much to learn I have just ruled out xml for now.
My projects are too small to take advantage of it.
Thanks for the info though.
Joe Hecht
jmhecht at earthlink.net
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of
MartyConnelly
Sent: Friday, January 20, 2006 12:55 PM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Read External File for Path String
If you don't have that high a version of Access here is
method of using
xmldom to read xml file.
rather than ImportXML method.
'?LoadXMLFile("C:\XML\AdviserDetails.xml")
Public Function LoadXMLFile(ByRef AdviserXML As String)
'On Error GoTo ErrorHandler
'needs reference set to XML 4.0 and maybe ADO 2.8
Dim oDOMDocument As MSXML2.DOMDocument40
Dim oNodeList As IXMLDOMNodeList
Dim oAdviserDetailsNode As IXMLDOMNode
Dim oLowestLevelNode As IXMLDOMElement
Dim objXMLDOMNamedNodeMap As IXMLDOMNamedNodeMap
Dim xPError As IXMLDOMParseError
Dim Mydb As Database
Dim myrs As ADODB.Recordset
Dim sTempValue As String
Dim lrec As Long
Dim lnorec As Long
Set oDOMDocument = New MSXML2.DOMDocument40
oDOMDocument.async = False
oDOMDocument.validateOnParse = True 'you may want to
parse for errors
oDOMDocument.resolveExternals = False
oDOMDocument.preserveWhiteSpace = True
'use if xml disk file
If Not oDOMDocument.Load(AdviserXML) Then
MsgBox ("XML File error")
Set xPError = oDOMDocument.parseError
DOMParseError xPError
End If
Set oAdviserDetailsNode = oDOMDocument.documentElement
Debug.Print oDOMDocument.xml
'Set Mydb = CurrentDb
'Set myrs = Mydb.OpenRecordset("NewTable")
'use appropriate XPath expression to select nodes
Set oNodeList =
oAdviserDetailsNode.selectNodes("//BusinessDetails/*")
lnorec = 0
lrec = 0
Debug.Print oNodeList.length
' myrs.AddNew
For Each oLowestLevelNode In oNodeList
sTempValue = oLowestLevelNode.Text
lrec = lrec + 1
Select Case oLowestLevelNode.nodeName
Case "BusinessName"
Debug.Print "Business " & sTempValue
'myrs!BusinessName = sTempValue
Case "AddressLine1"
'myrs!AddressLine1 = sTempValue
Case "AddressLine2"
'myrs!AddressLine2 = sTempValue
Case "Suburb"
'myrs!Suburb = sTempValue
Case "State"
'myrs!State = sTempValue
Debug.Print sTempValue
Case "Postcode"
'myrs!Postcode = sTempValue
Case "PhoneNumber"
Debug.Print "Phone " & sTempValue
'myrs!PhoneNumber = sTempValue
Case "Email"
'myrs!Email = sTempValue
Case "FaxNumber"
'myrs!FaxNumber = sTempValue
End Select
If lrec = 9 Then '9 elements in business details
' myrs.Update
lnorec = lnorec + 1
lrec = 0
' myrs.AddNew
End If
Next
MsgBox "Records Added=" & lnorec
' Set myrs = Nothing
'Set Mydb = Nothing
Set oDOMDocument = Nothing
Set oAdviserDetailsNode = Nothing
Set objXMLDOMNamedNodeMap = Nothing
Exit Function
ErrorHandler:
' Call NewError.Raise(Err.Number, Err.Source,
Err.Description)
End Function
Sub DOMParseError(xPE As IXMLDOMParseError)
' The document failed to load.
Dim strErrText As String
' Obtain the ParseError object
With xPE
strErrText = "Your XML Document failed to load" & _
"due the following error." & vbCrLf & _
"Error #: " & .errorCode & ": " & xPE.reason & _
"Line #: " & .Line & vbCrLf & _
"Line Position: " & .linepos & vbCrLf & _
"Position In File: " & .filepos & vbCrLf & _
"Source Text: " & .srcText & vbCrLf & _
"Document URL: " & .url
End With
Debug.Print strErrText
Dim s As String
Dim r As String
Dim i As Long
s = ""
For i = 1 To xPE.linepos - 1
s = s & " "
Next
r = "XML Error loading " & xPE.url & " * " & xPE.reason
Debug.Print r
'show character postion of error; tired of counting
chars in xml file
If (xPE.Line > 0) Then
r = "at line " & xPE.Line & ", character " & xPE.linepos
& vbCrLf & _
xPE.srcText & vbCrLf & s & "^"
End If
Debug.Print r
MsgBox strErrText, vbExclamation
End Sub
-------- "C:\XML\AdviserDetails.xml" save as UTF-8 not
ANSI in notepad
<?xml version="1.0" encoding="UTF-8"?>
<AdviserDetails ID="AD12345">
<BusinessDetails>
<BusinessName>"AD Business Name" </BusinessName>
<AddressLine1>"AD Address Line 1" </AddressLine1>
<AddressLine2>"AD Address Line 2" </AddressLine2>
<Suburb>"AD Suburb" </Suburb>
<State>"AD State" </State>
<Postcode>"AD PostCode" </Postcode>
<PhoneNumber>"AD Phone Number" </PhoneNumber>
<Email>"AD Email" </Email>
<FaxNumber>"AD Fax Number" </FaxNumber>
</BusinessDetails>
</AdviserDetails>
Gustav Brock wrote:
>Hi Stuart
>
>Use A2002+.
>Have an internal table with your path, tblPath.
>
>To export:
>Application.ExportXML acExportTable , "tblPath",
"c:\mypath.xml"
>
>To import:
>CurrentDb.Execute "Delete * From tblPath"
>Application.ImportXML "c:\mypath.xml", acAppendData
>
>To read:
>strPath = DLookup("Path", "tblPath")
>
>Not quite sure how "easy" that is, though in total only
four code lines net are needed.
>However, if you need to store a bunch of user or app
settings it might be a nice method with all the advantages
of XML storage and exchange possibilities.
>
>/gustav
>
>
>
>>>>stuart at lexacorp.com.pg 20-01-2006 00:48 >>>
>>>>
>>>>
>On 19 Jan 2006 at 15:00, Charlotte Foust wrote:
>
>
>
>>Actually, the XML files wind up with a structure very
similar to the ini
>>files but you don't need API calls to read them.
>>
>>
>
>So how would you create, then read an XML file to store a
backend server
>path?
>
>
--
Marty Connelly
Victoria, B.C.
Canada
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
***********************************************************************************
"This electronic message is intended to be for the use only of the named recipient, and may contain information from Hudson Health Plan (HHP) that is confidential or privileged. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution or use of the contents of this message is strictly prohibited. If you have received this message in error or are not the named recipient, please notify us immediately, either by contacting the sender at the electronic mail address noted above or calling HHP at (914) 631-1611. If you are not the intended recipient, please do not forward this email to anyone, and delete and destroy all copies of this message. Thank You".
***********************************************************************************