Click here to Skip to main content
15,898,134 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
I am inserting user data into the sql table, but on submitting it gives the following error.
System.FormatException: String was not recognized as a valid DateTime. at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) at System.Convert.ToDateTime(String value) at Registration_Requestaccount.BtnSubmit_Click(Object sender, EventArgs e) in e:\ECCII\Registration\Requestaccount.aspx.cs:line 166

Here is my code:

C#
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1"  runat="server"></ajaxToolkit:ToolkitScriptManager>
                   <asp:TextBox ID="tbxpartyjoinson" runat="server" CssClass="TextBoxClass" Width="50%" TextMode="SingleLine" ToolTip="Enter Your Email Address" AutoCompleteType="Disabled" placeholder="E.g. 01-03-2010"></asp:TextBox>
                   <ajaxToolkit:CalendarExtender ID="CalendarExtender1"  runat="server" TargetControlID="tbxpartyjoinson" PopupPosition="Right" Format="dd-MM-yyyy"></ajaxToolkit:CalendarExtender>
                   <asp:RequiredFieldValidator ID="rvjoiningdate" runat="server" Display="None" ControlToValidate="tbxpartyjoinson" ErrorMessage="Please Enter Your Date of Joining the Party" Text="*" Font-Names="Calibri" Font-Size="medium" ForeColor="Red"></asp:RequiredFieldValidator>
                   <asp:RegularExpressionValidator ID="revjoiningdate" runat="server" Display="None" ControlToValidate="tbxpartyjoinson" ValidationExpression="^(0[1-9]|1[0-9]|2[0-9]|3[1-2])[-](0[1-9]|1[0-2])[-](1[9][0-9][0-9]|2[0][0-9][0-9])$" ErrorMessage="Date should be in the format 31/12/2014" Text="*" Font-Names="Calibri" Font-Size="Small" ForeColor="Red"></asp:RegularExpressionValidator>


C#
db1.sqlcmd = new SqlCommand("uspAccountRequest");
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    db1.sqlcmd.CommandType = CommandType.StoredProcedure;
                    db1.sqlcmd.Parameters.AddWithValue("@FirstName", Firstname);
                    db1.sqlcmd.Parameters.AddWithValue("@LastName", Lastname);
                    db1.sqlcmd.Parameters.AddWithValue("@CNIC", cnic);
                    db1.sqlcmd.Parameters.AddWithValue("@Email", email);
                    db1.sqlcmd.Parameters.AddWithValue("@Party", DDParty.SelectedValue);
                    db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", Convert.ToDateTime(tbxpartyjoinson.Text));
                    db1.sqlcmd.Parameters.AddWithValue("@Constituency", DDConstituency.SelectedValue);
                    db1.sqlcmd.Parameters.Add("@success", SqlDbType.Bit);
                    db1.sqlcmd.Parameters["@success"].Direction = ParameterDirection.Output;
                    db1.sqlcmd.Connection = db1.sqlcon;
                    db1.sqlcon.Open();
                    reqid = Convert.ToInt32(db1.sqlcmd.ExecuteScalar());
                    success = Convert.ToBoolean(db1.sqlcmd.Parameters["@success"].Value);



SQL
CREATE PROC uspAccountRequest
@success bit out,
@FirstName varchar(20), @LastName varchar(20), @CNIC bigint, @Email varchar(50),@Constituency int,@Party int,@PartyJoiningDate datetime
AS
BEGIN
SET NOCOUNT ON; 
BEGIN TRY
      IF EXISTS(SELECT Email FROM TblAccountRequest WHERE Email = @Email)
      BEGIN
	  SELECT -1 -- Email exists.
	  END
	  ELSE IF EXISTS (SELECT CNIC FROM TblAccountRequest WHERE CNIC = @CNIC)
	  BEGIN
	  SELECT -2 -- CNIC exists
	  END
	  ELSE IF EXISTS(SELECT Email FROM TblUser WHERE Email = @Email)
      BEGIN
	  SELECT -3 -- Email exists.
	  END
	  ELSE IF EXISTS(SELECT NIC FROM TblUser WHERE NIC = @CNIC)
      BEGIN
	  SELECT -4 -- CNIC exists exists.
	  END
	  ElSE	  
BEGIN
Insert into TblAccountRequest (FirstName, LastName, CNIC, Email, Constituency, Party, partyjoninson, RequestDate, IsAccepted)
Values (@FirstName,@LastName,@CNIC,@Email,(SELECT Code FROM TblConstituency WHERE ConstID = @Constituency),(SELECT 	PartyName FROM 	TblParty WHERE 	 PartyId = 	@Party),@PartyJoiningDate,GETDATE(),0) SELECT @@IDENTITY
SELECT SCOPE_IDENTITY() -- Request ID
SET @success = 1
END
END TRY
BEGIN CATCH
SET @success = 0
END CATCH
END
Posted

C#
DateTime parsed;
if (DateTime.TryParseExact(tbxpartyjoinson.Text, "dd-MM-yyyy",
    CultureInfo.CurrentCulture, DateTimeStyles.None, out parsed))
{
    db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", parsed);
}else
{
  // error in conversion, set null or date time min value to parameter 
  // or if this is required parameter, show error to user and exit the operation
}
 
Share this answer
 
Comments
Muhammad Taqi Hassan Bukhari 10-Jun-14 2:51am    
that solved not it gives

System.InvalidCastException: Specified cast is not valid. at Registration_Requestaccount.BtnSubmit_Click(Object sender, EventArgs e) in e:\ECCII\Registration\Requestaccount.aspx.cs:line 180

and the line 180 is
success = (bool) (db1.sqlcmd.Parameters["@success"].Value);

and the line

db1.sqlcmd = new SqlCommand("uspAccountRequest");
using (SqlDataAdapter sda = new SqlDataAdapter())
{
db1.sqlcmd.CommandType = CommandType.StoredProcedure;
db1.sqlcmd.Parameters.AddWithValue("@FirstName", Firstname);
db1.sqlcmd.Parameters.AddWithValue("@LastName", Lastname);
db1.sqlcmd.Parameters.AddWithValue("@CNIC", cnic);
db1.sqlcmd.Parameters.AddWithValue("@Email", email);
db1.sqlcmd.Parameters.AddWithValue("@Party", DDParty.SelectedValue);
DateTime parsed;
if (DateTime.TryParseExact(tbxpartyjoinson.Text, "dd-MM-yyyy",
CultureInfo.CurrentCulture, DateTimeStyles.None, out parsed))
{
db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", parsed);
}
else
{
// error in conversion, set null or date time min value to parameter
// or if this is required parameter, show error to user and exit the operation
}
//db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", Convert.ToDateTime(tbxpartyjoinson.Text));
db1.sqlcmd.Parameters.AddWithValue("@Constituency", DDConstituency.SelectedValue);
db1.sqlcmd.Parameters.Add("@success", SqlDbType.Bit);
db1.sqlcmd.Parameters["@success"].Direction = ParameterDirection.Output;
db1.sqlcmd.Connection = db1.sqlcon;
db1.sqlcon.Open();
reqid = Convert.ToInt32(db1.sqlcmd.ExecuteScalar());
success = (bool) (db1.sqlcmd.Parameters["@success"].Value);
DamithSL 10-Jun-14 4:04am    
that means your initial question solved. your programmer executed to the line where you read the output parameter. this is new issue you need to fix.
Please sure from calender datetime format, but for correct result use RadDatePicker control this is telerik control, this control return trust data.

please download this DLL for telerik control Telerik.Web.UI.dll.

and use it as following:
ASP.NET
<telerik:raddatepicker id="dtpRequestDate" runat="server" allowcustomtext="false" xmlns:telerik="#unknown">
                            ShowPopupOnFocus="True" MarkFirstMatch="true" PopupDirection="TopRight" Skin="Vista"
                            Culture="English (United States)" meta:resourcekey="dtpRequestDateResource1">
                            <calendar usecolumnheadersasselectors="False" userowheadersasselectors="False" viewselectortext="x">
                            </calendar>
                            <dateinput dateformat="dd/MM/yyyy" displaydateformat="dd/MM/yyyy" labelcssclass="">
                                Width="">
                            </dateinput>
                            <datepopupbutton cssclass="" hoverimageurl="" imageurl="" />
                        </telerik:raddatepicker>
 
Share this answer
 
that solved not it gives

System.InvalidCastException: Specified cast is not valid. at Registration_Requestaccount.BtnSubmit_Click(Object sender, EventArgs e) in e:\ECCII\Registration\Requestaccount.aspx.cs:line 180

and the line 180 is
success = (bool) (db1.sqlcmd.Parameters["@success"].Value);

and the line

db1.sqlcmd = new SqlCommand("uspAccountRequest");
using (SqlDataAdapter sda = new SqlDataAdapter())
{
db1.sqlcmd.CommandType = CommandType.StoredProcedure;
db1.sqlcmd.Parameters.AddWithValue("@FirstName", Firstname);
db1.sqlcmd.Parameters.AddWithValue("@LastName", Lastname);
db1.sqlcmd.Parameters.AddWithValue("@CNIC", cnic);
db1.sqlcmd.Parameters.AddWithValue("@Email", email);
db1.sqlcmd.Parameters.AddWithValue("@Party", DDParty.SelectedValue);
DateTime parsed;
if (DateTime.TryParseExact(tbxpartyjoinson.Text, "dd-MM-yyyy",
CultureInfo.CurrentCulture, DateTimeStyles.None, out parsed))
{
db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", parsed);
}
else
{
// error in conversion, set null or date time min value to parameter
// or if this is required parameter, show error to user and exit the operation
}
//db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", Convert.ToDateTime(tbxpartyjoinson.Text));
db1.sqlcmd.Parameters.AddWithValue("@Constituency", DDConstituency.SelectedValue);
db1.sqlcmd.Parameters.Add("@success", SqlDbType.Bit);
db1.sqlcmd.Parameters["@success"].Direction = ParameterDirection.Output;
db1.sqlcmd.Connection = db1.sqlcon;
db1.sqlcon.Open();
reqid = Convert.ToInt32(db1.sqlcmd.ExecuteScalar());
success = (bool) (db1.sqlcmd.Parameters["@success"].Value);
 
Share this answer
 
Comments
DamithSL 10-Jun-14 4:02am    
this is not an answer. and also this error is not relevant to the question you ask.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900