Ik maak gebruik van onderstaande functionaliteit (maar dan in pseudo code neergezet om het wat overzichtelijk te maken). Ik haal een menustructuur hier mee op. Ik kan aangeven bij een menuitem dat hij een andere tree erbij moet matchen. Detecteer ik dus zo'n menuitem, dan roep ik function A opnieuw aan.
En dan komen de problemen wanneer de functie voor een tweede keer wordt aangeroepen...
Het schijnt te maken te hebben met de meerdere connections naar sql server 2000, ik kan alleen geen passende oplossing vinden! Of maak ik zelf een grote fout die ik over het hoofd zie...
Ook handleiding e.d. over hoe je in zulke situaties het beste om kan gaan met het gebruik van meerdere connections binnen een recursieve functie kan ik ook niet vinden...
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| <% function A (rootmenu) { var query = ""; query += "SELECT "; query += " menuitem.resourceguid, "; query += " menuitem.id, "; query += " menuitem.title, "; query += " menuitem.url, "; query += " parent.parentid, "; query += " child.childid, "; query += " child.volgnr "; query += "FROM "; query += " NavMenus AS menuitem "; query += "FULL JOIN "; query += " NavRelaties AS child "; query += " ON "; query += " menuitem.id = child.parentid "; query += "FULL JOIN "; query += " NavRelaties AS parent "; query += " ON "; query += " menuitem.id = parent.childid "; query += "WHERE NOT "; query += " (parent.parentid IS NULL) "; query += "OR "; query += " (menuitem.id = " + GetTopMenuId(rootmenu) + ") "; query += "ORDER BY "; query += " menuitem.id ASC, "; query += " child.volgnr ASC "; var rs = Server.CreateObject("ADODB.Recordset"); rs.ActiveConnection = Application("conn"); rs.CursorType = 3; rs.Open(query); while (!rs.EOF) { if (voorwaarde == true) { query = "query..."; var rsrootmenu = Server.CreateObject("ADODB.Recordset"); rsrootmenu.ActiveConnection = Application("conn"); rsrootmenu.CursorType = 3; rsrootmenu.Open(query); var rootm = rsrootmenu("rootmenu").value; rsrootmenu.Close(); function A (rootm); } else { // gewone afhandeling } rs.MoveNext(); } rs.Close(); } function GetTopMenuId (rootmenu) { var query = "SELECT id FROM NavMenus WHERE title = '" + rootmenu + "'"; var rs = Server.CreateObject("ADODB.Recordset"); rs.ActiveConnection = Application("conn"); rs.CursorType = 3; rs.Open(query); var val = (!rs.EOF) ? rs("id").value : null; rs.Close(); return val; } %> |
En dan komen de problemen wanneer de functie voor een tweede keer wordt aangeroepen...
code:
1
2
3
4
5
| Provider error '8000ffff' Catastrophic failure /cms/includes/menubuilder.asp, line 70 |
Het schijnt te maken te hebben met de meerdere connections naar sql server 2000, ik kan alleen geen passende oplossing vinden! Of maak ik zelf een grote fout die ik over het hoofd zie...
Ook handleiding e.d. over hoe je in zulke situaties het beste om kan gaan met het gebruik van meerdere connections binnen een recursieve functie kan ik ook niet vinden...