Avatar billede tanzaweb Nybegynder
24. maj 2004 - 14:42 Der er 8 kommentarer og
1 løsning

validerings problem

HEj jeg har et problem med min validering, hvor at hvis jeg køre den igennem med alle felte valider, men den sætter den stadig ind i databasen, samtidig så laver den en fejl hvis et af felterne er tomme, her tror jeg problemet er at den går til databasen før valideringen, så den laver ne database fejl.

Så hvis jeg kunne få den til at tjekke valideringen før den går til databasen som dn gør så kunne det virke.

Her er hele koden selv om den er lang, NOGLE FORSLAG til hvorfor det går galt.

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.IO" %>
<link href="../image/dhl.css" rel="stylesheet" type="text/css">
<div class="mainFont">
<script runat="server">

    void Page_Load()
    {
        if(IsPostBack){
            Validate();
            }
        if(!IsPostBack)
        {
        LoadData();
        }
    }
    void LoadData()
    {
    OleDbConnection objConnection;
    OleDbCommand objCommand;
    OleDbDataAdapter OurDataAdapter;
    objConnection = new OleDbConnection(@"Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + Server.MapPath("/DHL/database/dhl.mdb"));
    objConnection.Open();
    objCommand = new OleDbCommand ("SELECT * FROM Afdeling ORDER BY aNavn DESC" ,objConnection);
    drpData.DataTextField = "aNavn";
    drpData.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
    drpData.DataBind();
    drpData.Items.Insert(0, "-- Vælg afdeling --");
    objConnection.Close();
    }
   
    void Insert(object Sender, EventArgs E)
    {
    string strmLonNr, strmNavn, strmAdresse, strmPost, strmBy, strmTlf, strmMobil, strmEmail, strmStilling, strmLokalNr, strmChef, strmAnsat, strmAfdeling, strmFodelsesdag;
        string strSQL;
        DropDownList myDrpBox;
        myDrpBox = (DropDownList) tbmAfdeling.FindControl("drpData");
        strmLonNr = tbmLonNr.Text;
        strmNavn = tbmNavn.Text;
        strmAdresse = tbmAdresse.Text;
        strmPost = tbmPost.Text;
        strmBy = tbmBy.Text;
        strmTlf = tbmTlf.Text;
        strmMobil = tbmMobil.Text;
        strmEmail  = tbmEmail.Text;
        strmStilling = tbmStilling.Text;
        strmLokalNr = tbmLokalNr.Text;
        strmChef = tbmChef.Text;
        strmAnsat = tbmAnsat.Text;
        strmAfdeling = myDrpBox.SelectedItem.Value.ToString();
        strmFodelsesdag = tbmFodelsesdag.Text;
        strSQL = "INSERT INTO mArbejder (mLonNr, mNavn, mAdresse, mPost, mBy, mTlf, mMobil, mEmail, mStilling, mLokalNr, mChef, mAnsat, mAfdeling, mFodelsesdag) Values (";
            strSQL += strmLonNr + ", '";
            strSQL += strmNavn + "', '";
            strSQL += strmAdresse + "', ";
            strSQL += strmPost + ", '";
            strSQL += strmBy + "', ";
            strSQL += strmTlf + ", ";
            strSQL += strmMobil + ", '";
            strSQL += strmEmail + "', '";
            strSQL += strmStilling + "', ";
            strSQL += strmLokalNr + ", '";
            strSQL += strmChef + "', '";
            strSQL += strmAnsat + "', ";
            strSQL += strmAfdeling + ", '";
            strSQL += strmFodelsesdag + "')";
            //Response.Write(strSQL);
            OleDbConnection myConnection = new OleDbConnection(@"Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + Server.MapPath("/DHL/database/dhl.mdb"));
            myConnection.Open();
            OleDbCommand myCommand = new OleDbCommand(strSQL, myConnection );
            myCommand.ExecuteNonQuery();
            myConnection.Close();
            lblBesked.Text ="Du har oprettet medarbejder: " + tbmNavn.Text;
            btInsert.Enabled=false;
    }
    void Blank(Object Sender, EventArgs e)
    {
        tbmLonNr.Text="";
        tbmNavn.Text="";
        tbmAdresse.Text="";
        tbmPost.Text="";
        tbmBy.Text="";
        tbmTlf.Text="";
        tbmMobil.Text="";
        tbmEmail.Text="";
        tbmStilling.Text="";
        tbmLokalNr.Text="";
        tbmChef.Text="";
        tbmAnsat.Text="";
        tbmFodelsesdag.Text="";
        btInsert.Enabled=true;
    }
    void Udskriv(Object Sender, EventArgs e)
    {
        Response.Redirect("mArbejder_admin.aspx");
    }

</script>
<form runat="server">
<font class="headerfont">Indtast en ny medarbejder.</font>
Der skal indtastes noget i alle felter.<br />
    <table width="100%">
        <tr>
            <td width="110">Løn nr:</td>
            <td><asp:textbox id="tbmLonNr" runat="server" Width="300px"/>
            <asp:RequiredFieldValidator ControlToValidate="tbmLonNr" ErrorMessage="Indtast Løn nummer kun af tal" runat="server" Display="Dynamic" /></td>
        </tr>
        <tr>
            <td width="110">Navn:</td>
            <td><asp:textbox id="tbmNavn" runat="server" Width="300px"/>
            <asp:RequiredFieldValidator ControlToValidate="tbmNavn" ErrorMessage="Indtast det fulde navn" runat="server" Display="Dynamic" /></td>
        </tr>
        <tr>
            <td width="110">Adresse:</td>
            <td><asp:textbox id="tbmAdresse" runat="server" Width="300px"/>
            <asp:RequiredFieldValidator ControlToValidate="tbmAdresse" ErrorMessage="Indtast den fulde adresse" runat="server" Display="Dynamic" /></td>
        </tr>
        <tr>
            <td width="110">Post nr:</td>
            <td><asp:textbox id="tbmPost" runat="server" Width="300px"/>
            <asp:RequiredFieldValidator ControlToValidate="tbmPost" ErrorMessage="Indtast postnummer" runat="server" Display="Dynamic" />
            <asp:RegularExpressionValidator ControlToValidate="tbmPost" ValidationExpression="[0-9]{4}" Display="Dynamic" ErrorMessage="Indtast postnummer som xxxx" runat="server" /></td>
        </tr>
        <tr>
            <td width="110">By:</td>
            <td><asp:textbox id="tbmBy" runat="server" Width="300px"/>
            <asp:RequiredFieldValidator ControlToValidate="tbmBy" ErrorMessage="Indtast Bynavn" runat="server" Display="Dynamic" /></td>
        </tr>
        <tr>
            <td width="110">Tlf:</td>
            <td><asp:textbox id="tbmTlf" runat="server" Width="300px"/>
            <asp:RequiredFieldValidator ControlToValidate="tbmTlf" ErrorMessage="Indtast Tlf-nummer som xxxxxxxx" runat="server" Display="Dynamic" />
            <asp:RegularExpressionValidator ControlToValidate="tbmTlf" ValidationExpression="[0-9]{8}" ErrorMessage="Indtast tlf nummer som xxxxxxxx" Display="Dynamic" runat="server" /></td>
        </tr>
        <tr>
            <td width="110">Mobil:</td>
            <td><asp:textbox id="tbmMobil" runat="server" Width="300px"/>
            <asp:RequiredFieldValidator ControlToValidate="tbmMobil" ErrorMessage="Indtast Mobil-nummer som xxxxxxxx" Display="Dynamic" runat="server" />
            <asp:RegularExpressionValidator ControlToValidate="tbmMobil" ValidationExpression="[0-9]{8}" Display="Dynamic" ErrorMessage="Indtast Mobil nummer som xxxxxxxx" runat="server" /></td>
        </tr>
        <tr>
            <td width="110">E-mail:</td>
            <td><asp:textbox id="tbmEmail" runat="server" Width="300px"/>
            <asp:RequiredFieldValidator ControlToValidate="tbmEmail" ErrorMessage="Indtast gyldig email" runat="server" Display="Dynamic" />
            <asp:RegularExpressionValidator runat="server" ControlToValidate="tbmEmail" ValidationExpression=".*@.*\..*" ErrorMessage="Du skal indtaste en gyldig email adresse" Display="Dynamic" /></td>
        </tr>
        <tr>
            <td width="110">Stilling:</td>
            <td><asp:textbox id="tbmStilling" runat="server" Width="300px"/>
            <asp:RequiredFieldValidator runat="server" Display="Dynamic" ControlToValidate="tbmStilling" ErrorMessage="Indtast stillings betegnelse" /></td>
        </tr>
        <tr>
            <td valign="top">Lokal nr:</td>
            <td valign="top"><asp:textbox ID="tbmLokalNr" Width="300px" runat="server"/>
            <asp:RequiredFieldValidator runat="server" ControlToValidate="tbmLokalNr" Display="Dynamic" ErrorMessage="Indtast lokal nummer som tal" /></td>
        </tr>
        <tr>
            <td valign="top">Chef:</td>
            <td valign="top"><asp:textbox ID="tbmChef" Width="300px" runat="server"/>
            <asp:RequiredFieldValidator runat="server" Display="Dynamic" ControlToValidate="tbmChef" ErrorMessage="Skriv chefens navn" /></td>
        </tr>
        <tr>
            <td valign="top">Ansættelse dato:</td>
            <td valign="top"><asp:TextBox ID="tbmAnsat" Width="300" runat="server"/> <font class="mainFont2">Dato indtastes som xx-xx-xxxx</font>
            <asp:RequiredFieldValidator runat="server" Display="Dynamic" ControlToValidate="tbmAnsat" ErrorMessage="Indtast dato som xx-xx-xxxx" />
            <asp:RangeValidator ControlToValidate="tbmAnsat" runat="server" Display="Dynamic" Type="Date" MinimumValue="1-1-1930" MaximumValue="31-12-2154" ErrorMessage="Indtast gyldig dato som xx-xx-xxxx" /></td>
        </tr>
        <tr>
            <td valign="top">Afdeling:</td>
            <td valign="top"><asp:panel ID="tbmAfdeling" runat="server">
            <asp:dropdownlist ID="drpData" DataTextField="aNavn" DataValueField="aId" Width="300px" runat="server"/>
            </asp:panel></td>
        </tr>
        <tr>
            <td width="110">Fødelsesdag:</td>
            <td><asp:textbox id="tbmFodelsesdag" runat="server" Width="300px"/><font class="mainFont2">Dato indtastes som xx-xx-xxxx</font>
            <asp:RequiredFieldValidator runat="server" Display="Dynamic" ControlToValidate="tbmFodelsesdag" ErrorMessage="Indtast dato som xx-xx-xxxx" />
            <asp:RangeValidator ControlToValidate="tbmFodelsesdag" runat="server" Display="Dynamic" Type="Date" MinimumValue="1-1-1930" MaximumValue="31-12-2154" ErrorMessage="Indtast gyldig dato som xx-xx-xxxx" /></td>
        </tr>
        <tr>
            <td colspan="2">
            <asp:Button ID="btInsert" runat="server" Text="Indsæt medarbejder" OnClick="Insert"/>
            <asp:button ID="btBlank" OnClick="Blank" runat="server" Text="Slet felter"/>
            <asp:button ID="btUdskriv" OnClick="Udskriv" runat="server" Text="Gå til medarbejder admin"/>
            <br />
            <br />
            <br />
            <asp:label ID="lblBesked" runat="server" Font-Bold="true"/>
            <br><span id="OurSpan" runat="server" />

            </td>
        </tr>
    </table>
</form>   
</div>
Avatar billede script Nybegynder
24. maj 2004 - 15:50 #1
Validere du i koden? ved du at man kan validere på client siden istedet for på server siden?
Avatar billede tanzaweb Nybegynder
24. maj 2004 - 19:23 #2
i asp.net skulle det jo netop være det smarte at bruge den indbyggede validering
så nej jeg havde ikke tænkt mig at bruge den client side med mindre asp.net gør det og jeg ikke ved det endnu.
ellers er det jo ikke noget værd? er det
Avatar billede repsak Nybegynder
26. maj 2004 - 21:10 #3
Alt afhængig af hvad der skal valideres så er client-validering helt optimalt.
ASP.NET generer selv clientside validering hvis det tillades (det er oven i købet default)
Der er f.eks. ingen grunt til at serveren skal 'vækkes' bare fordi at klienten ikke har indtastet noget i et felt - da det kan klares af Javascript.
Avatar billede tanzaweb Nybegynder
26. maj 2004 - 21:46 #4
ok men er det så ikke hvad der sker i min kode for det var en fejl når jeg sagde at den skulle gøre det sådan.
de n skal jo selvfølgelig valider clientside, men det gør den måske ikke? den asp.net kode.
Hvis ikke hvordan gøre jeg så det?
Avatar billede kring Nybegynder
11. juni 2004 - 12:37 #5
Hvis du vil have sikkerhed for at din validering bliver gennemført, er det vigtigt at du har BÅDE clientside og serverside validering. Som du selv skriver så er det en rigtig god ide at bruge de indbyggede validerings control som .NET Frameworket tilbyder.
Avatar billede tanzaweb Nybegynder
21. juni 2004 - 14:20 #6
lukker dette da der ikke er kommet noget svar jeg kan bruge?

Jeg har nu spurgt flere gange men der er ingen der viser hvordan; hvorfor.

det gør man måske ikke under asp.net?
Avatar billede monogami Nybegynder
21. juni 2004 - 14:29 #7
Hvordan er det dog du bygger din strSQL op?? Du skal bruge en stringbuilder hvis du vil gøre det på den måde. Strenge i c# er ikke mutable!
Avatar billede tanzaweb Nybegynder
21. juni 2004 - 14:47 #8
det er sådan vi har fået det vist her, på skolen, og i asp.net bogen vi har. der er åbenbart flere måder

mutable?
Avatar billede nielsbrinch Nybegynder
21. juni 2004 - 16:50 #9
Det monogami snakker om er, at selvom det ser ud som om du lægger strengene sammen, så er det der i virkeligheden sker, at strengene bliver nedlagt og oprettet påny hver eneste gang. Det er temmelig krævende for cpu'en hvis du gør det rigtig meget. Men det kan hverken måles eller mærkes i den mængde som du gør det ... så bare tag det roligt.
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