[ASP/XML] Externe XML laden in ADO

Pagina: 1
Acties:

  • Dukey
  • Registratie: November 2000
  • Laatst online: 12-04 22:43

Dukey

Ik heb dit getypt hier -->

Topicstarter
K'zit met een probleempje.

Ik wil graag twee access databases handmatig syncen, welke op twee verschillende lokaties staan.

Na gistermiddag gezocht te hebben op goede methodes heb ik der voor gekozen om de records die gewijzigd zijn op te slaan in een XML middels het ZEER handige:
ASP:
1
objrs.save "E:\folder\test.xml", 1 'adPersistXML

Je krijgt nu een leuke xml die ik natuurlijk beschikbaar kan stellen online zodat hij bereikbaar is bij die andere lokatie.

Middels het volgende stukje code kun je de XML weer terug zetten naar een ADO recordset en heel simpel weer invoeren in de database.
ASP:
1
2
set objrs = server.createObject("ADODB.recordset")  
objrs.open "E:\folder2\test.xml",,,,256 'adCmdFile


Dit werkt perfect als ik de XML file lokaal zet bij die tweede lokatie en dan het script laad.
Maar ik wil dus de XML file via een http adres inladen en verwerken als ADO recordset richting database.

Als ik dat "E:\folder2\test.xml" vervang voor een http adres krijg ik een "error: 80004005" zonder verdere omschrijving.

Ik vermoed dat het in het 256 zit maar ik kan nergens een duidelijke lijst vinden van waardes die ik kan gebruiken op die plaats.

Kortom: Gebruik van externe XML file (http) om in te laden in een ADO recordset.

Ook wel de allergrootste _ _ _ _ _ (vul in met blokletters)


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

ik heb zelf nog nooit xml-files ingelezen mbv ADO, maar kun je ze niet met MSXML ophalen? Daarmee kun je iig probleemloos xml-files van elke willekeurige server benaderen.

Of je ze dan direct in kunt lezen mbv ADO weet ik niet, mss moet je eerst lokaal (dus op server2) opslaan. Hoewel dit wel een beetje een omweg is en opslaan in het memory handiger is (als je file tenminste niet al te groot is, dat vindt de server dan mss niet zo fijn (of de beheerders ervan :) )).

P.S. je lijstje met opties ipv die 256 kun je hier vinden: http://msdn.microsoft.com.../mdcstcommandtypeenum.asp

[ Voor 24% gewijzigd door wizzkizz op 05-04-2005 12:14 . Reden: lijst met opties voor CommandTypeEnum toegevoegd ]

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07-05 15:06

sopsop

[v] [;,,;] [v]

Heb je hier wat aan?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
set xmlDOM=server.createobject("Microsoft.XMLDOM")
xmlDOM.load (request)

set stmData=server.createobject("ADODB.Stream")

stmData.open
stmData.WriteText xmlDom.xml
stmData.setEOS

stmData.position=0

set rstData=server.createobject("ADODB.Recordset")
'rstData.CursorLocation=adUseClient

rstData.open stmData ', , adOpenKeySet, adLockBatchOptimistic, adCmdFile
set stmData=Nothing

rstData.ActiveConnection="Provider=sqloledb;Data Source=SQLServer7;Initial Catalog=mydb;User id=myid;password=mypwd;"

rstdata.updateBatch

rstData.close

set rstData= Nothing

  • Dukey
  • Registratie: November 2000
  • Laatst online: 12-04 22:43

Dukey

Ik heb dit getypt hier -->

Topicstarter
wizzkizz schreef op dinsdag 05 april 2005 @ 12:03:
ik heb zelf nog nooit xml-files ingelezen mbv ADO, maar kun je ze niet met MSXML ophalen? Daarmee kun je iig probleemloos xml-files van elke willekeurige server benaderen.

Of je ze dan direct in kunt lezen mbv ADO weet ik niet, mss moet je eerst lokaal (dus op server2) opslaan. Hoewel dit wel een beetje een omweg is en opslaan in het memory handiger is (als je file tenminste niet al te groot is, dat vindt de server dan mss niet zo fijn (of de beheerders ervan :) )).

P.S. je lijstje met opties ipv die 256 kun je hier vinden: http://msdn.microsoft.com.../mdcstcommandtypeenum.asp
MSXML had ik al geprobeerd maar het object wat dan onstaat is niet compatible met ADO. De omweg wat je voorstelde zal hoogstwaarschijnlijk WEL werken aangezien ik de file dan gewoon lokaal heb staan bij lokatie 2. Dit is gewoon als laatste optie. Het uiteindelijke systeem zal straks toch niet vaker dan een keer op een dag gebruikt worden dus serverload vindt ik niet zo'n probleem.

file-grootte = 28kb ;) .

Ook wel de allergrootste _ _ _ _ _ (vul in met blokletters)


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Djoekie schreef op dinsdag 05 april 2005 @ 12:14:
[...]

MSXML had ik al geprobeerd maar het object wat dan onstaat is niet compatible met ADO. De omweg wat je voorstelde zal hoogstwaarschijnlijk WEL werken aangezien ik de file dan gewoon lokaal heb staan bij lokatie 2. Dit is gewoon als laatste optie. Het uiteindelijke systeem zal straks toch niet vaker dan een keer op een dag gebruikt worden dus serverload vindt ik niet zo'n probleem.

file-grootte = 28kb ;) .
28KB zou ik gewoon in zn geheugen opslaan en vervolgens uit zn geheugen lezen ;)

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • Dukey
  • Registratie: November 2000
  • Laatst online: 12-04 22:43

Dukey

Ik heb dit getypt hier -->

Topicstarter
boppert schreef op dinsdag 05 april 2005 @ 12:11:
Heb je hier wat aan?...
[/code]
Ik heb het geprobeerd en "XMLDOM.Async = false" toegevoegd, anders geeft ie al een error als ie de xml niet helemaal binnen krijgt.

EDIT: Hij doet het >:) . Ik moest ook nog "xmlDOM.setProperty "ServerHTTPRequest", true" toevoegen.
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
set xmlDOM = server.createobject("Microsoft.XMLDOM")
xmlDOM.Async = false
xmlDOM.validateOnParse = false
xmlDOM.setProperty "ServerHTTPRequest", true

xmlDOM.Load("http://www.server.nl/test.xml")
set stmData = server.createobject("ADODB.Stream")

stmData.open
stmData.WriteText xmlDom.xml
stmData.setEOS
stmData.position = 0
    
set objrs = server.createobject("ADODB.Recordset")
objrs.CursorLocation = 3 'adUseClient
objrs.open stmData ', , adOpenKeySet, adLockBatchOptimistic, adCmdFile
set stmData = nothing

[ Voor 84% gewijzigd door Dukey op 05-04-2005 13:48 ]

Ook wel de allergrootste _ _ _ _ _ (vul in met blokletters)

Pagina: 1