Avatar billede duno Nybegynder
10. juni 2005 - 15:11 Der er 12 kommentarer og
1 løsning

Indhent data og eksporter til XML

Jeg har nedenstående kode, men skal have ændret den en hel del, her kommer en oversigt over rettelserne.

Value skal hentes fra 6 felter, som er en del af en større tabel

felterne hedder s1,s2,s3,s4,s5,s6

Desuden skal der istedet for en allerede defineret række navne (name) indsættes udtrykkende aa1,bb1,cc1,dd1,ee1,ff1

Den resterende del med at eksportere det til XML dokument burde være iorden, jeg kan bare ikke lige fange hvordan indhentningen af data fungere.

Men hvordan hulen gør man det??

jeg vil helst gerne lave det selv, men kan vist godt bruge noget vejledning :o)

Jeg vedlægger 50 points nu, men fordobler når resultatet er fundet

På forhånd tak for hjælpen

koden er nedenfor:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<!--#include file="../Connections/UP.asp" -->

<%

Dim Recordset1

Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")

Recordset1.ActiveConnection = MM_UP_STRING

Recordset1.Source = "SELECT insDate, oilPrice, ID  FROM UP_KLSE  WHERE ID> ((SELECT MIN(ID) FROM UP_KLSE) + ((Select MAX(ID) FROM UP_KLSE) - (SELECT MIN(ID) FROM UP_KLSE)-249))  ORDER BY insDate ASC"

Recordset1.CursorType = 0

Recordset1.CursorLocation = 2

Recordset1.LockType = 1

Recordset1.Open()

Recordset1_numRows = 0

%>

<%

Dim Repeat1__numRows

Dim Repeat1__index

Repeat1__numRows = -1

Repeat1__index = 0

Recordset1_numRows = Recordset1_numRows + Repeat1__numRows

%>

<%

Response.Write("<graph bgcolor=""e6efef"" xaxisname=""Days"" yaxisname=""Price"" caption=""Palm Oil Price from today and one year back"" yaxisminvalue=""800"" yaxismaxvalue=""2400"">")

While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))

Response.Write("<set value="""& Recordset1.Fields.Item("oilPrice").Value&"""/>")

  Repeat1__index=Repeat1__index+1

  Repeat1__numRows=Repeat1__numRows-1

  Recordset1.MoveNext()

Wend

Response.Write("</graph>")

%>



<%

Recordset1.Close()

Set Recordset1 = Nothing

%>


Hilsen

Duno
Avatar billede nythjem Nybegynder
10. juni 2005 - 20:35 #1
Hej Duno..

Du kan ikke bare udskrive nogle data og så hente dem ind i en xml fil..

Du bliver simpelthen nødt til at bruge fso til at lave filen..

Well..

En xml struktur kan se sådan her ud..


<?xml version="1.0" encoding="utf-8" ?>
<channel>
<item>
<title>din titel</title>
<link>dit link</link>
<pubDate>din dato</pubDate>
<ellernogetandet>Noget andet</ellernogetandet>
</item>
<channel>


Så bliver du nødt til at gemme alle dine records i ét udtræk, og gemme det med fso..

Det kunne eksempelvis se sådan ud:

<%
duno = duno & "<item>din titel</item><title>din titel</title><pubdate>din dato</pubdate><ellernogetandet>Noget andet?</ellernogetandet>"
%>

Så har vi så lagret alle dine informationer i variablen duno, så smider vi den ind i fso´en. Og vi husker lige vores åbning og slutninger..

<%
abning = "<?xml version=""1.0"" encoding=""utf-8"" ?>"
generel = "<channel>"
generel2 = "</channel>"

Heledinfil = abning & generel & duno & generel2
%>

<%
dim fs, f
set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.CreateTextFile("c:\dinfil.xml",true)
f.WriteLine("" & Heledinfil & "")
f.Close
set f=nothing
set fs=nothing
%>

Nåh, men så bliver den jo gemt i en ny fil, som interesserede eller dig selv for den sags skyld kan hente :)
Avatar billede duno Nybegynder
11. juni 2005 - 21:05 #2
he he .. der fik du mig.. ;o)

hvad er fso??

og nej jeg forstår ikke hvad det er du gør, jeg forstår hvad det er du gør med at gemme alt i duno (smart egentlig) men hvor er det lige at du henter mine data? jeg skal jeg jo hente indlaeg("s1") osv...

skal jeg indsætte indlaeg("s1"):

<%
duno = duno & "<item>din titel</item><title>din titel</title><pubdate>din dato</pubdate><ellernogetandet <<---- Her oven på (ellernogetandet)

og hvordan gør jeg lige det??

meningen er at filen skal laves, gemmes, hentes og vises on-the-fly altså i et hug.. kan man det?? eller skal jeg igennem flere sider??

undskyld min spørgelyst, men vil altså lære hvordan man gør, og gerne på den bedste måde første gang ;o)
Avatar billede nythjem Nybegynder
11. juni 2005 - 21:39 #3
Hmm..

Jeg er sgu lidt forvirret over din kode.. Sikket virvar.. Rodet.. tsk tsk..

Du vil gerne have trukket alle de her felter ud m.m. s1,s2,s3,s4,s5,s6..

Prøv lige at vide mig koden du gør det med, det er da ikke ovenstående vel?
Avatar billede duno Nybegynder
11. juni 2005 - 23:21 #4
nej.. ovenstående var første tanke..

men jeg bruger bare en standard Select * funktion til at hente det hele .. hvad der sker med det derfra har jeg ingen ide om.. det er jo det jeg ikke kan finde ud af.. (gem som XML) men her er min streng:

Recordset1.Source = "SELECT * FROM PersonTabel WHERE PersonID LIKE '"& Request.Querystring("id")&"'" , database2

og så er "koden" noget i stil med:

Response.Write("<graph bgcolor=""..."" ...>")

For Each row in the Database Results
  Response.Write("<set name=""VauleOfDateRecordedField"" " & _
                      "value=""ValueOfProfitsField"" />")
Next

Response.Write("</graph>")

.....

eller

Response.Write("<set name=""S1""" & "set value="""& Recordset1.Fields.Item("S1").Value&"""/>")

som så gemmes i en XML..

.. men hele pointen er at jeg skal bruge det til en chart/graf.. kig her.. jeg har lavet flashfilen.. nu skal dataen bare plottes ind...

kig her

http://www.4guysfromrolla.com/webtech/111302-1.1.shtml

de skrbver at der er 2 muligheder..

1.. åben databasen og "lad som om du laver en XML fil" som hentes af flash..

2.. åben databasen og hent data og lav en XML som så kan hentes i flash...

jeg startede med mulighed 1.. men er stået helt af.. så nu prøver jeg den anden ;o)
Avatar billede duno Nybegynder
12. juni 2005 - 00:19 #5
Sig mig... modtager du nogen mail når der er svar i de tråde du deltager i...???

jeg har ikke fået nogen mails hele dagen.. og heller ikke igår da du svarede...
Avatar billede nythjem Nybegynder
12. juni 2005 - 11:46 #6
Hej Duno..

Nej jeg får desværre ingen svar e-mails, derfor de her laaaange svar tider :)

Siden blev ikke fundet på linket..

Men jeg ville gøre sådan her.. (Jeg ved ikke helt hvorfor du trækker det dér graf ud?)

Du skal nok tilpasse database sti, det sted hvor du vil gemme filen osv.

'*****************
' Hent data
'*****************

Set Con = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("../../dinsti/dindatabase.mdb")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

SQL = "Select * From PersonTabel WHERE PersonID LIKE '" & Request.Querystring("id") & "'"
Set Record =  Con.Execute(Sql)

If Record.EOF Then

do_not_create = "true"
Response.Write "Der fandtes ingen data under denne kommando!"

Else

Do While Not Record.EOF

dinduno = dinduno & "<s01>" & Recordset1.Fields.Item("S1").Value & "</s01><s02>" & Recordset1.Fields.Item("S2").Value & "</s02><s03>" & Recordset1.Fields.Item("S3").Value & "</s03><s04>" & Recordset1.Fields.Item("S4").Value & "</s04><s05>" & Recordset1.Fields.Item("S5").Value & "</s05><s06>" & Recordset1.Fields.Item("S6").Value & "</s06>"

Record.MoveNext
Loop

End If

Record.Close
Set Record = Nothing
Con.Close
Set Con = Nothing

'****************************
' Lav xml fil
'****************************

If do_not_create = "true" Then
Else

abning = "<?xml version=""1.0"" encoding=""utf-8"" ?>"
generel = "<channel>"
generel2 = "</channel>"

Heledinfil = abning & generel & dinduno & generel2

set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.CreateTextFile(Server.Mappath("/dinmappe/"),true)
f.WriteLine("" & Heledinfil & "")
f.Close
set f=nothing
set fs=nothing

Response.Write "Der er nu lavet en xml fil.."

End If
Avatar billede duno Nybegynder
12. juni 2005 - 14:38 #7
hmm.. jeg får bare en.. siden kan ikke vises :o(
Avatar billede duno Nybegynder
12. juni 2005 - 15:02 #8
har du kigget på mit link : http://www.4guysfromrolla.com/webtech/111302-1.1.shtml

på side fire er der et eksempel på hvordan man får ASP siden til at virke somom at XML filen er en del af dem.. eller sådan noget.. det var det eksempel jeg prøvede..
Avatar billede nythjem Nybegynder
12. juni 2005 - 17:21 #9
Jeg kan som sagt ikke se siden, der kommer bare en 404.. Page not found..

Duno, det er ikke muligt at blande asp med xml, det er simpelthen umuligt. Xml er en ren form for informations bærer / fil.

Nåh, men jeg giver op, hvis du ikke kan forstå mine helt udbyggede og fungerende eksempler.. Sorry..

God søndag aften..
Avatar billede nythjem Nybegynder
12. juni 2005 - 17:23 #10
Til det skal dog siges, at det naturligvis via asp er muligt, at importere xml filer og trækker dataen ud af xml filen.. :)

Men det er noget helt andet..
Avatar billede duno Nybegynder
12. juni 2005 - 20:12 #11
Jeg har tilladt mig at vedlægge noget af teksten fra den omtalte side
siden kan ikke findes"

Using FunkyCharts with XML Data Files Created On the Fly
In the previous example, we saw how to use FunkyCharts with static XML files. However, if you are wanting to graph continuously updating information, such as stock price information, you will need to produce the data XML files on the fly. Assuming that the dynamic data you wish to plot is stored in a database, you can use an ASP or ASP.NET Web page to grab that data from the database and produce the correct XML format.

For example, imagine that you had a database table named DailyStoreProfits that contained two fields: DateRecorded, a date/time field, and Profits a money field. Essentially, this table would have a new record added to it every day, representing the profit for the store on the particular day. To graph this information using FunkyCharts we could create an ASP or ASP.NET Web page that first emitted a <graph> element. Next, it would retrieve all the rows from the DailyStoreProfits table, and for each row it would emit a <set> element. Finally, when complete, it would emit the closing <graph> element.

The pseudocode for this page would look as follows:

Response.Write("<graph bgcolor=""..."" ...>")

For Each row in the Database Results
  Response.Write("<set name=""VauleOfDateRecordedField"" " & _
                      "value=""ValueOfProfitsField"" />")
Next

Response.Write("</graph>")




When this ASP/ASP.NET Web page was called, it would product XML output like:


<graph bgcolor="..." ...>
  <set name="01/16/03" value="54,000.50" />
  <set name="01/17/02" value="34,000.00" />
  ...
</graph>

Now, to display this data in FunkyCharts, you simply use the same HTML as shown for the static XML file, except rather than referencing a static XML file (data.xml in the previous example) reference the ASP/ASP.NET Web page, as shown below:

<OBJECT ...>
<PARAM NAME=movie VALUE="FunkyCharts.swf?dataURL=Shares.aspx">
<PARAM NAME=quality VALUE=high>
<PARAM NAME=bgcolor VALUE=#FFFFFF>
<EMBED src="FunkyCharts.swf?dataURL=Shares.aspx" quality=high
      bgcolor=#FFFFFF  WIDTH="350" HEIGHT="300" NAME="FunkyCharts"
      TYPE="application/x-shockwave-flash"
      PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
  </EMBED>
</OBJECT>
Avatar billede duno Nybegynder
13. juni 2005 - 08:53 #12
men jeg forstår det jo klart og tydeligt, jeg får bare en fejlbesked om at siden ikke kan findes, derhjemme..

men har netop testet på maskinen på mit arbejde.. og der får jeg en egentlig fejl, så jeg kigger på det når jeg kommer hjem..

jeg vender tilbage, og mange tak for hjælpen indtil nu :o)
Avatar billede duno Nybegynder
17. juni 2005 - 14:50 #13
Hej nythjem

Undskyld ventetiden, men nu har jeg endelig fundet fejlen, min udbyder havde ikke givet mig alle de påkrævede rettigheder.. det er nu løst og filen fungere som ønsket, jeg sender points med det samme.

Du bør stadig kigge på ovenstående tekst der står noget vejledning i hvordan man får en slags xml kode som en integreret del af asp siden.

men mange tak for hjælpen!!

Duno :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester