Avatar billede kennethv Nybegynder
17. juni 2009 - 09:51 Der er 38 kommentarer og
1 løsning

Hvordan henter jeg data med SQLDataSource i Visual Web Developer?

Jeg har lige hentet VWD Express 2008 Edition og vil nu gerne have fat i min SQL db ved hjælp af SQLDataSource komponent der i VWD. Jeg har en SELECT som jeg skal bruge for at hente daata fra min db. Den ser således ud:

set res = yourdbconnection.execute("Select Employee, DateOfRetire, ComputerName, DateOfWarrantyEnded FROM StaffLeftCompany WHERE SecurityCode='" & Page.Request("id") &"'")
while not res.eof
  strEmployee = res.Fields("Employee").Value
  strDateOfRetire = res.Fields("DateOfRetire").Value
  strComputerName = res.Fields("ComputerName").Value
  strDateOfWarrantyEnded = res.Fields("DateOfWarrantyEnded").Value
  res.MoveNext
wend
res.Close

Det er faktisk blevet konverteret fra PHP. Nu ligger det sig sådan at jeg sidder med VWD og har tilføjet min komponent og via design tab har lavet en select som ser således ud:

--------------------- Start default.aspx ------------------------

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:StaffMembersConnectionString %>"
    SelectCommand="SELECT [Employee], [DateOfRetire], [ComputerName], [DateOfWarrantyEnded] FROM [StaffLeftCompany] WHERE ([SecurityCode] = @SecurityCode)">
    <SelectParameters>
        <asp:QueryStringParameter Name="SecurityCode"
            QueryStringField="Page.Request("id")" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>
<head runat="server"> 
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       
    </div>
    </form>
</body>
</html>

--------------------- Slut default.aspx -------------------------

2 ting i det her.
For det første aner jeg ikke om det skal se sådan her ud.
For det andet har jeg brug for hjælp til at få lagt mine felter over i nogle variabler, som jeg kan bruge.
Avatar billede keysersoze Guru
17. juni 2009 - 10:14 #1
Som udgangspunkt ser koden fin ud - hvis man bruger drag/drop/click muligheder i VS skal man gøre forholdsvis meget galt for at det ikke virker.

Til dit andet spørgsmål må jeg nok svare at jeg tror du er lidt skævt på den. en DataSource vil man benytte til at binde data direkte op imod en anden kontrol, fx en Repeater, hvilket vil sige at du med dit nuværende setup skal indsætte en data-kontrol (fx repeater, gridview eller lignende) og sætte dens datasourceid til at være din sqldatasource hvorefter resten (næsten) sker af sig selv. Skal du have værdierne ud i variabler skal du ikke benytte en sqldatasource, men derimod over i din codefile og læse data ind via fx en datareader.
Avatar billede kennethv Nybegynder
17. juni 2009 - 11:18 #2
Aha, det var godt af vide. Jeg koder selv i delphi på hobbyplan og der er der osse kontrolkomponenter til behandling af DB. Er der en form for DB editbokse i VWD? Men kan tilknytte en af felterne til?
Avatar billede keysersoze Guru
17. juni 2009 - 11:30 #3
Der er flere af kontrollerne der understøtter edit - blandt andet netop gridview.
Avatar billede kennethv Nybegynder
17. juni 2009 - 11:38 #4
Jo, men tager den ikke hele indholdet og viser?

Jeg har behov for at kunne "pille" hver enkelt felt ud og sætte dem sammen med f.eks. en Label?

Noget i stilen med:

Hej [Employee]
Du er den heldige vinder bla bla bla. Din computer med navn [ComputerName] bla bla.

Osv osv.

Er det muligt?
Avatar billede keysersoze Guru
17. juni 2009 - 11:44 #5
Man kan i teorien sagtens benytte en Repeater til det eksempel - men som udgangspunkt vil man ikke benytte en standard DataSource til det.
Avatar billede kennethv Nybegynder
17. juni 2009 - 11:51 #6
Hvad vil man så bruge? Og hvordan bruges en repeater? Jeg har tilføjet een og har tilknyttet min datakontol, men hvad så?
Avatar billede kennethv Nybegynder
17. juni 2009 - 13:56 #7
Har du et bud?
Avatar billede kennethv Nybegynder
17. juni 2009 - 15:11 #8
Er der nogen der kan give mig et bud?
Avatar billede keysersoze Guru
17. juni 2009 - 17:45 #9
Det spændende - og dermed også svære - er at der er mange måder at gøre den samme ting på. Men et forslag kunne være; http://asptutorials.net/SQL-Server/accessing-sql-server-2005-from-asp-net-2/
Avatar billede kennethv Nybegynder
18. juni 2009 - 09:55 #10
Har set på det. Tror du at det findes i en VB udgave osse?
Avatar billede kennethv Nybegynder
18. juni 2009 - 10:11 #11
Iøvrigt, jeg kunne meget godt tænke mig at nogen til at gøre det for mig. Det er ikke fordi, at det er meget. Jeg har kun brug 1 side, hvor der skal udfyldes nogle felter og indholdet af det skal sættes ind i en db.

er det noget du ville kunne gøre for mig. Jeg vil selvfølgelig give flere point for det.

Grunden til at jeg ikke lige nu har den helt store lyst til at sætte mig ind i lige det her, er fordi at jeg har brugt flere dage på at få det sat op i PHP, hvilket jeg fik til at køre, men der var bare em lille detalje, som jeg ikke synes virkede helt så nemt i forhold ASP. Det er bare så jeg kan komme lidt videre med mit projekt, idet at der i projektet indgår delphikode osse.
Avatar billede keysersoze Guru
18. juni 2009 - 11:42 #12
der findes med meget stor sandsynlighed noget i VB.NET også - det må en tur på google kunne finde, der er meget meget minimale forskelle.
Avatar billede kennethv Nybegynder
19. juni 2009 - 09:54 #13
Jeg håber at du vil kunne lave det her for mig, for jeg fatter ikke en bønne af det her.
Avatar billede keysersoze Guru
21. juni 2009 - 16:14 #14
Jeg kan godt løse det - men kan ikke udføre arbejde gennem Eksperten. Men hvis du forsøger og kommer med din kode når du støder på et problem kan vi sikker løse det.
Avatar billede kennethv Nybegynder
21. juni 2009 - 16:28 #15
Jeg har opsnuset mig lidt til det her, men det eneste jeg får frem på skærmen er:

Dear


<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Request.querystring("id")</title>
</head>
    <body>
        <form id="form1" runat="server">
    <div>
    </div>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString="<%$ ConnectionStrings:StaffMembersConnectionString %>"
           
            SelectCommand="SELECT [Employee], [DateOfRetire], [ComputerName], [DateOfWarrantyEnded] FROM [StaffLeftCompany] WHERE ([SecurityCode] = @SecurityCode)">
            <SelectParameters>
                <asp:QueryStringParameter Name="SecurityCode" QueryStringField="id"
                    Type="String" />
            </SelectParameters>
        </asp:SqlDataSource>
        </form>
    Dear <asp:Label id="EmployeeLabel" runat="server" DataSourceID="SqlDataSource1" Text='<%# Eval("Employee") %>' />

    </body>
</html>
Avatar billede kennethv Nybegynder
22. juni 2009 - 09:08 #16
Har du set mit indlæg?
Avatar billede keysersoze Guru
22. juni 2009 - 09:50 #17
Du er sikker på at din querystring indeholder en forventet værdi?
Avatar billede kennethv Nybegynder
22. juni 2009 - 10:10 #18
Avatar billede kennethv Nybegynder
22. juni 2009 - 12:20 #19
Eller næ, det ved jeg ikke, men jeg håber da den har, hvordan kan jeg skrive det på skærm?
Avatar billede keysersoze Guru
22. juni 2009 - 21:38 #20
Hvis din URL ser sådan ud virker det til at være som det skal. Prøv under konfigurationen af din DataSource at teste din select med værdien fra querystringen og se om den giver et resultat.
Avatar billede kennethv Nybegynder
23. juni 2009 - 11:58 #21
Hmm, nu er det ikke for at lyde dumt, men jeg har prøvet at se hvor det er henne i konfiguration af datasource, men jeg kan ikke sådan liiige se hvor det er henne. :(
Avatar billede kennethv Nybegynder
23. juni 2009 - 13:13 #22
Aha, jeg fandt ud af hvad du mener med at test min select med den værdi og det giver mig et resultat jeg kan bruge. Pisse smart. :)
Avatar billede kennethv Nybegynder
24. juni 2009 - 08:54 #23
Hvad gør jeg så nu, når jeg kan se at resultatet er det korrekte. Jeg vil jo gerne bruge resultatet.
Avatar billede kennethv Nybegynder
24. juni 2009 - 11:20 #24
F1 F1. keysersoze er du der?
Avatar billede keysersoze Guru
24. juni 2009 - 13:36 #25
jeg bruger sjældent disse standard data sources og aldrig op imod simple kontroller som fx labels så jeg har ikke den store erfaring omkring hvad du kan forsøge dig med for at komme videre - jeg tror mit bedste bud, hvis det er muligt, vil være fx at sætte profileren op imod databasen og se om den forespørgsel der kommer er som forventet.
Avatar billede kennethv Nybegynder
24. juni 2009 - 13:44 #26
Nu er jeg slet ikke sikker på at det er den rigtige måde, det med en label, det var noget jeg troede man kunne. Men hvordan ville man ellers lave det, hvis man bare skal have noget tekst, som er dynamisk, på skærm?
Avatar billede kennethv Nybegynder
24. juni 2009 - 14:04 #27
Ahh, jeg kigger lige på det du har sendt tidligere til mig i #9. :) Hvor skal man skrive response.write henne ellers? Kan det osse gøres i body området?
Avatar billede keysersoze Guru
24. juni 2009 - 14:32 #28
som udgangspunkt ser der ikke ud til at være noget i vejen med det du gør - det er bare svært at rådgive og fejlsøge om metoder man ikke selv benytter.

Response.Write benytter man ikke i .NET - man arbejder objektorienteren og sætter værdier på kontroller, fx

youlabel.Text = rdr["kolonne"].ToString();
Avatar billede kennethv Nybegynder
24. juni 2009 - 15:01 #29
Men du koder i .NET, ikk? Og det du henviste til i #9 er noget du har gjort før?
Avatar billede kennethv Nybegynder
24. juni 2009 - 15:08 #30
Og det er osse bare lige det, at det link nu henviser til i #9 er da i .NET og bliver der brugt respone.write.
Avatar billede keysersoze Guru
24. juni 2009 - 17:37 #31
Linket er kun et eksempel og er sat op for simplicitetens skyld og det er også kun én måde at gøre det på (bortset fra Response.Write) - indholdet i eksemplet kunne måske have givet idéer til hvad der kunne ledes efter af eksempler på søgemaskiner.

Et bedre eksempel er nok dette så; http://www.schisani.com/ShowPost.aspx?postID=17
Avatar billede kennethv Nybegynder
24. juni 2009 - 19:48 #32
Ok. Det kigger jeg lige på. En anden ting til linket i #9, hvordan fletter du htmlkode sammen? For som det er lige nu i eksemplet skriver man det ud fra C#, men jeg synes ikke at man har mulighed for at styre hvor henne på siden man vil have teksten placeret. For jeg vil jo gerne bla have det placeret det i en
<fieldset>
<legend></legend>
</fieldset>
Avatar billede keysersoze Guru
24. juni 2009 - 22:41 #33
i .NET er al markup delt (næsten) fuldstændig fra kode - det er derfor der ikke bare er én fil men både en .aspx og en .aspx.cs fil, aspx er til markup og .cs er til kode. For at smide data fra kode og over i markup vil man placere en kontrol, fx en repeater, en textbox eller en label, i sin markup-kode og enten databinde til eller sætte egenskaber på kontrollen fra kode-filen.
Avatar billede kennethv Nybegynder
24. juni 2009 - 23:31 #34
Hvis man sætter en Label, hvad skal jeg så sætte på eventet? Hvis jeg klikker i pilen får jeg en "page_load" men hvad sker der så egentlig?
Avatar billede keysersoze Guru
25. juni 2009 - 08:18 #35
Med al respekt - mange af de ting du spørger om hører hjemme under absolut grundlæggende kendskab til .NET og der skal vi selvfølgelig alle sammen starte, men jeg kan i en tråd på Eksperten ikke begynde at oplære dig eller andre, jeg kan (forsøge) at løse problemstillinger. Skal du lære .NET findes der masser af materiale både på nettet og i bogform.

Kort fortalt, du skal ikke bruge en event på din label - det letteste vil være at placere koden i sidens Page_Load, som allerede ligger i din code-file. dvs forklaret i pseudo-kode;

page_load
//connect db
//execute sql
Label1.Text = rdr["kolonne"].ToString();
//close conn
Avatar billede kennethv Nybegynder
25. juni 2009 - 09:43 #36
Det er helt iorden. Forstår godt hvad du siger. Ogj eg forstår osse godt det eksempel du har lavet. Og det virker. Dog vil jeg, hvis det er iorden lige spørge ind til,

1. Hvad jeg skal gøre for at få hentet url ind til min SQL tekst med C#?
2. Hvis jeg gerne vil have skrevet noget FØR min Label, men stadig i <fieldset> <legend></legend> </fieldset>, hvad gør man så? Jeg troede først at man skulle bruge response.write, men den kan jeg ikke sådan lige se, hvordan Label1 kan blive flettet sammen.

    protected void Page_Load(object sender, EventArgs e)
    {
        string myid = "765b1e492c8381c719c0fe6e7ba6a77024fc8f58f3473f1dfbee48b03e7e4fb1";
        string connectString = @"Data Source=DKSODT0470\SQLEXPRESS;Initial Catalog=StaffMembers;Integrated Security=True";
        SqlConnection con = new SqlConnection(connectString);
        con.Open();
        string sql = "select Employee, DateOfRetire, ComputerName, DateOfWarrantyEnded from StaffLeftCompany WHERE SecurityCode = @SecurityCode";
        SqlCommand cmd = new SqlCommand(sql, con);
        cmd.Parameters.AddWithValue("SecurityCode", myid);
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            string order = reader[0].ToString();
            Response.Write("Order is " + order + "<br>");
            Label1.Text = reader[0].ToString();
        }
        reader.Close();
        con.Close();
    }
Avatar billede keysersoze Guru
25. juni 2009 - 10:01 #37
1.

cmd.Parameters.AddWithValue("SecurityCode", Request.Querystring["id"]);

2.

du blander almindelig html sammen med .NET kontroller helt som du selv har løst til - fx;

<h1>overskrift</h1>
tekst tekst tekst
<fieldset>
  <legend>Tekst:</legend>
  <asp:Label id="Label1" runat="server" />
</fieldset>
tekst tekst tekst
Avatar billede kennethv Nybegynder
25. juni 2009 - 10:50 #38
Fantatisk. Tusind mange tak. Du har hjulpet mig utroligt meget. Jeg har nok for nu til at komme videre. Du må ligge et svar.
Avatar billede keysersoze Guru
25. juni 2009 - 12:15 #39
svar :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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