473,382 Members | 1,615 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,382 software developers and data experts.

Updating SQL2005 table containing timestamp column

I hope I have the right forum for this question. I have an existing Windows
application which uses a SQL Server database and stored procedures. I am now
developing a web application to use the same database.

The original Update and Delete SP's all use a timestamp for concurreny
checking.

I am trying to use the same Update SP from my sqlDataSource but I keep
getting the following error:

Operand type clash: sql_variant is incompatible with timestamp

Can anyone help please?

--
Mal Ball
Feb 6 '06 #1
22 6382
Hi Mal,

Do you mean that when you use the same SP to do the update in
sqlDataSource, the Operand type clash error was generated? If yes, could
you show me the SP. If the SP has paramters, can you show me how the
parameters were passed?

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 7 '06 #2
SP is as follows:
CREATE PROCEDURE [dbo].[updatecustomer]
@customerid int,
@customername char(40),
@address1 char(30),
@address2 char(30),
@town char(30),
@county int,
@postcode char(10),
@country int,
@phone char(20),
@fax char(20),
@web char(40),
@assignedto int,
@details text,
@lastupdated datetime,
@updateby char(30),
@timestamp timestamp
as
update customer set customername = @customername, address1 =
@address1,address2 = @address2, town = @town,
county = @county, postcode = @postcode,country = @country, phone =
@phone,
fax = @fax, web = @web, assignedto = @assignedto, details = @details,
updateby = @updateby, lastupdated = @lastupdated
where customerid = @customerid
and timestamp = @timestamp

Parameters are passed using a sqlDataSource using this update procedure as
the update method

Parameters are bound in a textbox on a FormView control as Bind("timestamp")
--
Mal Ball
"Kevin Yu [MSFT]" wrote:
Hi Mal,

Do you mean that when you use the same SP to do the update in
sqlDataSource, the Operand type clash error was generated? If yes, could
you show me the SP. If the SP has paramters, can you show me how the
parameters were passed?

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 7 '06 #3
Hi Mal,

I tested it on my machine with a timestamp field checking concurrency, and
it works fine. Does this still occurs if you recreate the sqlDataSource?

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 8 '06 #4
Sorry I didnt quite get the last answer right, I have an object datasource
which has a business class called Customer, this is in a class file in my
App_Code folder. i have set up data methods within the class which I use in
the ObjectDataSource as follows:

I think that maybe the timestamp property is not correct:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;

/// <summary>
/// Summary description for Customer
/// </summary>
public class Customer
{
private int _CustomerID, _County, _Country, _AssignedTo;
private string _CustomerName, _Address1, _Address2, _Town, _PostCode,
_Phone, _Fax, _Web, _Details, _UpdateBy, _CurrentUserName;
private DateTime _LastUpdated;
private byte[] _TimeStamp;

public Customer()
{

}

#region Get & Set Methods
public string CurrentUserName
{
get { return _CurrentUserName.Trim(); }
set { _CurrentUserName = value; }
}

public string CustomerName
{
get { return _CustomerName.Trim(); }
set {_CustomerName = value; }
}

public string Address1
{
get { return _Address1.Trim(); }
set { _Address1 = value; }
}

public string Address2
{
get { return _Address2.Trim(); }
set { _Address2 = value; }
}

public string Town
{
get { return _Town.Trim(); }
set { _Town = value; }
}

public string PostCode
{
get { return _PostCode.Trim(); }
set { _PostCode = value; }
}

public string Phone
{
get { return _Phone.Trim(); }
set { _Phone = value; }
}

public string Fax
{
get { return _Fax.Trim(); }
set { _Fax = value; }
}

public string Web
{
get { return _Web.Trim(); }
set { _Web = value; }
}

public string Details
{
get { return _Details.Trim(); }
set { _Details = value; }
}

public string UpdateBy
{
get { return _UpdateBy; }
set { _UpdateBy = value; }
}

public int CustomerID
{
get { return _CustomerID; }
set { _CustomerID = value; }
}

public int County
{
get { return _County; }
set { _County = value; }
}

public int Country
{
get { return _Country; }
set { _Country = value; }
}

public int AssignedTo
{
get { return _AssignedTo; }
set { _AssignedTo = value; }
}

public DateTime LastUpdated
{
get { return _LastUpdated; }
set { _LastUpdated = value; }
}

#endregion

#region Select, Insert, Update, Delete Methods
public System.Data.DataSet Select(Int32 customerID)
{
try
{
DataSet ds = new DataSet();

SqlHelper.FillDataset(ConfigurationManager.Connect ionStrings["ToolkitServer"].ConnectionString,
CommandType.StoredProcedure,
"getcustomer", ds, new string[] { "customer" },
new SqlParameter("@customerid",
customerID));
this.CustomerID =
Convert.ToInt32(ds.Tables[0].Rows[0]["customerid"]);
this.CustomerName =
ds.Tables[0].Rows[0]["customername"].ToString();
this.Address1 = ds.Tables[0].Rows[0]["address1"].ToString();
this.Address2 = ds.Tables[0].Rows[0]["address2"].ToString();
this.Town = ds.Tables[0].Rows[0]["town"].ToString();
this.County = Convert.ToInt32(ds.Tables[0].Rows[0]["county"]);
this.PostCode = ds.Tables[0].Rows[0]["postcode"].ToString();
this.Country =
Convert.ToInt32(ds.Tables[0].Rows[0]["country"]);
this.Phone = ds.Tables[0].Rows[0]["phone"].ToString();
this.Fax = ds.Tables[0].Rows[0]["fax"].ToString();
this.Web = ds.Tables[0].Rows[0]["web"].ToString();
this.Details = ds.Tables[0].Rows[0]["details"].ToString();
this.LastUpdated =
Convert.ToDateTime(ds.Tables[0].Rows[0]["lastupdated"].ToString());
this.UpdateBy = ds.Tables[0].Rows[0]["updateby"].ToString();
(byte[])ds.Tables[0].Rows[0]["timestamp"].ToString();
return ds;
}
catch
{
return null;
}

}

public void Insert(Customer c)
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrin gs["ToolkitServer"].ConnectionString);
SqlCommand cmd = new SqlCommand("insertcustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@customername", c.CustomerName);
cmd.Parameters.AddWithValue("@address1", c.Address1);
cmd.Parameters.AddWithValue("@address2", c.Address2);
cmd.Parameters.AddWithValue("@town", c.Town);
cmd.Parameters.AddWithValue("@county", c.County);
cmd.Parameters.AddWithValue("@postcode", c.PostCode);
cmd.Parameters.AddWithValue("@country", c.Country);
cmd.Parameters.AddWithValue("@phone", c.Phone);
cmd.Parameters.AddWithValue("@fax", c.Fax);
cmd.Parameters.AddWithValue("@web", c.Web);
cmd.Parameters.AddWithValue("@assignedto", c.AssignedTo);
cmd.Parameters.AddWithValue("@details", c.Details);
cmd.Parameters.AddWithValue("@lastupdated", DateTime.Now);
cmd.Parameters.AddWithValue("@updateby", c.UpdateBy);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

}

public void Update(Customer c)
{
try
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrin gs["ToolkitServer"].ConnectionString);
SqlCommand cmd = new SqlCommand("updatecustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@customerid", c.CustomerID);
cmd.Parameters.AddWithValue("@customername", c.CustomerName);
cmd.Parameters.AddWithValue("@address1", c.Address1);
cmd.Parameters.AddWithValue("@address2", c.Address2);
cmd.Parameters.AddWithValue("@town", c.Town);
cmd.Parameters.AddWithValue("@county", c.County);
cmd.Parameters.AddWithValue("@postcode", c.PostCode);
cmd.Parameters.AddWithValue("@country", c.Country);
cmd.Parameters.AddWithValue("@phone", c.Phone);
cmd.Parameters.AddWithValue("@fax", c.Fax);
cmd.Parameters.AddWithValue("@web", c.Web);
cmd.Parameters.AddWithValue("@assignedto", c.AssignedTo);
cmd.Parameters.AddWithValue("@details", c.Details);
cmd.Parameters.AddWithValue("@timestamp", c.TimeStamp);
cmd.Parameters.AddWithValue("@lastupdated", DateTime.Now);
cmd.Parameters.AddWithValue("@updateby", c.UpdateBy);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
}
}

public void Delete(Customer c)
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrin gs["ToolkitServer"].ConnectionString);
SqlCommand cmd = new SqlCommand("deletecustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@customerid", c.CustomerID);
cmd.Parameters.AddWithValue("@timestamp", c.TimeStamp);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}

#endregion
}
--
Mal Ball
"Kevin Yu [MSFT]" wrote:
Hi Mal,

I tested it on my machine with a timestamp field checking concurrency, and
it works fine. Does this still occurs if you recreate the sqlDataSource?

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 9 '06 #5
Hi Mal,

From the code snippet, I see that you are adding the parameters without
type and size. This migth be the cause of the thrown exception. Would you
try to specify the type and size for all the parameters? Use
SqlDbType.Timestamp for the timestamp field.

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 12 '06 #6
Would that be in the form:

cmd.Parameters.Add("@customerid", SqlDbType.Int);
cmd.Parameters["@Customerid"].Value = c.CustomerID;

etc, etc

--
Mal Ball
"Kevin Yu [MSFT]" wrote:
Hi Mal,

From the code snippet, I see that you are adding the parameters without
type and size. This migth be the cause of the thrown exception. Would you
try to specify the type and size for all the parameters? Use
SqlDbType.Timestamp for the timestamp field.

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 12 '06 #7
Am I correct in declaring _Timestamp to be byte[] in my class, if so what
would I use to convert it back when I do a select from the database from the
returned dataset into the _Timestamp variable?

--
Mal Ball
"Kevin Yu [MSFT]" wrote:
Hi Mal,

From the code snippet, I see that you are adding the parameters without
type and size. This migth be the cause of the thrown exception. Would you
try to specify the type and size for all the parameters? Use
SqlDbType.Timestamp for the timestamp field.

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 12 '06 #8
Hi Mal,

The TimeStamp type in SQL server is automatically mapped into byte[] in
NET framework.

http://msdn.microsoft.com/library/de...us/cpguide/htm
l/cpconmappingnetdataproviderdatatypestonetframework datatypes.asp

But for parameters, they also have their types. As you stated in your last
post in the cmd.Parameters.Add, we can specify the type of it. Also, if we
specify the type, the size should also be specified.

cmd.Parameters.Add("@Customerid", SqlDbType.Int, 4);
cmd.Parameters["@Customerid"].Value = c.CustomerID;

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 13 '06 #9
Thanks I will try this, my only problem now is more just plain old c# which I
dont know well enough yet.

How do I get the value from my recordset to the timestamp byte[] object?

TimeStamp = dsCustomer.Tables[0].Rows[0]["timestamp"];

obviously this wont work because its not the right type.

--
Mal Ball
"Kevin Yu [MSFT]" wrote:
Hi Mal,

The TimeStamp type in SQL server is automatically mapped into byte[] in
.NET framework.

http://msdn.microsoft.com/library/de...us/cpguide/htm
l/cpconmappingnetdataproviderdatatypestonetframework datatypes.asp

But for parameters, they also have their types. As you stated in your last
post in the cmd.Parameters.Add, we can specify the type of it. Also, if we
specify the type, the size should also be specified.

cmd.Parameters.Add("@Customerid", SqlDbType.Int, 4);
cmd.Parameters["@Customerid"].Value = c.CustomerID;

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 13 '06 #10
Mal Ball wrote:
Thanks I will try this, my only problem now is more just plain old c# which I
dont know well enough yet.

How do I get the value from my recordset to the timestamp byte[] object?

TimeStamp = dsCustomer.Tables[0].Rows[0]["timestamp"];

obviously this wont work because its not the right type.


DateTime TimeStamp = (DateTime) dsCustomer.Tables[0].Rows[0]["timestamp"];

Feb 14 '06 #11
Hi Mal,

If it is being converted to byte[], it has to be

Byte[] TimeStamp = (Byte[]) dsCustomer.Tables[0].Rows[0]["timestamp"];

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 14 '06 #12
I must be missing something here in the way I have implemented the class and
object data source. If I update the formview and press the update button the
update code produces an exception of procedure expected the parameter
@timestamp but was not supplied:

When I looked at all the other properties declared within the class none of
them are populated.

This is my class which is assigned to the objectdatasource on the form and
the objectdatasource is assigned to the formview:

private int _CustomerID, _County, _Country, _AssignedTo;
private string _CustomerName, _Address1, _Address2, _Town, _PostCode,
_Phone, _Fax, _Web, _Details, _UpdateBy, _CurrentUserName;
private DateTime _LastUpdated;
private byte[] _TimeStamp;

public Customer()
{

}

#region Get & Set Methods
public byte[] TimeStamp
{
get { return _TimeStamp; }
set { _TimeStamp = value; }
}

public string CurrentUserName
{
get { return _CurrentUserName.Trim(); }
set { _CurrentUserName = value; }
}

public string CustomerName
{
get { return _CustomerName.Trim(); }
set { _CustomerName = value; }
}

public string Address1
{
get { return _Address1.Trim(); }
set { _Address1 = value; }
}

public string Address2
{
get { return _Address2.Trim(); }
set { _Address2 = value; }
}

public string Town
{
get { return _Town.Trim(); }
set { _Town = value; }
}

public string PostCode
{
get { return _PostCode.Trim(); }
set { _PostCode = value; }
}

public string Phone
{
get { return _Phone.Trim(); }
set { _Phone = value; }
}

public string Fax
{
get { return _Fax.Trim(); }
set { _Fax = value; }
}

public string Web
{
get { return _Web.Trim(); }
set { _Web = value; }
}

public string Details
{
get { return _Details.Trim(); }
set { _Details = value; }
}

public string UpdateBy
{
get { return _UpdateBy; }
set { _UpdateBy = value; }
}

public int CustomerID
{
get { return _CustomerID; }
set { _CustomerID = value; }
}

public int County
{
get { return _County; }
set { _County = value; }
}

public int Country
{
get { return _Country; }
set { _Country = value; }
}

public int AssignedTo
{
get { return _AssignedTo; }
set { _AssignedTo = value; }
}

public DateTime LastUpdated
{
get { return _LastUpdated; }
set { _LastUpdated = value; }
}

#endregion

#region Select, Insert, Update, Delete Methods
public System.Data.DataSet Select(Int32 customerID)
{
try
{
DataSet ds = new DataSet();

SqlHelper.FillDataset(ConfigurationManager.Connect ionStrings["ToolkitServer"].ConnectionString,
CommandType.StoredProcedure,
"getcustomer", ds, new string[] { "customer" },
new SqlParameter("@customerid",
customerID));
this.CustomerID =
Convert.ToInt32(ds.Tables[0].Rows[0]["customerid"]);
this.CustomerName =
ds.Tables[0].Rows[0]["customername"].ToString();
this.Address1 = ds.Tables[0].Rows[0]["address1"].ToString();
this.Address2 = ds.Tables[0].Rows[0]["address2"].ToString();
this.Town = ds.Tables[0].Rows[0]["town"].ToString();
this.County = Convert.ToInt32(ds.Tables[0].Rows[0]["county"]);
this.PostCode = ds.Tables[0].Rows[0]["postcode"].ToString();
this.Country = Convert.ToInt32(ds.Tables[0].Rows[0]["country"]);
this.Phone = ds.Tables[0].Rows[0]["phone"].ToString();
this.Fax = ds.Tables[0].Rows[0]["fax"].ToString();
this.Web = ds.Tables[0].Rows[0]["web"].ToString();
this.Details = ds.Tables[0].Rows[0]["details"].ToString();
this.TimeStamp = (Byte[])ds.Tables[0].Rows[0]["timestamp"];
this.LastUpdated =
Convert.ToDateTime(ds.Tables[0].Rows[0]["lastupdated"].ToString());
this.UpdateBy = ds.Tables[0].Rows[0]["updateby"].ToString();
return ds;
}
catch
{
return null;
}

}

public void Insert(Customer c)
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrin gs["ToolkitServer"].ConnectionString);
SqlCommand cmd = new SqlCommand("insertcustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@customername", c.CustomerName);
cmd.Parameters.AddWithValue("@address1", c.Address1);
cmd.Parameters.AddWithValue("@address2", c.Address2);
cmd.Parameters.AddWithValue("@town", c.Town);
cmd.Parameters.AddWithValue("@county", c.County);
cmd.Parameters.AddWithValue("@postcode", c.PostCode);
cmd.Parameters.AddWithValue("@country", c.Country);
cmd.Parameters.AddWithValue("@phone", c.Phone);
cmd.Parameters.AddWithValue("@fax", c.Fax);
cmd.Parameters.AddWithValue("@web", c.Web);
cmd.Parameters.AddWithValue("@assignedto", c.AssignedTo);
cmd.Parameters.AddWithValue("@details", c.Details);
cmd.Parameters.AddWithValue("@timestamp", c.TimeStamp);
cmd.Parameters.AddWithValue("@lastupdated", DateTime.Now);
cmd.Parameters.AddWithValue("@updateby", c.UpdateBy);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

}

public void Update(Customer c)
{
try
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrin gs["ToolkitServer"].ConnectionString);
SqlCommand cmd = new SqlCommand("updatecustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@customerid", SqlDbType.Int);
cmd.Parameters["@customerid"].Value = c.CustomerID;
cmd.Parameters.Add("@customername", SqlDbType.NVarChar);
cmd.Parameters["@customername"].Value = c.CustomerName;
cmd.Parameters.Add("@address1", SqlDbType.NVarChar);
cmd.Parameters["@address1"].Value = c.Address1;
cmd.Parameters.Add("@address2", SqlDbType.NVarChar);
cmd.Parameters["@address2"].Value = c.Address2;
cmd.Parameters.Add("@town", SqlDbType.NVarChar);
cmd.Parameters["@town"].Value = c.Town;
cmd.Parameters.Add("@county", SqlDbType.Int);
cmd.Parameters["@county"].Value = c.County;
cmd.Parameters.Add("@postcode", SqlDbType.NVarChar);
cmd.Parameters["@postcode"].Value = c.PostCode;
cmd.Parameters.Add("@country", SqlDbType.Int);
cmd.Parameters["@country"].Value = c.Country;
cmd.Parameters.Add("@phone", SqlDbType.NVarChar);
cmd.Parameters["@phone"].Value = c.Phone;
cmd.Parameters.Add("@fax", SqlDbType.NVarChar);
cmd.Parameters["@fax"].Value = c.Fax;
cmd.Parameters.Add("@web", SqlDbType.NVarChar);
cmd.Parameters["@web"].Value = c.Web;
cmd.Parameters.Add("@assignedto", SqlDbType.Int);
cmd.Parameters["@assignedto"].Value = c.AssignedTo;
cmd.Parameters.Add("@details", SqlDbType.NVarChar);
cmd.Parameters["@details"].Value = c.Details;
cmd.Parameters.Add("@timestamp", SqlDbType.Timestamp);
cmd.Parameters["@timestamp"].Value = c.TimeStamp;
cmd.Parameters.Add("@lastupdated", SqlDbType.DateTime);
cmd.Parameters["@lastupdated"].Value = DateTime.Now;
cmd.Parameters.Add("@updateby", SqlDbType.NVarChar);
cmd.Parameters["@updateby"].Value = c.UpdateBy;

con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
}
}

public void Delete(Customer c)
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrin gs["ToolkitServer"].ConnectionString);
SqlCommand cmd = new SqlCommand("deletecustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@customerid", c.CustomerID);
cmd.Parameters.AddWithValue("@timestamp", c.TimeStamp);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
--
Mal Ball
"Kevin Yu [MSFT]" wrote:
Hi Mal,

If it is being converted to byte[], it has to be

Byte[] TimeStamp = (Byte[]) dsCustomer.Tables[0].Rows[0]["timestamp"];

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 14 '06 #13
Hi Mal,

I tried your code on my machine but cannot repro the problem. Could you
post your page with only one formview control here?

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 15 '06 #14
Sorry Kevin I am not sure how to do this, do I just cut and paste the code
from both aspx and aspx.cs or is there a way of uploading?

Do you want me to create a new form with these elements in it, I cannot send
the actual form because I am also using Infragistics web objects as well. The
FormView is on an Infragistics Web Tab object and the form is also based on a
master page.

--
Mal Ball
"Kevin Yu [MSFT]" wrote:
Hi Mal,

I tried your code on my machine but cannot repro the problem. Could you
post your page with only one formview control here?

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 15 '06 #15
Hi Mal,

Try to simplify the page with only the FormView. If with only the FormView
on that page, this problem can be reproduced, please copy and paste the
aspx and aspx.cs file here. Thank you!

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 16 '06 #16
Kevin

Here is the Customer class that I have set up after your suggestions about
the timestamp property

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;

/// <summary>
/// Summary description for Customer
/// </summary>
public class Customer
{
private int _CustomerID, _County, _Country, _AssignedTo;
private string _CustomerName, _Address1, _Address2, _Town, _PostCode,
_Phone, _Fax, _Web, _Details, _UpdateBy, _CurrentUserName;
private DateTime _LastUpdated;
private byte[] _TimeStamp;

public Customer()
{

}

#region Get & Set Methods
public byte[] TimeStamp
{
get { return _TimeStamp; }
set { _TimeStamp = value; }
}

public string CurrentUserName
{
get { return _CurrentUserName.Trim(); }
set { _CurrentUserName = value; }
}

public string CustomerName
{
get { return _CustomerName.Trim(); }
set { _CustomerName = value; }
}

public string Address1
{
get { return _Address1.Trim(); }
set { _Address1 = value; }
}

public string Address2
{
get { return _Address2.Trim(); }
set { _Address2 = value; }
}

public string Town
{
get { return _Town.Trim(); }
set { _Town = value; }
}

public string PostCode
{
get { return _PostCode.Trim(); }
set { _PostCode = value; }
}

public string Phone
{
get { return _Phone.Trim(); }
set { _Phone = value; }
}

public string Fax
{
get { return _Fax.Trim(); }
set { _Fax = value; }
}

public string Web
{
get { return _Web.Trim(); }
set { _Web = value; }
}

public string Details
{
get { return _Details.Trim(); }
set { _Details = value; }
}

public string UpdateBy
{
get { return _UpdateBy; }
set { _UpdateBy = value; }
}

public int CustomerID
{
get { return _CustomerID; }
set { _CustomerID = value; }
}

public int County
{
get { return _County; }
set { _County = value; }
}

public int Country
{
get { return _Country; }
set { _Country = value; }
}

public int AssignedTo
{
get { return _AssignedTo; }
set { _AssignedTo = value; }
}

public DateTime LastUpdated
{
get { return _LastUpdated; }
set { _LastUpdated = value; }
}

#endregion

#region Select, Insert, Update, Delete Methods
public System.Data.DataSet Select(Int32 customerID)
{
try
{
DataSet ds = new DataSet();

SqlHelper.FillDataset(ConfigurationManager.Connect ionStrings["ToolkitServer"].ConnectionString,
CommandType.StoredProcedure,
"getcustomer", ds, new string[] { "customer" },
new SqlParameter("@customerid",
customerID));
this.CustomerID =
Convert.ToInt32(ds.Tables[0].Rows[0]["customerid"]);
this.CustomerName =
ds.Tables[0].Rows[0]["customername"].ToString();
this.Address1 = ds.Tables[0].Rows[0]["address1"].ToString();
this.Address2 = ds.Tables[0].Rows[0]["address2"].ToString();
this.Town = ds.Tables[0].Rows[0]["town"].ToString();
this.County = Convert.ToInt32(ds.Tables[0].Rows[0]["county"]);
this.PostCode = ds.Tables[0].Rows[0]["postcode"].ToString();
this.Country = Convert.ToInt32(ds.Tables[0].Rows[0]["country"]);
this.Phone = ds.Tables[0].Rows[0]["phone"].ToString();
this.Fax = ds.Tables[0].Rows[0]["fax"].ToString();
this.Web = ds.Tables[0].Rows[0]["web"].ToString();
this.Details = ds.Tables[0].Rows[0]["details"].ToString();
this.TimeStamp = (Byte[])ds.Tables[0].Rows[0]["timestamp"];
this.LastUpdated =
Convert.ToDateTime(ds.Tables[0].Rows[0]["lastupdated"].ToString());
this.UpdateBy = ds.Tables[0].Rows[0]["updateby"].ToString();
return ds;
}
catch
{
return null;
}

}

public void Insert(Customer c)
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrin gs["ToolkitServer"].ConnectionString);
SqlCommand cmd = new SqlCommand("insertcustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@customername", c.CustomerName);
cmd.Parameters.AddWithValue("@address1", c.Address1);
cmd.Parameters.AddWithValue("@address2", c.Address2);
cmd.Parameters.AddWithValue("@town", c.Town);
cmd.Parameters.AddWithValue("@county", c.County);
cmd.Parameters.AddWithValue("@postcode", c.PostCode);
cmd.Parameters.AddWithValue("@country", c.Country);
cmd.Parameters.AddWithValue("@phone", c.Phone);
cmd.Parameters.AddWithValue("@fax", c.Fax);
cmd.Parameters.AddWithValue("@web", c.Web);
cmd.Parameters.AddWithValue("@assignedto", c.AssignedTo);
cmd.Parameters.AddWithValue("@details", c.Details);
cmd.Parameters.AddWithValue("@timestamp", c.TimeStamp);
cmd.Parameters.AddWithValue("@lastupdated", DateTime.Now);
cmd.Parameters.AddWithValue("@updateby", c.UpdateBy);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

}

public void Update(Customer c)
{
try
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrin gs["ToolkitServer"].ConnectionString);
SqlCommand cmd = new SqlCommand("updatecustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@customerid", SqlDbType.Int);
cmd.Parameters["@customerid"].Value = c.CustomerID;
cmd.Parameters.Add("@customername", SqlDbType.NVarChar);
cmd.Parameters["@customername"].Value = c.CustomerName;
cmd.Parameters.Add("@address1", SqlDbType.NVarChar);
cmd.Parameters["@address1"].Value = c.Address1;
cmd.Parameters.Add("@address2", SqlDbType.NVarChar);
cmd.Parameters["@address2"].Value = c.Address2;
cmd.Parameters.Add("@town", SqlDbType.NVarChar);
cmd.Parameters["@town"].Value = c.Town;
cmd.Parameters.Add("@county", SqlDbType.Int);
cmd.Parameters["@county"].Value = c.County;
cmd.Parameters.Add("@postcode", SqlDbType.NVarChar);
cmd.Parameters["@postcode"].Value = c.PostCode;
cmd.Parameters.Add("@country", SqlDbType.Int);
cmd.Parameters["@country"].Value = c.Country;
cmd.Parameters.Add("@phone", SqlDbType.NVarChar);
cmd.Parameters["@phone"].Value = c.Phone;
cmd.Parameters.Add("@fax", SqlDbType.NVarChar);
cmd.Parameters["@fax"].Value = c.Fax;
cmd.Parameters.Add("@web", SqlDbType.NVarChar);
cmd.Parameters["@web"].Value = c.Web;
cmd.Parameters.Add("@assignedto", SqlDbType.Int);
cmd.Parameters["@assignedto"].Value = c.AssignedTo;
cmd.Parameters.Add("@details", SqlDbType.NVarChar);
cmd.Parameters["@details"].Value = c.Details;
cmd.Parameters.Add("@timestamp", SqlDbType.Timestamp);
cmd.Parameters["@timestamp"].Value = c.TimeStamp;
cmd.Parameters.Add("@lastupdated", SqlDbType.DateTime);
cmd.Parameters["@lastupdated"].Value = DateTime.Now;
cmd.Parameters.Add("@updateby", SqlDbType.NVarChar);
cmd.Parameters["@updateby"].Value = c.UpdateBy;

con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
}
}

public void Delete(Customer c)
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrin gs["ToolkitServer"].ConnectionString);
SqlCommand cmd = new SqlCommand("deletecustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@customerid", c.CustomerID);
cmd.Parameters.AddWithValue("@timestamp", c.TimeStamp);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}

#endregion

}

--
Mal Ball
"Kevin Yu [MSFT]" wrote:
Hi Mal,

Try to simplify the page with only the FormView. If with only the FormView
on that page, this problem can be reproduced, please copy and paste the
aspx and aspx.cs file here. Thank you!

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 18 '06 #17
aStill getting error update Procedure of Function 'updatecustomer' expects
parameter '@timestamp', which was not supplied.

Having looked at timestamp when it is added as a paremeter in the update
statement it is set to null, however if I look at the timestamp paremeter
when I do the initial select it is populated.

Simple form with objectdatasource and formview below, no code in aspx.cs
file at the moment. I will send the update Customer.cs class separately
because too many characters for message.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
DataObjectTypeName="Customer"
DeleteMethod="Delete" InsertMethod="Insert"
SelectMethod="Select" TypeName="Customer"
UpdateMethod="Update">
<SelectParameters>
<asp:Parameter DefaultValue="1" Name="customerID"
Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>

</div>
<asp:FormView ID="CustomerFormView" runat="server"
DataSourceID="ObjectDataSource1" Height="218px" Style="position: static"
Width="825px" DataKeyNames="CustomerID">
<EditItemTemplate>
<table style="width: 813px; position: static">
<tr>
<td style="width: 86px; height:
24px;" valign="middle">
<asp:Label ID="Label14"
runat="server" Style="position: static" Text="Customer ID:"></asp:Label></td>
<td style="width: 154px; height:
24px;" valign="middle">
<asp:Label ID="customeridLabel1"
runat="server" Text='<%# Eval("customerid") %>' style="position: static">
</asp:Label></td>
<td style="width: 100px; height:
24px;" valign="top">
<asp:Label ID="Label28"
runat="server" Style="position: static" Text="Notes:"></asp:Label></td>
<td style="width: 100px; height:
24px;">
<asp:Label ID="UserName"
runat="server" Style="position: relative" Text='<%# User.Identity.Name %>'
Visible="False"></asp:Label>
<asp:Label ID="TimeStamp"
runat="server" Style="left: 4px; position: relative; top: 0px"
Text='<%# Eval("timestamp")
%>'></asp:Label></td>
</tr>
<tr>
<td style="width: 86px"
valign="middle">
<asp:Label ID="Label17"
runat="server" Style="position: static" Text="Name:"></asp:Label></td>
<td style="width: 154px"
valign="middle">
<asp:TextBox ID="customernameTextBox"
runat="server" Text='<%# Bind("customername") %>' style="position: static"
Width="269px"></asp:TextBox>
</td>
<td colspan="2" rowspan="8"
valign="top" align="left">
<asp:TextBox ID="detailsTextBox"
runat="server" Text='<%# Bind("details") %>' style="position: static"
Height="201px" TextMode="MultiLine" Width="416px"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 86px"
valign="middle">
<asp:Label ID="Label18"
runat="server" Style="position: static" Text="Address:"></asp:Label></td>
<td style="width: 154px"
valign="middle">
<asp:TextBox ID="address1TextBox"
runat="server" Text='<%# Bind("address1") %>' style="position: static"
Width="148px"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 86px"
valign="middle">
</td>
<td style="width: 154px"
valign="middle">
<asp:TextBox ID="address2TextBox"
runat="server" Text='<%# Bind("address2") %>' style="position: static">
</asp:TextBox></td>
</tr>
<tr>
<td style="width: 86px"
valign="middle">
<asp:Label ID="Label19"
runat="server" Style="position: static" Text="Town:"></asp:Label></td>
<td style="width: 154px"
valign="middle">
<asp:TextBox ID="townTextBox" runat="server"
Text='<%# Bind("town") %>' style="position: static">
</asp:TextBox></td>
</tr>
<tr>
<td style="width: 86px"
valign="middle">
<asp:Label ID="Label20"
runat="server" Style="position: static" Text="County:"></asp:Label></td>
<td style="width: 154px"
valign="middle">
<asp:TextBox ID="TextBox2"
runat="server" Style="position: relative" Text='<%# Eval("county")
%>'></asp:TextBox></td>
</tr>
<tr>
<td style="width: 86px"
valign="middle">
<asp:Label ID="Label21"
runat="server" Style="position: static" Text="Post Code:"></asp:Label></td>
<td style="width: 154px"
valign="middle">
<asp:TextBox ID="postcodeTextBox"
runat="server" Text='<%# Bind("postcode") %>' style="position: static"
Width="95px"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 86px"
valign="middle">
<asp:Label ID="Label22"
runat="server" Style="position: static" Text="Country:"></asp:Label></td>
<td style="width: 154px"
valign="middle">
<asp:TextBox ID="TextBox3"
runat="server" Style="position: relative" Text='<%# Eval("country")
%>'></asp:TextBox></td>
</tr>
<tr>
<td style="width: 86px"
valign="middle">
<asp:Label ID="Label23"
runat="server" Style="position: static" Text="Phone:"></asp:Label></td>
<td style="width: 154px"
valign="middle">
<asp:TextBox ID="phoneTextBox"
runat="server" Text='<%# Bind("phone") %>' style="position: static">
</asp:TextBox></td>
</tr>
<tr>
<td style="width: 86px"
valign="middle">
<asp:Label ID="Label25"
runat="server" Style="position: static" Text="Web:"></asp:Label></td>
<td style="width: 154px"
valign="middle">
<asp:TextBox ID="webTextBox" runat="server"
Text='<%# Bind("web") %>' style="position: static">
</asp:TextBox></td>
<td style="width: 100px"
valign="middle">
<asp:Label ID="Label24"
runat="server" Style="position: static" Text="Fax:"></asp:Label></td>
<td style="width: 100px"
valign="middle">
<asp:TextBox ID="TextBox1"
runat="server" Style="position: relative" Text='<%# Bind("fax") %>'>
</asp:TextBox>
<asp:Button ID="Button2"
runat="server" CommandName="Update" Style="left: 29px; position: relative;
top: 0px" Text="Update"
/></td>
</tr>
</table>
</EditItemTemplate>
<InsertItemTemplate>
<table style="width: 814px; position:
relative">
<tr>
<td style="width: 74px">
<asp:Label ID="Label26"
runat="server" Style="position: relative" Text="Name:"></asp:Label></td>
<td style="width: 100px">
<asp:TextBox ID="customernameTextBox"
runat="server" Text='<%# Bind("customername") %>' style="position: relative"
Width="251px"></asp:TextBox></td>
<td style="width: 100px">
<asp:Label ID="Label37"
runat="server" Style="position: relative" Text="Notes:"></asp:Label></td>
<td style="width: 100px">
<asp:Label ID="Label38"
runat="server" Style="position: relative" Text="<%# User.Identity.Name %>"
Visible="False"></asp:Label></td>
</tr>
<tr>
<td style="width: 74px">
<asp:Label ID="Label27"
runat="server" Style="position: relative" Text="Address:"></asp:Label></td>
<td style="width: 100px">
<asp:TextBox ID="address1TextBox"
runat="server" Text='<%# Bind("address1") %>' style="position: relative">
</asp:TextBox></td>
<td colspan="2" rowspan="8"
valign="top">
<asp:TextBox ID="detailsTextBox"
runat="server" Text='<%# Bind("details") %>' style="position: relative">
</asp:TextBox></td>
</tr>
<tr>
<td style="width: 74px">
</td>
<td style="width: 100px">
<asp:TextBox ID="address2TextBox"
runat="server" Text='<%# Bind("address2") %>' style="position: relative">
</asp:TextBox></td>
</tr>
<tr>
<td style="width: 74px">
<asp:Label ID="Label30"
runat="server" Style="position: relative" Text="Town:"></asp:Label></td>
<td style="width: 100px">
<asp:TextBox ID="townTextBox" runat="server"
Text='<%# Bind("town") %>' style="position: relative">
</asp:TextBox></td>
</tr>
<tr>
<td style="width: 74px">
<asp:Label ID="Label31"
runat="server" Style="position: relative" Text="County:"></asp:Label></td>
<td style="width: 100px">
<asp:TextBox ID="countyTextBox"
runat="server" Text='<%# Eval("county") %>' style="position:
relative"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 74px">
<asp:Label ID="Label32"
runat="server" Style="position: relative" Text="Post Code:"></asp:Label></td>
<td style="width: 100px">
<asp:TextBox ID="postcodeTextBox"
runat="server" Text='<%# Bind("postcode") %>' style="position: relative"
Width="92px"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 74px; height:
25px;">
<asp:Label ID="Label33"
runat="server" Style="position: relative" Text="Country:"></asp:Label></td>
<td style="width: 100px; height:
25px;">
<asp:TextBox ID="countryTextBox"
runat="server" Text='<%# Eval("country") %>' style="position:
relative"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 74px">
<asp:Label ID="Label34"
runat="server" Style="position: relative" Text="Phone:"></asp:Label></td>
<td style="width: 100px">
<asp:TextBox ID="phoneTextBox"
runat="server" Text='<%# Bind("phone") %>' style="position: relative">
</asp:TextBox></td>
</tr>
<tr>
<td style="width: 74px">
<asp:Label ID="Label35"
runat="server" Style="position: relative" Text="Fax:"></asp:Label></td>
<td style="width: 100px">
<asp:TextBox ID="faxTextBox" runat="server"
Text='<%# Bind("fax") %>' style="position: relative">
</asp:TextBox></td>
</tr>
<tr>
<td style="width: 74px">
<asp:Label ID="Label36"
runat="server" Style="position: relative" Text="Web:"></asp:Label></td>
<td style="width: 100px">
<asp:TextBox ID="webTextBox" runat="server"
Text='<%# Bind("web") %>' style="position: relative">
</asp:TextBox></td>
<td style="width: 100px">
<asp:Label ID="TimeStamp"
runat="server" ForeColor="Black" Style="position: relative"
Text='<%# Eval("timestamp")
%>'></asp:Label></td>
<td style="width: 100px">
</td>
</tr>
<tr>
<td style="width: 74px">
</td>
<td style="width: 100px">
</td>
<td style="width: 100px">
<asp:Button ID="Button1"
runat="server" CommandName="Update" Style="position: relative"
Text="Update" /></td>
<td style="width: 100px">
</td>
</tr>
</table>
<br />
</InsertItemTemplate>
<ItemTemplate>
<table style="width: 800px; position: static">
<tr>
<td style="width: 93px" align="left"
valign="middle">
<asp:Label ID="Label3"
runat="server" Style="position: static" Text="Customer ID:"></asp:Label></td>
<td style="width: 194px"
align="left" valign="middle">
<asp:Label ID="customeridLabel"
runat="server" Style="position: static" Text='<%# Eval("customerid")
%>'></asp:Label></td>
<td style="width: 100px" align="left">
<asp:Label ID="Label13"
runat="server" Style="position: static" Text="Details:"></asp:Label></td>
<td style="width: 100px" align="left">
<asp:Label ID="assignedtoLabel"
runat="server" Style="position: static" Text='<%# Eval("assignedto")
%>'></asp:Label></td>
</tr>
<tr>
<td style="width: 93px" align="left"
valign="middle">
<asp:Label ID="Label4"
runat="server" Style="position: static" Text="Name:"></asp:Label></td>
<td style="width: 194px"
align="left" valign="middle">
<asp:Label
ID="customernameLabel" runat="server" Style="position: static" Text='<%#
Eval("customername") %>' ForeColor="Black"></asp:Label></td>
<td align="left" colspan="2"
rowspan="8" valign="top">
<asp:Label ID="detailsLabel"
runat="server" Style="position: static" Text='<%# Eval("details") %>'
ForeColor="Black"></asp:Label></td>
</tr>
<tr>
<td style="width: 93px" align="left"
valign="middle">
<asp:Label ID="Label5"
runat="server" Style="position: static" Text="Address:"></asp:Label></td>
<td style="width: 194px"
align="left" valign="middle">
<asp:Label ID="address1Label"
runat="server" Style="position: static" Text='<%# Eval("address1") %>'
ForeColor="Black"></asp:Label></td>
</tr>
<tr>
<td style="width: 93px; height:
21px;" align="left" valign="middle">
</td>
<td style="width: 194px; height:
21px;" align="left" valign="middle">
<asp:Label ID="address2Label"
runat="server" Style="position: static" Text='<%# Bind("address2") %>'
ForeColor="Black"></asp:Label></td>
</tr>
<tr>
<td style="width: 93px" align="left"
valign="middle">
<asp:Label ID="Label6"
runat="server" Style="position: static" Text="Town:"></asp:Label></td>
<td style="width: 194px"
align="left" valign="middle">
<asp:Label ID="townLabel"
runat="server" Style="position: static" Text='<%# Eval("town") %>'
ForeColor="Black"></asp:Label></td>
</tr>
<tr>
<td style="width: 93px" align="left"
valign="middle">
<asp:Label ID="Label7"
runat="server" Style="position: static" Text="County:"></asp:Label></td>
<td style="width: 194px"
align="left" valign="middle">
<asp:Label ID="Label1"
runat="server" ForeColor="Black" Style="position: relative"
Text='<%# Eval("county")
%>'></asp:Label></td>
</tr>
<tr>
<td style="width: 93px" align="left"
valign="middle">
<asp:Label ID="Label8"
runat="server" Style="position: static" Text="Post Code:"></asp:Label></td>
<td style="width: 194px"
align="left" valign="middle">
<asp:Label ID="postcodeLabel"
runat="server" Style="position: static" Text='<%# Eval("postcode") %>'
ForeColor="Black"></asp:Label></td>
</tr>
<tr>
<td style="width: 93px; height:
21px" align="left" valign="middle">
<asp:Label ID="Label9"
runat="server" Style="position: static" Text="Country:"></asp:Label></td>
<td style="width: 194px; height:
21px" align="left" valign="middle">
<asp:Label ID="Label2"
runat="server" ForeColor="Black" Style="position: relative"
Text='<%# Eval("country")
%>'></asp:Label></td>
</tr>
<tr>
<td style="width: 93px" align="left"
valign="middle">
<asp:Label ID="Label10"
runat="server" Style="position: static" Text="Phone:"></asp:Label></td>
<td style="width: 194px"
align="left" valign="middle">
<asp:Label ID="phoneLabel"
runat="server" Style="position: static" Text='<%# Eval("phone") %>'
ForeColor="Black"></asp:Label></td>
</tr>
<tr>
<td style="width: 93px" align="left"
valign="middle">
<asp:Label ID="Label11"
runat="server" Style="position: static" Text="Fax:"></asp:Label></td>
<td style="width: 194px"
align="left" valign="middle">
<asp:Label ID="faxLabel"
runat="server" Style="position: static" Text='<%# Eval("fax") %>'
ForeColor="Black"></asp:Label></td>
<td style="width: 100px" align="left">
<asp:Button ID="Button3"
runat="server" Style="position: relative" Text="Button" /></td>
<td style="width: 100px" align="left">
<asp:Button ID="Button4"
runat="server" CommandName="Edit" Style="position: relative"
Text="Edit" /></td>
</tr>
<tr>
<td style="width: 93px" align="left"
valign="middle">
<asp:Label ID="Label12"
runat="server" Style="position: static" Text="Web:"></asp:Label></td>
<td style="width: 194px"
align="left" valign="middle">
<asp:Label ID="webLabel"
runat="server" Style="position: static" Text='<%# Eval("web") %>'
ForeColor="Black"></asp:Label></td>
<td style="width: 100px" align="left">
</td>
<td style="width: 100px" align="left">
<asp:Label ID="Label29"
runat="server" ForeColor="Black" Style="position: relative"
Text='<%# Eval("timestamp")
%>'></asp:Label></td>
</tr>
<tr>
<td style="width: 93px" align="left"
valign="middle">
<asp:Label ID="Label15"
runat="server" Style="position: static" Text="Last Updated:"></asp:Label></td>
<td style="width: 194px"
align="left" valign="middle">
<asp:Label ID="lastupdatedLabel"
runat="server" Style="position: static" Text='<%# Eval("lastupdated") %>'
ForeColor="Black"></asp:Label></td>
<td style="width: 100px"
align="left" valign="middle">
<asp:Label ID="Label16"
runat="server" Style="position: static" Text="Update By:"></asp:Label></td>
<td style="width: 100px"
align="left" valign="middle">
<asp:Label ID="updatebyLabel"
runat="server" Style="position: static" Text='<%# Eval("updateby") %>'
ForeColor="Black"></asp:Label></td>
</tr>
</table>
</ItemTemplate>
</asp:FormView>

</form>
</body>
</html>
--
Mal Ball
"Kevin Yu [MSFT]" wrote:
Hi Mal,

Try to simplify the page with only the FormView. If with only the FormView
on that page, this problem can be reproduced, please copy and paste the
aspx and aspx.cs file here. Thank you!

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 18 '06 #18
Hi Mal,

In the aspx page, the the ObjectDataSource's update command parameter was
not provided. It hasn't been bound to the correct object, since the update
method has an argument with customer type. You can click on the
ObjectDataSource and add the parameter in the property window for the
UpdateParameters property. HTH.

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 20 '06 #19
Sorry Kevin, not quite sure what I need to use as the parameter. I am
assuming that you mean the update command is expecting a Customer object but
I am not passing this, is this correct? If so, what do I need to put into the
update parameters box for Value, and parameter source.

My appologies but as a newbie to Web Development I am on a steep learning
curve.

--
Mal Ball
"Kevin Yu [MSFT]" wrote:
Hi Mal,

In the aspx page, the the ObjectDataSource's update command parameter was
not provided. It hasn't been bound to the correct object, since the update
method has an argument with customer type. You can click on the
ObjectDataSource and add the parameter in the property window for the
UpdateParameters property. HTH.

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 20 '06 #20
Hi Mal,

IMO, the update method in Customer class should not have any arguments.
Because calling Update is updating the very object you're calling this
method on. You can change the method to

public void Update()
{
try
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrin gs["ToolkitServer"].Connec
tionString);
SqlCommand cmd = new SqlCommand("updatecustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@customerid", SqlDbType.Int);
cmd.Parameters["@customerid"].Value = this.CustomerID;
cmd.Parameters.Add("@customername", SqlDbType.NVarChar);
cmd.Parameters["@customername"].Value = this.CustomerName;
cmd.Parameters.Add("@address1", SqlDbType.NVarChar);
cmd.Parameters["@address1"].Value = this.Address1;

//................................
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
}
}

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 21 '06 #21
Thanks for all your help, I am giving up on this and doing it some other way
I cannot get it to work and its taking too much time up. Now that I have
removed the parameter in the Update method I am getting this error:

ObjectDataSource 'ObjectDataSource1' could not find a non-generic method
'Select' that has parameters: customerID, customername, details, address1,
address2, town, county, postcode, country, phone, web, fax,
original_CustomerID.

--
Mal Ball
"Kevin Yu [MSFT]" wrote:
Hi Mal,

IMO, the update method in Customer class should not have any arguments.
Because calling Update is updating the very object you're calling this
method on. You can change the method to

public void Update()
{
try
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrin gs["ToolkitServer"].Connec
tionString);
SqlCommand cmd = new SqlCommand("updatecustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@customerid", SqlDbType.Int);
cmd.Parameters["@customerid"].Value = this.CustomerID;
cmd.Parameters.Add("@customername", SqlDbType.NVarChar);
cmd.Parameters["@customername"].Value = this.CustomerName;
cmd.Parameters.Add("@address1", SqlDbType.NVarChar);
cmd.Parameters["@address1"].Value = this.Address1;

//................................
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
}
}

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 21 '06 #22
Hi Mal,

It seem the problem is in the Select method. Please check if the bounded
parameters are the same as the Select method.

Looking at this issue, I think it needs intensive troubleshooting. I
suggest you try to contact Microsoft PSS on it. You can find their contact
information from the following link:

http://support.microsoft.com/default...;OfferProPhone

Kevin Yu
=======
"This posting is provided "AS IS" with no warranties, and confers no
rights."

Feb 22 '06 #23

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

11
by: Jason | last post by:
Let's say I have an html form with 20 or 30 fields in it. The form submits the fields via POST to a php page which updates a table in a database with the $_POST vars. Which makes more sense? ...
3
by: Robin Tucker | last post by:
Hi, I'm in the process of implementing a multi-user system containing an adjacency list (tree structure). I'm using a TIMESTAMP field on each record in the adjacency list in order to tell when...
7
by: laurenq uantrell | last post by:
Is there any reason to have a row that is the PK/Identity and a row that is datatype Timestamp in the same table? Does this in any way help speeding up row updates? Thanks, lq
3
by: Andreas | last post by:
Hello list, I suspect, this is a common issue for newbies. Is there a simple way to have an auto-updating timestamp like mysql has ? create table something ( id int4, sometext...
4
by: maricel | last post by:
I have the following base table structure - DDL: CREATE TABLE "ADMINISTRATOR"."T1" ( "C1" INTEGER NOT NULL ) IN "TEST_TS" ; ALTER TABLE "ADMINISTRATOR"."T1" ADD PRIMARY KEY
2
by: jay | last post by:
hi, Question on Load/import command. consider a sample table create table table_name ( col1 timestamp not null default current timestamp, col2 int, col3 int, col4 int, primary key(col1) );...
3
by: Tc | last post by:
Hi, I was curious, I am thinking of writing an application that loads a dataset from a database that resides on a server. The question I have is this, if multiple copies of the app will be...
33
by: bill | last post by:
In an application I am writing the user can define a series of steps to be followed. I save them in a sql database using the field "order" (a smallint) as the primary key. (there are in the range...
2
by: Roger | last post by:
I've got two tables in sql2005 which have an 'ntext' field when I linked the first table in access97 last week using an odbc data source the access-field type was 'memo' when I link the 2nd...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.