My scenario is this. i have a telephone table that needs to be updated (incase they need to change the existing one for the client) or delete (incase they wish to delete the existing number) or insert (incase the field is empty n a new no is inserted).
i already have two stored procedures which adds a new telephone and updates an existing one. whose parameters are:
EXECUTE @RC = [CUSTOMER_test].[dbo].[uspAddClientTel]
@ClientID
,@TelNo
,@TelTypeID
,@DetailsTypeID
,@SortNo
,@ResultTelID OUTPUT
EXECUTE @RC = [CUSTOMER_test].[dbo].[uspUpdateClientTel]
@TelID
,@TelNo
,@TelTypeID
,@DetailsTypeID
,@SortNo
,@ResultTelID OUTPUT
GO
a part of the query in form view
(SELECT TOP 1 F.tel_no FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id = @id ORDER BY sort_no ) AS fax,
(SELECT TOP 1 T.tel_no from TELEPHONE as T where T.tel_type_id = 1 OR T.tel_type_id = 2 AND T.client_id = @id ORDER BY sort_no) AS telephone,
(SELECT TOP 1 F.tel_id FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id = @id ORDER BY sort_no ) AS faxid ,
(SELECT TOP 1 T.tel_id from TELEPHONE as T where T.tel_type_id = 1 OR T.tel_type_id = 2 AND T.client_id = @id ORDER BY sort_no) AS telephoneid ,
CLIENT_ADDRESS.client_address_id
FROM ORGANIZATION AS O INNER JOIN CLIENT ON O.client_id = CLIENT.client_id
LEFT OUTER JOIN CLIENT_ADDRESS ON CLIENT.client_id = CLIENT_ADDRESS.client_id
WHERE (CLIENT.client_id = @id)"
so i have the telephone (as landline/mobile ) and the fax along with their IDs , if they already exist in the DB.
Now i need to create a function which takes in the arguments and thereby decides which sp to use depending on the arguments passed to it.
I’m completely lost here. any help on how to go about this function will be much appreciated. even links to tutorials will help!
thanks again!
p.s
before trying the function i did something like this , but its not consistent
protected void FrmClient_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
string TelTypeID;
string ResultTelID1 = "";
int intClientID = (int)e.Keys[0];
string strTelID = (string)e.OldValues["telephoneid"];
string strFaxID = (string)e.OldValues["faxid"];
SqlConnection conTel = new SqlConnection();
conTel.ConnectionString = Convert.ToString(ConfigurationManager.ConnectionStrings["CUSTOMERConnectionString"]);
conTel.Open();
if (strTelID != "")
{
string strtelcmd = ("SELECT tel_type_id, details_type_id, sort_no from TELEPHONE where tel_id =" + strTelID);
SqlCommand telcmd = new SqlCommand(strtelcmd, conTel);
SqlDataReader rdrTel = telcmd.ExecuteReader();
while (rdrTel.Read())
{
sdsClient.UpdateParameters["TelTypeID"].DefaultValue = rdrTel["tel_type_id"].ToString();
sdsClient.UpdateParameters["DetailsTypeID"].DefaultValue = rdrTel["details_type_id"].ToString();
sdsClient.UpdateParameters["SortNo"].DefaultValue = rdrTel["sort_no"].ToString();
}
rdrTel.Close();
}
else if (strFaxID != "")
{
string strfaxcmd = ("SELECT tel_type_id, details_type_id, sort_no from TELEPHONE where tel_id ="+ strFaxID);
SqlCommand faxcmd = new SqlCommand(strfaxcmd, conTel);
SqlDataReader rdrfax = faxcmd.ExecuteReader();
while (rdrfax.Read())
{
sdsClient.UpdateParameters["TelTypeID1"].DefaultValue = rdrfax["tel_type_id"].ToString();
sdsClient.UpdateParameters["DetailsTypeID1"].DefaultValue = rdrfax["details_type_id"].ToString();
sdsClient.UpdateParameters["SortNo1"].DefaultValue = rdrfax["sort_no"].ToString();
}
rdrfax.Close();
}
else if (strTelID == "")
{
SqlCommand cmdaddTel = new SqlCommand("uspAddClientTel",conTel);
cmdaddTel.CommandType = CommandType.StoredProcedure;
string strNewTel = (string)e.NewValues["telephone"];
if (strNewTel.Trim().StartsWith("06") || strNewTel.Trim().StartsWith("07") )
TelTypeID = "2";
else
TelTypeID = "1";
cmdaddTel.Parameters.Add(new SqlParameter("@ClientID", intClientID));
cmdaddTel.Parameters.Add(new SqlParameter("@TelNo",strNewTel ));
cmdaddTel.Parameters.Add(new SqlParameter("@TelTypeID", TelTypeID));
cmdaddTel.Parameters.Add(new SqlParameter("@DetailsTypeID", 1));
cmdaddTel.Parameters.Add(new SqlParameter("@SortNo1", 1 ));
cmdaddTel.Parameters.Add(new SqlParameter("@ResultTelID1", ResultTelID1));
SqlDataReader rdrAddFax = cmdaddTel.ExecuteReader();
}
else if (strFaxID == "")
{
SqlCommand cmdaddFax = new SqlCommand("uspAddClientTel", conTel);
cmdaddFax.CommandType = CommandType.StoredProcedure;
string strNewFax = (string)e.NewValues["fax"];
cmdaddFax.Parameters.Add(new SqlParameter("@ClientID", intClientID));
cmdaddFax.Parameters.Add(new SqlParameter("@TelNo", strNewFax));
cmdaddFax.Parameters.Add(new SqlParameter("@TelTypeID", 3));
cmdaddFax.Parameters.Add(new SqlParameter("@DetailsTypeID", 2));
cmdaddFax.Parameters.Add(new SqlParameter("@SortNo1", 1));
cmdaddFax.Parameters.Add(new SqlParameter("@ResultTelID1", ResultTelID1));
SqlDataReader rdrAddFax = cmdaddFax.ExecuteReader();
}
conTel.Close();
}
and the sps in the updatecommand of formview.
hi all i worked it out at the end. thought it might help beginner like me
and then you can call the function with appropriate parameters! bye!