Avatar billede thedragon Nybegynder
09. marts 2005 - 09:54 Der er 15 kommentarer og
1 løsning

Access database, ASP.net / c# og indkøbskurv

Hejsa igen, jeg sidder og forsøger at lave en indkøbskurv, hvor man kan lægge en række entries fra en access database ned i, fx har jeg min database med en række kolonner med varenr, produktnavn, beskrivelse, billede,pris og antal, dette vil jeg så gerne have smidt ned i en anden tabel i min database som hedder salg, her skal jeg have varenr, antal, pris og produktnavn gemt i når man trykker på en asp knap jeg har kaldet for "læg i".

De info jeg vil have gemt i databasen bliver vist i et datagrid fra min tabel i database.

Problemet er at jeg er lidt ny til det her med database i forbindelse med asp.net og c# men skal bruge det til en ehandelscase på min uddannelse, og det er selvstudie da læren ikke har tid..

håber i kan hjælpe mig
Avatar billede terry Ekspert
09. marts 2005 - 10:19 #1
Hi thedragon
I noticed you had the same question in Access. As Thomas correctly said, we Access freeks know very little about ASP etc.

I looked on the web using Google and found quite a few links, you could try that

enter this in the search string on Google and see what you get

asp.net  + "shopping basket"

mvh
Terry
Avatar billede askhoej Praktikant
09. marts 2005 - 10:22 #2
Jeg har skrevet en lille artikel her:
http://www.eksperten.dk/artikler/192

Jeg har også lavet et lille C# værktøj, der kan gøre det nemmere at arbejde med databaser. Det er næsten helt færdigt, så du kunne prøve at bruge det:
http://www.askhoej.dk (log ind med exp/exp)

/askhoej
Avatar billede thedragon Nybegynder
09. marts 2005 - 10:41 #3
hmm det gav ikke det store resultat
Avatar billede burningice Nybegynder
09. marts 2005 - 16:11 #4
du nævner en masse, men ikke noget konkret du har problemer med?

At kopiere data fra en tabel til en anden er ikke svært i sql, der kan man bruge en

INSERT INTO tabel (kulonner) SELECT kulonner FROM anden tabel WHERE noget = nogetandet

At få data fra databasen op i dit program kræver noget O/R-mapping. Du kan enten vælge at bruge de indbyggede DataTable/DataRow klasser i ADO.Net, eller lave dine egne strong typed som du mapper frem og tilbage med databasen.

Når du først har en IList af dine data i form af egne objecter eller en datatable er det meget nemt at binde det til et datagrid.
Avatar billede thedragon Nybegynder
10. marts 2005 - 07:42 #5
årsagen til at jeg ikke har benævnt noget specifikt, var at jeg håbede på at kunne få et komplet eksemple fra nogen, i hvor der er en der har vist hvordan man kan lave en indkøbskurv i asp.net c#, i forbindelse med MS access database, da vi bare er blevet stillet helt på bar bund, alt hvad vi fik som jeg har gransket er dette kode som kan hente fra en database og det kan jeg godt forstå:

<%@ Page Language="C#" Debug="true"  %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script Language="c#" runat="server">
  void Page_Load()
  {
    string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("database.mdb");
    string strSQL = "Select * from Vare;";
//forbindelse til database
    OleDbConnection objConnection = new OleDbConnection(strConnection);
    OleDbCommand objCommand = new OleDbCommand(strSQL,objConnection);
    objConnection.Open();
    dgEmps.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
    dgEmps.DataBind();
  }
</script>
<html>
  <body>
    <h2>Dette er en lille test.</h2>
    <form name="form1" runat="server">

    <table width="608" border="0">
      <tr>
        <td width="520">
        <asp:datagrid id="dgEmps"
        runat="server"
        CellPadding="2"
        Font-Name="arial"
        Font-Size="10pt"
        HeaderStyle-BackColor="#dcdcdc"
        HeaderStyle-ForeColor="blue"
        />
        </td>
        <td width="78">
        <div align="left">
        <asp:Button ID="btSubmit" runat="server" Text="Bestil" />
        </div>
        </td>
      </tr>
    </table>
    <asp:TextBox ID="tbVareNr" runat="server" />
    <asp:TextBox ID="tbProduktnavn" runat="server" />
    <asp:TextBox ID="tbPris" runat="server" />
    <asp:TextBox ID="tbAntal" runat="server" />
    <asp:Button ID="btSend" runat="server" />
    </form>
    <p>&nbsp;</p>
  </body>
</html>


Her bliver der brugt DataGrid, men jeg kan regne ud hvordan man kan bruge insert into xxx "tabel" values xxxxxx,xxxxx hvis jeg bare kan finde ud af hvordan man kan smide database infone ind fra en tabel i ms access over i asp:textbox felter....


Årsagen til de 200 points er jo at jeg er næsten på bar bund
Avatar billede burningice Nybegynder
10. marts 2005 - 11:13 #6
hvis du gerne vil have et datagrid på siden, kunne du starte med at indsætte et:

<%@ Page Language="C#" Debug="true"  %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script Language="c#" runat="server">
  void Page_Load()
  {
    string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("database.mdb");
    string strSQL = "Select * from Vare;";
//forbindelse til database
    OleDbConnection objConnection = new OleDbConnection(strConnection);
    OleDbCommand objCommand = new OleDbCommand(strSQL,objConnection);
    objConnection.Open();
    dgEmps.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
    dgEmps.DataBind();
  }
</script>
<html>
  <body>
    <h2>Dette er en lille test.</h2>
    <form name="form1" runat="server">

    <asp:DataGrid id="dgEmps" runat="server" />

    <br /> <br />

    <asp:Button ID="btSubmit" runat="server" Text="Bestil" />
  </body>
</html>
Avatar billede thedragon Nybegynder
10. marts 2005 - 11:39 #7
øhm.. det er jo det jeg allerede har...

men er kommet videre siden.

nu har jeg et nyt problem. nu kan jeg ikke få den til at gemme i db'en..

<%@ Page Language="C#" Debug="true"  %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script Language="c#" runat="server">
  void Page_Load()
  {
  //  string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("database.mdb");
    string strSQL = "SELECT * FROM Vare ORDER BY Produktnavn;";
//forbindelse til database
        OleDbConnection OurConnection;
        OleDbCommand OurCommand = null;
        OleDbDataAdapter OurDataAdapter;
   
        DataSet OurDataSet;
        OurDataSet = new DataSet();

        OurConnection = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("database.mdb") );
        OurCommand = new OleDbCommand(strSQL, OurConnection);
        OurDataAdapter = new OleDbDataAdapter(OurCommand);
   
        OurDataAdapter.Fill(OurDataSet, "Vare");
        MyRepeater.DataSource = OurDataSet.Tables["Vare"].DefaultView;
        MyRepeater.DataBind();
  }
  void addtobasket(Object Sender, EventArgs e)
  {
    string strSQL = "Insert INTO Salg (VareNr) VALUES ( '2' )";
    OleDbConnection myConnection = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("database.mdb") );
    myConnection.Open();
    OleDbCommand myCommand = new OleDbCommand(strSQL, myConnection );
    myCommand.ExecuteNonQuery();
    myConnection.Close();
  }
</script>
<html>
  <body>
    <h2>Dette er en lille test.</h2>
<ASP:Repeater id="MyRepeater" runat="server">
      <HeaderTemplate></HeaderTemplate>
      <ItemTemplate>
        <form name="productlisting<%# DataBinder.Eval(Container.DataItem, "VareNr") %>" method="post">
        <input type="hidden" name="Varenummer" value="<%# DataBinder.Eval(Container.DataItem, "VareNr") %>" />
        <table width="98%" cellpadding="1" cellspacing="0" border="1" align="center" class="product">
            <tr>
                <td rowspan="3" style="width : 120px;">
                    <img src="<%# DataBinder.Eval(Container.DataItem, "Billede") %>" width="120" height="94" border="0" />
                </td>
                <td colspan="2">
                    <div class="product-title"><%# DataBinder.Eval(Container.DataItem, "Produktnavn") %> <span class="small">(<%# DataBinder.Eval(Container.DataItem, "VareNr") %>)</span></div>
                </td>
            </tr><tr>
                <td colspan="2" class="product-description">
                    <div class="product-description"><%# DataBinder.Eval(Container.DataItem, "Beskrivelse") %></div>
                </td>
            </tr><tr>
                <td valign="bottom">
                    <div class="product-price">DKR <%# DataBinder.Eval(Container.DataItem, "Pris i kr") %> </div>
                </td>
              <td valign="bottom">
                    <a href="java script:document.productlisting<%# DataBinder.Eval(Container.DataItem, "VareNr") %>.addtobasket()"  title="F&oslash;j til varekurv"><img src="images/basket.png" alt="F&oslash;j til varekurv" border="0" width="16" height="16" align="right" /></a>
                    <div class="product-add">
                </td>
            </tr>
          </table>
        </form>
      </ItemTemplate>
      <FooterTemplate></FooterTemplate>
  </ASP:Repeater>
    <p>&nbsp;</p>
  </body>
</html>


Den kode jeg har nu, hvad dæen skal jeg gøre i min kode for at kunne bruge en metode til at kunne gemme i en db?
Avatar billede burningice Nybegynder
10. marts 2005 - 12:26 #8
yearh, sorry... ) havde lige overset dit datagrid.

Gemme i database:

string strSQL = "INSERT INTO tblTabel (kulonne1, kulonne2) VALUES ('data1', 'data2')"

OurConnection = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("database.mdb") );
        OurCommand = new OleDbCommand(strSQL, OurConnection);
        OurCommand.ExecuteNonQuery();
Avatar billede thedragon Nybegynder
10. marts 2005 - 12:30 #9
Lige som den her funktion som jeg har i koden ovenover ???

  void addtobasket(Object Sender, EventArgs e)
  {
    string strSQL = "Insert INTO Salg (VareNr) VALUES ( '2' )";
    OleDbConnection myConnection = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("database.mdb") );
    myConnection.Open();
    OleDbCommand myCommand = new OleDbCommand(strSQL, myConnection );
    myCommand.ExecuteNonQuery();
    myConnection.Close();
  }

Mit problem er bare når jeg prøver at klikke på linket får jeg en udført med fejl på siden og et objekt var ventet.....

Hvis jeg kan få det løst kan jeg måske komme videre.... :'(
Avatar billede thedragon Nybegynder
10. marts 2005 - 12:36 #10
det generelle problem er vel mere at jeg forsøger at få listet en række "vare" fra en database, som har nogle values, og så skulle man kunne klikke på et/en link/knap og så skal den kunne tage lige den vare og gemme varenr, og antal fx. antal er så fra en asp:textbox, og varenr hentes fra min container... men jeg kan satme (undskyl sproget) ikke få den til at tage et tal fra den container jeg har med varenummer...
Avatar billede burningice Nybegynder
10. marts 2005 - 13:03 #11
du har denne linje

<a href="java script:document.productlisting<%# DataBinder.Eval(Container.DataItem, "VareNr") %>.addtobasket()"  title="F&oslash;j til varekurv">

Hvad forventer du at der skal ske her? Du prøver at kalde en javascript-funktion som ikke findes.
Avatar billede thedragon Nybegynder
10. marts 2005 - 13:11 #12
øhm ja... det er noget en ven har givet mig, men ved ikk om det ville virke, men jeg havde håbet på at der kunne blive gemt det der står i productlisting<containers varenr> i databasen....
Avatar billede burningice Nybegynder
10. marts 2005 - 13:29 #13
du du kan gøre er at tilføje en knap istedet og bruge EventBubbling til at fortælle din repeater at der er trykket på en knap, og hvilken knap det er. På den måde kan du have en metode i repeateren der tilføjer din vare til databasen.

Det du skal kigge på er ItemCommand på repeateren (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolsrepeaterclassitemcommandtopic.asp)

og måske også lidt teori om Event Bubbling (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconbubblingcommandevent.asp)
Avatar billede thedragon Nybegynder
16. marts 2005 - 13:15 #14
Opgav... læren fortalte os at vi ikke skulle gøre det så vildt, selvom han da gerne havde set det i funktion...
Avatar billede burningice Nybegynder
16. marts 2005 - 14:28 #15
:) okay... der nu ikke så svært når man lige får det lært, men hvis man ikke er vant til Object Orienteret programmering og hele postback-terminologien kan det være lidt forvirrende.
Avatar billede thedragon Nybegynder
16. marts 2005 - 21:03 #16
Now there id agree with ya m8!!!!

Jeg fatter desværre minus... for jeg ville gerne have kunnet lave det... men jeg kan fandme ikk gennemskue koden :(
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