Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


SQLfråga med FOR XML

Postades av 2008-07-22 04:36:21 - Magnus Hallberg, i forum sql-server/msde, Tråden har 7 Kommentarer och lästs av 1385 personer

Jag håller på med en fråga som jag använder FOR XML i och kan inte få till det. Det jag försöker göra är en navigering. Jag lägger in länkarna i en databas, sen hämtar jag dom och gör en xml-fil av det eller så använder jag xsl, det har jag inte bestämt ännu. Det har ju ingen betydelse heller. Min tabell ser ut så här:

menuID
parentID
menuText
menuToolTip
menuPath

Det jag vill ha ut är följande:
<code>
<menu>
<menuItem text="HEM" description="Till förstsidan" path="~/default.aspx">
<menuItem text="xxx" description="xxx" path="xxx" />
<menuItem text="yyy" description="yyy" path="yyy" />
</menuItem>
<menuItem text="Kontakt" description="Kontakta oss" path="~/contact.aspx" />
<menuItem text="Om sidan" description="Info om sidan" path="~/aboutPage.aspx" />
<menuItem text="Portfölj" description="Se saker vi gjort" path="~/portfolio.xml">
<menuItem text="Chatt" description="En chatt" path="chatt.aspx" />
<menuItem text="Forum" description="Ett forum" path="forum.aspx" />
</menuItem>
</menu>
</code>

Jaghar denna SP:
<code>
ALTER PROC doXml
as
select
1 as tag ,
null as parent ,
[text] as [menuItem!1!text] ,
description as [menuItem!1!description] ,
menuPath as [menuItem!1!path],
null as [menuItem!2!text] ,
null as [menuItem!2!description],
null as [menuItem!2!path]
from menuDB
where parentid = -1
union all
select
m ,
m ,
m1.[text] ,
m1.description ,
m1.menuPath,
m2.[text] ,
m2.description,
m2.menuPath
from menuDB m1 , menuDB m2
where m2.parentid = m1.menuID
for xml explicit
</code>

den genererar detta:
<code>
<menu>
<menuItem text="HEM" description="Till förstsidan" path="~/default.aspx" />
<menuItem text="Kontakt" description="Kontakta oss" path="~/contact.aspx" />
<menuItem text="Om sidan" description="Info om sidan" path="~/aboutPage.aspx" />
<menuItem text="Portfölj" description="Se saker vi gjort" path="~/portfolio.xml">
<menuItem text="Chatt" description="En chatt" path="chatt.aspx" />
<menuItem text="Forum" description="Ett forum" path="forum.aspx" />
<menuItem text="xxx" description="xxx" path="xxx" />
<menuItem text="yyy" description="yyy" path="yyy" />
</menuItem>
</menu>
</code>

Nu läggs alltså alla undernoder till den sista noden. Jag kommer inte vidare med denna och hoppas nån kan hjälpa mej på traven.


Svara

Sv: SQLfråga med FOR XML

Postades av 2008-07-22 08:52:16 - Samuel Adolfsson

Inte 100% säker men jag tror att detta funkar:

...
union all
select
2, -- m
1, -- m
m1.[text] ,
m1.description ,
...


Svara

Sv:SQLfråga med FOR XML

Postades av 2008-07-22 11:00:44 - Magnus Hallberg

Hej Samuel

Det måste ha hänt nåt när jag kopierade in det eller så fipplade jag med nåt. Det är så jag har koden.
<code>
ALTER PROC doXml
as
select
1 as tag ,
null as parent ,
[text] as [menuItem!1!text] ,
description as [menuItem!1!description] ,
menuPath as [menuItem!1!path],
null as [menuItem!2!text] ,
null as [menuItem!2!description],
null as [menuItem!2!path]
from menuDB
where parentid = -1
union all
select
2 ,
1 ,
m1.[text] ,
m1.description ,
m1.menuPath,
m2.[text] ,
m2.description,
m2.menuPath
from menuDB m1 , menuDB m2
where m2.parentid = m1.menuID
for xml explicit
</code>


Svara

Sv: SQLfråga med FOR XML

Postades av 2008-07-22 12:46:22 - Samuel Adolfsson

Det här borde ge det resultat du vill ha:

select
m1.[text] ,
m1.description,
m1.menuPath,
m2.[text] ,
m2.description,
m2.menuPath
from menuDB m1 , menuDB m2
where m2.parentid = m1.menuID
for xml AUTO

Jag tror dock att det blir utan <menu> och </menu>.


Svara

Sv:SQLfråga med FOR XML

Postades av 2008-07-22 13:53:54 - Samuel Adolfsson

Det här borde ge exakt det du vill ha (men kanske finns bättre sätt?):

SELECT 1 as Tag,
NULL as Parent,
NULL as [menu!1!menu],
NULL as [menuitem!2!text],
NULL as [menuitem!2!description],
NULL as [menuitem!2!path],
NULL as [menuitem!3!text],
NULL as [menuitem!3!description],
NULL as [menuitem!3!path]
UNION ALL
SELECT 2 as Tag,
1 as Parent,
null,
m.text,
m.description,
m.path,
NULL,
NULL,
NULL
FROM menuDB m
WHERE m.parentid = -1
UNION ALL
SELECT 3 as Tag,
2 as Parent,
NULL,
m1.text, -- kan nog ha null här ..
m1.description, -- kan nog ha null här ..
m1.path, -- kan nog ha null här ..
m2.text,
m2.description,
m2.path
FROM menuDB m1, menuDB m2
WHERE m1.parentid = -1
AND m2.parentid = m1.menucategoryid
order BY [menu!1!menu], [menuitem!2!text]
FOR XML EXPLICIT

phew :)


Svara

Sv: SQLfråga med FOR XML

Postades av 2008-07-22 14:26:03 - Magnus Hallberg

Det är riktigt när nu:) Jättetack för du tar dej tid:) Så här ser databasen ut (har bara lagt in en massastrunt)

34 Hem Till förstasidan -1 ~/default.aspx
42 Meny Hantera menyn -1 ~/addMenu.aspx
43 Redigera menyn Redigera menyn 42 test
44 Podcasts Här hittar du mina podcasts -1 pods
45 Lab poden Min labpod 44 port
46 Musik podden musik 44 sdsd
47 12 456 34 12
48 Hem2 Hantera menyn 42 asdas
49 Karate Här hanterar du menyn 42 asfaf
50 Lab poden Hantera menyn 42 ih hioho
51 gh dfsgsd 42 asfaf


Som du ser blir det lite tokigt, jag ser inget mönster när det blir fel heller.
<menu>
<menuitem text="Hem" description="Till förstasidan" menuPath="~/default.aspx">
<menuitem text="12" description="456" menuPath="12" />
<menuitem text="Hem2" description="Hantera menyn" menuPath="asdas" />
<menuitem text="Karate" description="Här hanterar du menyn" menuPath="asfaf" />
<menuitem text="Lab poden" description="Hantera menyn" menuPath="ih hioho" />
<menuitem text="gh" description="dfsgsd" menuPath="asfaf" />
</menuitem>
<menuitem text="Meny" description="Hantera menyn" menuPath="~/addMenu.aspx">
<menuitem text="Redigera menyn" description="Redigera menyn" menuPath="test" />
<menuitem text="Lab poden" description="Min labpod" menuPath="port" />
<menuitem text="Musik podden" description="musik" menuPath="sdsd" />
</menuitem>
<menuitem text="Podcasts" description="Här hittar du mina podcasts" menuPath="pods" />
</menu>


Svara

Sv:SQLfråga med FOR XML

Postades av 2008-07-22 14:58:13 - Magnus Hallberg

Detta ser ut att fungera:)
<code>
ALTER PROC doXml
as
select
m1.[text] ,
m1.description,
m1.menuPath,
m2.[text] ,
m2.description,
m2.menuPath
from menuDB m1 , menuDB m2
where m2.parentid = m1.menuID
for xml AUTO
</code>

Problemet är bara att jag ser bara m1 och m2 på sidan, jag ser alltså inte texten.Har försökt ändra det men får inte till det. Såhär har jag bundit kontrollen. Detta är nu efter det gamla försöket. Men då kunde jag ju döpa alla taggar till "menuItem",det kanjag ju inte nu, eller?

<asp:Menu ID="menu" Orientation="Horizontal" DataSourceID="XmlDataSource1" runat="server"
DynamicHorizontalOffset="2" StaticSubMenuIndent="10px" StaticDisplayLevels="2" >
<DataBindings>
<asp:MenuItemBinding DataMember="menuItem" NavigateUrlField="menuPath"
TextField="text" ToolTipField="description"/>
</DataBindings>

<asp:XmlDataSource ID="XmlDataSource1" XPath="menu" runat="server" DataFile="~/XML/menu.xml" />


Svara

Sv: SQLfråga med FOR XML

Postades av 2008-07-22 19:23:54 - Magnus Hallberg

Efter mycket letande på nätet och testande har jag lyckats lösa det, men på ett annat sätt. Nu sparas det inte i en xml-fil, men det får jag leva med.

Ett annat problem som dök upp är att jag inte kan få det att fungera när jag gör databasanrop och det i min databasklass, troligen jag som returnerar fel eller nåt. Kan nån visa hur jag ska göra det?
<code>
<asp:Menu ID="menu" Orientation="Horizontal" DataSourceID="XmlDataSource1" runat="server"
DynamicHorizontalOffset="2" StaticSubMenuIndent="10px" StaticDisplayLevels="1" >
<DataBindings>
<asp:MenuItemBinding DataMember="MenuItem" NavigateUrlField="NavigateUrl"
TextField="Text" ToolTipField="ToolTip"/>
</DataBindings>

<StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />

<DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />

</asp:Menu>
<asp:XmlDataSource ID="XmlDataSource1" TransformFile="~/TransformXSLT.xsl"
XPath="MenuItems/MenuItem" runat="server"/>

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
DataSet ds = new DataSet();
using (conn)
{
string sql = "Select MenuID, Text, Description, ParentID, menuPath from MenuDB";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(ds);
da.Dispose();
}

ds.DataSetName = "Menus";
ds.Tables[0].TableName = "Menu";
DataRelation relation = new DataRelation("ParentChild",
ds.Tables["Menu"].Columns["MenuID"],
ds.Tables["Menu"].Columns["ParentID"], false);
relation.Nested = true;
ds.Relations.Add(relation);
XmlDataSource1.Data = ds.GetXml();

XmlDataSource1.EnableCaching = false;
XmlDataSource1.DataBind();

<xsl:template match="/Menus">
<MenuItems>
<xsl:call-template name="MenuListing" />
</MenuItems>
</xsl:template>

<xsl:template name="MenuListing">
<xsl:apply-templates select="Menu" />
</xsl:template>

<xsl:template match="Menu">
<MenuItem>

<xsl:attribute name="Text">
<xsl:value-of select="Text"/>
</xsl:attribute>
<xsl:attribute name="ToolTip">
<xsl:value-of select="Description"/>
</xsl:attribute>
<xsl:attribute name="NavigateUrl">
<xsl:value-of select="menuPath"/>
</xsl:attribute>

<xsl:if test="count(Menu) > 0">
<xsl:call-template name="MenuListing" />
</xsl:if>
</MenuItem>
</xsl:template>
</code>


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 764
27 959
271 761
627
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies