Hallo,
ich möchte zu Übungszwecken ein einfaches Beschaffunsprogramm erstellen. Vorgegeben wird dazu der Visual Web Developer von Microsoft.
Der Aufbau der Datenbank ist vorgegeben, diese habe ich mit access erstellt und ist folgendermaßen aufgebaut:
Lieferant (LID, Name, Lieferzeit, Status)
Material(MID, Beschreibung, Form, Größe)
Bedarfsmeldung(BID, MatID, MaxLieferzeit, Anzahl)
Angebote (AngebotID, MID, Anzahl, Preis, Lieferant)
Bestellung (BestellID, Gesamtpreis, Lieferant, Währung)
Bestellposition (BestellposID, BID, Bestellung, Angebot, Währung)
Es soll über ein Interface möglich sein Daten einzugeben zu löschen und zu ändern. Das habe ich auch soweit ohne Probleme geschafft indem ich für jede Tabelle eine aspx-Seite im Developer erstellt habe, eine Datenbankverbindung hinzufüge und ein DetailView Element herübergezogen haben, welches die Datensätze einzeigt und ein ändern/löschen erlaubt. Bisher waren also noch keine Programmierkenntisse nötig, alles ging per Drag and Drop.
Jetzt soll ich aber einen Algorhytmus mit C# hinzufügen, der für eine Bestellung den Lieferanten mit den besten Konditionen ermittelt (d.h. den niedrigsten Gesamtpreis). Außerdem soll die MaxLieferzeit berücksichtigt werden, d.h. wenn diese überschritten wird vom Lieferanten sollte zum nächst teureren gesprungen werden. Ich stelle mir das so vor, dass ich einen Button habe „besten Lieferant wählen und mir daraufhin das Programm die Felder Gesamtpreis / Lieferant (von der Tabelle Lieferant) autom. Ausfüllt. Bisher kann ich das mit meinem Detail-View-Element nur selber eingeben/verändern.
Das Problem ist, dass ich nur Anfängerkenntnisse im c# habe.
Ich denke mir, dass der Algorhytmus für alle Bestellpos. mit gleichlautender BestellID erst durch die BID auf die MatID und die Anzahl in der Tabelle Bedarfsmeldung zugreifen muss, dann muss er sich den Preis aus der Angebote-Tabelle holen und alles entsprechend der jeweiligen Lieferanten addieren. Gleichzeitig muss der evtl. Mengenunterschied zwischen Angebote und Bedarfsmeldung berücksichtigt werden. Außerdem muss die Lieferzeit, die unter Lieferant gespeichert ist kleiner sein als die MaxLieferzeit in der Bedarfsmeldungstabelle.
Nur wie drücke ich das jetzt in c# aus. Kann mir jemand einen Tipp geben wie ich den Algorhytmus aufbauen muss und wo ich den überhaupt reinschreibe bzw. mit dem restlichen Programm verknüpfe.
Ich habe drei Dateien im Web-Developer vorliegen deren Code ich jetzt mal hier angebe:
Ich denke, dass ich ihn Order.aspx.cs den Programmcode für den Algorhytmus schreiben muss bin mir aber nicht ganz sicher. Könnte mir vielleicht jemand grob skizzieren wie dieser aussehen könnte bwz. was ich machen muß? Ich stehe echt auf dem Schlauch
Schonmal Danke
Order.aspx
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: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123:
| <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Orders.aspx.cs" Inherits="WebApplication1.Orders" %>
<!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></title> <style type="text/css"> #form1 { height: 751px; } </style> </head> <body> <form id="form1" runat="server"> <div> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/db1.mdb" DeleteCommand="DELETE FROM [Order] WHERE [OrID] = ?" InsertCommand="INSERT INTO [Order] ([OrID], [Total Price], [Supplier], [Currency]) VALUES (?, ?, ?, ?)" SelectCommand="SELECT * FROM [Order]" UpdateCommand="UPDATE [Order] SET [Total Price] = ?, [Supplier] = ?, [Currency] = ? WHERE [OrID] = ?"> <DeleteParameters> <asp:Parameter Name="OrID" Type="Int32" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="Total_Price" Type="Decimal" /> <asp:Parameter Name="Supplier" Type="Int32" /> <asp:Parameter Name="Currency" Type="String" /> <asp:Parameter Name="OrID" Type="Int32" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="OrID" Type="Int32" /> <asp:Parameter Name="Total_Price" Type="Decimal" /> <asp:Parameter Name="Supplier" Type="Int32" /> <asp:Parameter Name="Currency" Type="String" /> </InsertParameters> </asp:AccessDataSource> <asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True" AutoGenerateRows="False" CellPadding="4" DataKeyNames="OrID" DataSourceID="AccessDataSource1" ForeColor="#333333" GridLines="None" Height="236px" Width="174px"> <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" /> <RowStyle BackColor="#EFF3FB" /> <FieldHeaderStyle BackColor="#DEE8F5" Font-Bold="True" /> <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> <Fields> <asp:BoundField DataField="OrID" HeaderText="OrID" InsertVisible="False" ReadOnly="True" SortExpression="OrID" /> <asp:BoundField DataField="Total Price" HeaderText="Total Price" SortExpression="Total Price" /> <asp:BoundField DataField="Supplier" HeaderText="Supplier" SortExpression="Supplier" /> <asp:BoundField DataField="Currency" HeaderText="Currency" SortExpression="Currency" /> <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True" /> </Fields> <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <EditRowStyle BackColor="#2461BF" /> <AlternatingRowStyle BackColor="White" /> </asp:DetailsView> </div> <asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/App_Data/db1.mdb" DeleteCommand="DELETE FROM [OrderPos] WHERE [OrPosID] = ?" InsertCommand="INSERT INTO [OrderPos] ([OrPosID], [PRID], [Order], [Offer], [Currency]) VALUES (?, ?, ?, ?, ?)" onselecting="AccessDataSource2_Selecting" SelectCommand="SELECT * FROM [OrderPos]" UpdateCommand="UPDATE [OrderPos] SET [PRID] = ?, [Order] = ?, [Offer] = ?, [Currency] = ? WHERE [OrPosID] = ?"> <DeleteParameters> <asp:Parameter Name="OrPosID" Type="Int32" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="PRID" Type="Int32" /> <asp:Parameter Name="Order" Type="Int32" /> <asp:Parameter Name="Offer" Type="Int32" /> <asp:Parameter Name="Currency" Type="String" /> <asp:Parameter Name="OrPosID" Type="Int32" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="OrPosID" Type="Int32" /> <asp:Parameter Name="PRID" Type="Int32" /> <asp:Parameter Name="Order" Type="Int32" /> <asp:Parameter Name="Offer" Type="Int32" /> <asp:Parameter Name="Currency" Type="String" /> </InsertParameters> </asp:AccessDataSource> <asp:DetailsView ID="DetailsView2" runat="server" AllowPaging="True" AutoGenerateRows="False" CellPadding="4" DataKeyNames="OrPosID" DataSourceID="AccessDataSource2" ForeColor="#333333" GridLines="None" Height="257px" onpageindexchanging="DetailsView2_PageIndexChanging" Width="125px"> <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" /> <RowStyle BackColor="#EFF3FB" /> <FieldHeaderStyle BackColor="#DEE8F5" Font-Bold="True" /> <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> <Fields> <asp:BoundField DataField="OrPosID" HeaderText="OrPosID" InsertVisible="False" ReadOnly="True" SortExpression="OrPosID" /> <asp:BoundField DataField="PRID" HeaderText="PRID" SortExpression="PRID" /> <asp:BoundField DataField="Order" HeaderText="Order" SortExpression="Order" /> <asp:BoundField DataField="Offer" HeaderText="Offer" SortExpression="Offer" /> <asp:BoundField DataField="Currency" HeaderText="Currency" SortExpression="Currency" /> <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True" /> </Fields> <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <EditRowStyle BackColor="#2461BF" /> <AlternatingRowStyle BackColor="White" /> </asp:DetailsView> </form> </body> </html> |
Order.aspx.cs
C#-Quelltext
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:
| using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;
namespace WebApplication1 { public partial class Orders : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {
}
protected void DetailsView2_PageIndexChanging(object sender, DetailsViewPageEventArgs e) {
}
protected void AccessDataSource2_Selecting(object sender, SqlDataSourceSelectingEventArgs e) {
} } } |
Order.aspx.designer.cs
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:
| namespace WebApplication1 { public partial class Orders { protected global::System.Web.UI.HtmlControls.HtmlForm form1; protected global::System.Web.UI.WebControls.AccessDataSource AccessDataSource1; protected global::System.Web.UI.WebControls.DetailsView DetailsView1; protected global::System.Web.UI.WebControls.AccessDataSource AccessDataSource2; protected global::System.Web.UI.WebControls.DetailsView DetailsView2; } } |
Moderiert von Kha: C#- und XML-Tags hinzugefügt