2 messaggi dal 03 maggio 2010
VI E' MAI CAPITATO ?. Per lavoro ho necessita di costruire un database che restituisca i dati a mezzo di diagramma grafico. Per esempio: ho i campi venditore e acquirente. Ho bisogno che mi venga restituito il risultato della query nel seguente modo: se Antonio acquistasse da Marco e Marco da Simone mi servirebbe il seguente risultato: Antonio ------> Marco ------> Simone (e così via). In pratica come avrete notato la query restituisce il risultato di un'altra query, collegandola con freccette, se possibile a forma stellare. Se qualcuno avesse un esempio gli sarei molto grato. Savio
Saviuccio wrote:
Se qualcuno avesse un esempio gli sarei molto grato.

probabilmente, il sistema più rapido è fare query annidate. in questo senso, ADO.NET 2.0 supporta mars:
http://www.aspitalia.com/articoli/sqlserver2005/mars.aspx

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
2 messaggi dal 03 maggio 2010
ti ringrazio epr la risposta. Però, come ho detto nella richiesta, a me interessa avere un risultato grafico. Per esmpio che tutta la sequenza dei dati sia restituita per esempio con una freccetta o magari ad albero. grazie
21 messaggi dal 24 novembre 2009
Tempo fa usai una routine del genere che avevo trovato sul web e modificata a mio uso, per visualizzare una distinta componenti ad albero sul nostro sito intrante.

Vedi se ti può essere utile.

Saluti




<%@ Language=VBScript %>
<!-- #include file="tree.asp" -->
<%

'========================================
' BUILDING A TREE PROGRAMATICALLY
'========================================
' This approach would be best suited for building
' dynamic trees using For..Next loops and such.

Set MyTree2 = New Tree
MyTree2.Top = 10
MyTree2.Left = 10
MyTree2.ExpandImage = "plus.gif"
MyTree2.CollapseImage = "minus.gif"
MyTree2.LeafImage = "blank.gif"

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Dim addrpc
addrpc = Request.Cookies("Adr")

Dim DbPath, Conn
DbPath="database.mdb"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & addrpc


Dim strSQL, Rs
strSQL = "SELECT * FROM Albero"

Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open strSQL, Conn, 3, 3

if Rs.EOF then
Response.write "Nessun risultato trovato!"
else


Do while NOT Rs.EOF

Pos0 = Rs("P0")
Pos1 = Rs("P1")
Pos2 = Rs("P2")
Pos3 = Rs("P3")
Pos4 = Rs("P4")
Pos5 = Rs("P5")
Pos6 = Rs("P6")
Pos7 = Rs("P7")
Pos8 = Rs("P8")
Pos9 = Rs("P9")
Pos10 = Rs("P10")
Codice = Rs("Figlio")
Descr = Rs("Descrizione")
Ubi = Rs("Ubicazione")
Addr = Rs("Url")

If IsNull(Pos1) Then
Set Node1 = MyTree2.CreateChild(Codice,Descr,Ubi,Addr)
Else
If IsNull(Pos2) Then
Set SubNode1 = Node1.CreateChild(Codice,Descr,Ubi,Addr)
Else
If IsNull(Pos3) Then
Set SubNode2 = SubNode1.CreateChild(Codice,Descr,Ubi,Addr)
Else
If IsNull(Pos4) Then
Set SubNode3 = SubNode2.CreateChild(Codice,Descr,Ubi,Addr)
Else
If IsNull(Pos5) Then
Set SubNode4 = SubNode3.CreateChild(Codice,Descr,Ubi,Addr)
Else
If IsNull(Pos6) Then
Set SubNode5 = SubNode4.CreateChild(Codice,Descr,Ubi,Addr)
Else
If IsNull(Pos7) Then
Set SubNode6 = SubNode5.CreateChild(Codice,Descr,Ubi,Addr)
Else
If IsNull(Pos8) Then
Set SubNode7 = SubNode6.CreateChild(Codice,Descr,Ubi,Addr)
Else
If IsNull(Pos9) Then
Set SubNode8 = SubNode7.CreateChild(Codice,Descr,Ubi,Addr)
Else
If IsNull(Pos10) Then
Set SubNode9 = SubNode8.CreateChild(Codice,Descr,Ubi,Addr)
Else
Set SubNode10 = SubNode9.CreateChild(Codice,Descr,Ubi,Addr)
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If

Rs.MoveNext
Loop
End If

MyTree2.Draw()

Set MyTree2 = Nothing

%>
21 messaggi dal 24 novembre 2009
E questa la routine per visualizzare.


<%
'******************************************************
' Author: Jacob "Bèézle" Gilley
' Email: avis7@airmail.net
' My Terms: You can use this control in anyway you see fit
' cause I have no means to enforce any guidelines
' or BS that most developers think they can get
' you to agree to by spouting out words like
' "intellectual property" and "The Code Gods".
' - Viva la Microsoft!
'******************************************************

Dim gblTreeNodeCount:gblTreeNodeCount = 1

Class TreeNode

Public Value1
Public Value2
Public Value3
Public Value4
Public ExpandImage
Public CollapseImage
Public LeafImage
Public Expanded
Private mszName
Private mcolChildren
Private mbChildrenInitialized

Public Property Get ChildCount()
ChildCount = mcolChildren.Count
End Property

Private Sub Class_Initialize()
mszName = "node" & CStr(gblTreeNodeCount)
gblTreeNodeCount = gblTreeNodeCount + 1

mbChildrenInitialized = False
Expanded = False
End Sub

Private Sub Class_Terminate()
If mbChildrenInitialized And IsObject(mcolChildren) Then
mcolChildren.RemoveAll()
Set mcolChildren = Nothing
End If
End Sub

Private Sub InitChildList()
Set mcolChildren = Server.CreateObject("Scripting.Dictionary")
mbChildrenInitialized = True
End Sub

Private Sub LoadState()
If Request(mszName) = "1" Or Request("togglenode") = mszName Then
Expanded = True
End If
End Sub

Public Function CreateChild(szValue1,szValue2,szValue3,szValue4)

If Not mbChildrenInitialized Then InitChildList()

Set CreateChild = New TreeNode
CreateChild.Value1 = szValue1
CreateChild.Value2 = szValue2
CreateChild.Value3 = szValue3
CreateChild.Value4 = szValue4
CreateChild.ExpandImage = ExpandImage
CreateChild.CollapseImage = CollapseImage
CreateChild.LeafImage = LeafImage

mcolChildren.Add mcolChildren.Count + 1, CreateChild

End Function

Public Sub Draw()

LoadState()

Response.Write "<table border=""0"">" & vbCrLf
Response.Write "<tr><td>" & vbCrLf

If Expanded Then
Response.Write "<a href=""javascript:collapseNode('" & mszName & "')""><img src=""" & CollapseImage & """ border=""0""></a>" & vbCrLf
ElseIf Not mbChildrenInitialized Then
Response.Write "<img src=""" & LeafImage & """ border=0>" & vbCrLf
Else
Response.Write "<a href=""javascript:expandNode('" & mszName & "')""><img src=""" & ExpandImage & """ border=""0""></a>" & vbCrLf
End If

Response.Write "</td>" & vbCrLf
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
nodosel = Request.QueryString("togglenode")

if nodosel = mszName then
Response.write "<td nowrap width=400 bgcolor=yellow><H5>" & Value1 & "   " & vbCrLf
else
Response.write "<td nowrap width=400><H5>" & Value1 & "   " & vbCrLf
end if

Response.Write Value2 & "   " & "</td>" & vbCrLf

if isnull(Value3) or Value3 = "" then
Response.Write "<td width=40>" & vbCrLf
else
Response.Write "<td width=40 align=center background=sfondopuls.bmp>" & vbCrLf
end if
if isnull(Value3) or Value3 = "" then
Response.write "" & "</td>" & vbCrLf
else
Response.write "<a href=ubica.asp?ubi=" & Value3 & " title=Visualizza Ubicazione><H5>" & Value3 & "</td>" & vbCrLf
' Response.write "<Input type=button value=" & Value3 & " ONCLICK=ubica.asp?ubi=" & Value3 & "></td>" & vbCrLf
end if

Response.Write "<td>" & vbCrLf
if Value4 = "notpresent" then
Response.Write "<td>" & vbCrLf
else
Response.write "<a href=" & Value4 & " title=Visualizza Disegno><img border=0 src=disegno.bmp></td>" & vbCrLf
' Response.write "<Input type=button value=Open ONCLICK=aprimg(Value4)></td>" & vbCrLf
' Response.Write "<a href=""javascript:aprimg('" & Value4 & "')""><img src=disegno.bmp border=0></a>" & vbCrLf
' Response.Write "<a href=""javascript:aprimg()""><img src=disegno.bmp border=0></a>" & vbCrLf

end if

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If Expanded Then
Response.Write "<input type=""hidden"" name=""" & mszName & """ value=""1"">" & vbCrLf

If mbChildrenInitialized Then
Response.Write "<tr><td>&nbsp;</td>" & vbCrLf
Response.Write "<td>" & vbCrLf

For Each ChildNode In mcolChildren.Items
ChildNode.Draw()
Next

Response.Write "</td>" & vbCrLf
Response.Write "</tr>" & vbCrLf
End If
End If

Response.Write "</table>" & vbCrLf

End Sub

End Class


Class Tree

Public Top
Public Left
Public ExpandImage
Public CollapseImage
Public LeafImage
Private mszPosition
Private mcolChildren

Public Property Let Absolute(bData)
If bData Then mszPosition = "absolute" Else mszPosition = "relative"
End Property

Public Property Get Absolute()
Absolute = CBool(mszPosition = "absolute")
End Property

Private Sub Class_Initialize()
Set mcolChildren = Server.CreateObject("Scripting.Dictionary")
mnTop = 0
mnLeft = 0
mszPosition = "absolute"
End Sub

Private Sub Class_Terminate()
mcolChildren.RemoveAll()
Set mcolChildren = Nothing
End Sub

Public Function CreateChild(szValue1,szValue2,szValue3,szValue4)

Set CreateChild = New TreeNode

CreateChild.Value1 = szValue1
CreateChild.Value2 = szValue2
CreateChild.Value3 = szValue3
CreateChild.Value4 = szValue4
CreateChild.ExpandImage = ExpandImage
CreateChild.CollapseImage = CollapseImage
CreateChild.LeafImage = LeafImage

mcolChildren.Add mcolChildren.Count + 1, CreateChild

End Function

Public Sub Draw()

AddClientScript()

Response.Write "<div id=""treectrl"" style=""left: " & Left & "px; top: " & Top & "px; position: " & mszPosition & ";"">" & vbCrLf
Response.Write "<form name=""treectrlfrm"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """ method=""get"">" & vbCrLf
Response.Write "<table border=""0"">" & vbCrLf
Response.Write "<tr><td>" & vbCrLf

For Each ChildNode In mcolChildren.Items
ChildNode.Draw()
Next

Response.Write "</td></tr>" & vbCrLf
Response.Write "</table>" & vbCrLf

Response.Write "<input type=""hidden"" name=""togglenode"" value="""">" & vbCrLf
Response.Write "</form>" & vbCrLf
Response.Write "</div>" & vbCrLf

End Sub

Private Sub AddClientScript()
%>
<script language="JavaScript">

function expandNode(szNodeName)
{
if(document.layers != null) {
document.treectrl.document.treectrlfrm.togglenode.value = szNodeName;
document.treectrl.document.treectrlfrm.submit();
}
else {
document.all["treectrlfrm"].togglenode.value = szNodeName;
document.all["treectrlfrm"].submit();
}
}

function collapseNode(szNodeName)
{
if(document.layers != null) {
document.treectrl.document.treectrlfrm.elements[szNodeName].value = -1;
document.treectrl.document.treectrlfrm.submit();
}
else {
document.treectrlfrm.elements[szNodeName].value = -1;
document.treectrlfrm.submit();
}
}
function aprimg(url)
{
var shell = new ActiveXObject("Wscript.Shell");
shell.Run ("rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen " + url) ;
}
</script>
<%
End Sub

End Class

%>
Saviuccio wrote:
ti ringrazio epr la risposta. Però, come ho detto nella richiesta, a me interessa avere un risultato grafico. Per esmpio che tutta la sequenza dei dati sia restituita per esempio con una freccetta o magari ad albero.

beh, se ti interessa un grafico, devi dotarti di un componento grafico che supporti questo tipo di risultato. la freccetta sarebbe il minimo da fare, una volta che hai la logica.
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
stefano.masi wrote:
Tempo fa usai una routine del genere che avevo trovato sul web e modificata a mio uso, per visualizzare una distinta componenti ad albero sul nostro sito intrante.

questo è Classic ASP, invece la richiesta è per ASP.NET.
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.