ich hab ein kleines problem mit dictionary-objekten.
ich binde ein dictionary-objekt mittels
Set dic = CreateObject("Scripting.Dictionary")
in meine asp-seite ein. danach weiße ich dem objekt einige daten zu:
dic.add "England", London
dic.add "Frankreich", Paris
und um die daten jetzt noch auf einer anderen seite nutzen zu können
übergebe ich die daten an ein application-object
Application("dic") = dic.items
wenn ich aber nun auf einer anderen seite versuche auf die daten zuzugreifen
meldet er mir immer wieder objekt erforderlich, obwohl ich auch auf der
neuen seite ein dictionary-objekt mittels
Set dic = createObject("Scripting.Dictionary")
erstellt habe
was mach ich falsch? ... wie bekomme ich die gesamten daten von einem
dictionary-object von einer seite auf die andere, so daß ich auf die daten
auch wieder zugreifen kann?
ich hoffe, das von euch mein problem schon mal gelöst hat
mfg,
roman vottner
www.rovoweb.net
"Roman Vottner" <vot...@chello.at> schrieb im Newsbeitrag news:ePBK6.22825$za3.7...@news.chello.at...
> ich binde ein dictionary-objekt mittels
> Set dic = CreateObject("Scripting.Dictionary")
> in meine asp-seite ein. danach weiße ich dem objekt einige daten zu:
> dic.add "England", London
> dic.add "Frankreich", Paris
> und um die daten jetzt noch auf einer anderen seite nutzen zu können
> übergebe ich die daten an ein application-object
> Application("dic") = dic.items
Set Application("dic") = dic
>
> wenn ich aber nun auf einer anderen seite versuche auf die daten zuzugreifen
> meldet er mir immer wieder objekt erforderlich, obwohl ich auch auf der
> neuen seite ein dictionary-objekt mittels
> Set dic = createObject("Scripting.Dictionary")
> erstellt habe
Set dic = Application("dic")
Aber ich glaube mich zu erinnern, dass Dictionarys in einem
Session- oder Applicationobjekt nichts zu suchen haben
(ich glaube wegen des Treadingverhaltens). Da ich das aber
noch nie benötigt und daher auch nicht gemacht habe, kann
ich es nicht 100%ig sagen. Such am besten mal in der
MS KB nach Application Dictionary (unter Active Server Pages)
--
Tschau, Stefan
MS MVP für Active Server Pages
http://www.aspfaq.de
http://www.aspforum.de
objIniDict.Add "SERVER", "www.set4u.at"
und so weiter
#######################
in den script files steht dann:
<!--#INCLUDE FILE = "../include/ini.asp" -->
...
...
'' Set conntection Properties
if objIniDict.Exists("SERVER") then
SERVER = objIniDict.Item("SERVER")
und so weiter.
ich hoffe das ist verständlich.
--
Gruss
Christian
"Stefan Falz [MVP]" <ms....@asp-database.de> schrieb im Newsbeitrag
news:e2a3qcY2AHA.1840@tkmsftngp03...
"Christian Weissengruber" <c.weiss...@aon.at> schrieb im Newsbeitrag news:3afaef78$0$32320$62ce1842@SSP1NO55...
> Hallo Ich arbeite mit dictionaries.
> das schaut z.B. so aus:
> es gibt einen include file,wo das dic gebildet wird
> ini.asp
> Set objIniDict = CreateObject("Scripting.Dictionary")
>
> objIniDict.Add "SERVER", "www.set4u.at"
> und so weiter
> #######################
> in den script files steht dann:
> <!--#INCLUDE FILE = "../include/ini.asp" -->
> ...
> ...
> '' Set conntection Properties
> if objIniDict.Exists("SERVER") then
> SERVER = objIniDict.Item("SERVER")
> und so weiter.
>
> ich hoffe das ist verständlich.
verständlich ist es schon, aber er braucht sein Dictionary
z.B. auf seite1.asp und dann wieder auf seitex.asp. Also
muss er es theoretisch in eine Session- oder Applicationvariable
schreiben, da ansonsten die Daten ja beim Beenden der einen
Seite verlorengehen.
Danke für deine schnelle Antwort, jedoch lässt er mich das Dictionary-Array
nicht in einem an das Application-Objekt weitergeben --> Set
Application("dic") = dic - hier tritt folgender Fehler auf:
Anwendungsobjekt-Fehler 'ASP 0197 : 80004005'
Unzulässige Objektverwendung
/Homepage/Dictionary.asp, Zeile 159
Ein Objekt, das sich dem Apartment-Modell entsprechend verhält, kann
nicht zum Anwendungsobjekt hinzugefügt werden
ich glaube, das hast du vorhin gemeint oder? nun, dann müsste es aber
logisch sein, wenigstens die einzelnen Daten aus dem dictionary-Object einem
Application-Objekt zu übergeben:
Set Application("dicItems") = dic.Items
- doch hier tritt leider auch mal wieder ein fehler auf:
Laufzeitfehler in Microsoft VBScript-Fehler '800a01a8'
Objekt erforderlich: 'Application'
/Homepage/Dictionary.asp, Zeile 159
hmmm ... langsam bin ich schon am verzweifeln *g*. mal schaun was für
Fehlermeldungen der IIS bzw VBScript noch zu bieten hat *fg* ... hätte
jemand vielleicht einen besseren Vorschlag für mein Problem? ... Ist
vielleicht der Einsatz einer Datenbank hier die intelligentere Lösung ...
vorallem wenn die Daten sich sehr schnell ändern könnten?
cu,
Roman Vottner
www.rovoweb.net
"Stefan Falz [MVP]" <ms....@asp-database.de> schrieb im Newsbeitrag
news:e2a3qcY2AHA.1840@tkmsftngp03...
nicht verzweifeln, sondern nach einer Alternative suchen! ;-)
Du könntest z.B. ein ungebundenes RecordSet benutzen und dieses in das
Application-Objekt packen:
http://msdn.microsoft.com/workshop/server/feature/cache.asp
Echte Dictionary-Alternativen benötigte Microsoft selbst:
http://msdn.microsoft.com/workshop/management/planning/MSDNchronicles2.asp
Viele Grüße
Jost aus Soest (sprich: Joost aus Soost)
--
http://vb-tec.de/ - FAQ, Referenz, Beispiele, Tipps
--
_____________________________________________________________
NewsGroups Suchen, lesen, schreiben mit http://netnews.web.de
wir haben das folgendermaßen gelöst ... hier: Mehrsprachigkeit einer
Anwendung.
Dictionary-Object in global.asa definiert:
<OBJECT RUNAT=SERVER SCOPE=Application ID=TX_Sprache1
PROGID="Scripting.Dictionary"></OBJECT>
(muß außerhalb <script ...></script> in der global.asa stehen!)
In einer ASP refenziert man dann z.B. folgendermaßen das Dictionary-Object:
TX_Sprache1.Add UCase(TextAcronym), TextInhalt
Ich hoffe, dies hilft Dir etwas weiter.
Beste Grüße
Jörg
Roman Vottner <vot...@chello.at> schrieb in im Newsbeitrag:
ePBK6.22825$za3.7...@news.chello.at...
>
Ich denke das Problem liegt schon in dem grundsaetzlichen Verhalten von ASP,
dass man keine Arrays in Aplication-Objekten speichern kann. (Laut MS)
Martin
"Roman Vottner" <vot...@chello.at> schrieb im Newsbeitrag
news:ePBK6.22825$za3.7...@news.chello.at...
Sub Application_OnStart()
Set Application("dic")=Server.CreateObject("Scripting.Dictionary")
end sub
Session-Variablen hingegen müssen nicht in der global.asa deklariert werden.
mfg
Marco Reimann
--
dies ist nicht ganz richtig.
Man kann Array-Elemente in einem Dictionary-Object speichern. Wir haben das
praktiziert
und haben auch keine Probleme bei der Speicherung von Dictionary-Objekten
in Session und Application-Variablen.
Beste Grüße
Jörg
Martin Koreis <sd...@gmx.net> schrieb in im Newsbeitrag:
3afbb5f9$0$21737$45be...@newscene.com...
Danke - das war die Lösung - hiermit kann ich genau das machen, was ich
haben wollte ;)
nochmals herzlichen Dank
cu,
Roman
www.rovoweb.net
"Jörg Gregorius" <j.gre...@dios-software.de> schrieb im Newsbeitrag
news:e5yyRff2AHA.2080@tkmsftngp02...
>Um Variablen oder Objekte global (im Application Objekt) verfügbar zu machen,
>müssen sie immer in der global.asa
>(in Application_OnStart) deklariert werden, z.B.
Wie "global"? Habe eine Application-Variable die ich lustig verwende
ohne dass sie in global.asa jemals deklariert wurde. Bei genauer
Betrachtung deklariere ich sie überhaupt nicht gesondert, sondern
initialisiere sie einfach mit einem Wert.
ciao Volker