Solved

A Relation named 'Patient' already belongs to this DataSet.  How do you get a duplicate relation when only one relation is configured?

Posted on 2008-10-24
4
1,354 Views
Last Modified: 2010-04-21
I am trying to setup a relation between two tables but keep getting this error message trapped.

A Relation named 'Patient' already belongs to this DataSet.

Can someone point me in the right direction?

Here is my code:
----------------------------------------------------------------------------------------------------------------------------------------------

protected void btnPreAuthSearch_Click(object sender, Infragistics.WebUI.WebDataInput.ButtonEventArgs e)
    {
        bool authenticated;
            authenticated = Convert.ToBoolean(Session["authenticated"]);
            
            
            if (authenticated)
            {
                  PopulatePatientDS();
                  this.PreAuthWebGrid1.DataSource = HDSDataSet.Tables["Patient"];
                  this.PreAuthWebGrid1.DisplayLayout.AutoGenerateColumns = false;
                  PreAuthWebGrid1.DisplayLayout.Bands.Clear();
                  this.PreAuthWebGrid1.DataBind();
            }

      }

      //------------   Patient Search Tab
      public DataSet HDSDataSet
      {
            get
            {
                  if (Cache["HDSDataSet"] == null)
                        Cache["HDSDataSet"] = new DataSet("HDSDataSet");

                  return (DataSet)Cache["HDSDataSet"];
            }
      }
      //------------   Patient Search Tab
      protected void PopulatePatientDS()
      {
            SqlDataAdapter sqlDA = CreatePatientAdapter();
        SqlDataAdapter sqlDAPreAuth = CreatePreAuthAdapter();
            HDSDataSet.Clear();
            sqlDA.FillSchema(HDSDataSet, SchemaType.Source);
            sqlDA.Fill(HDSDataSet, "Patient");
        sqlDAPreAuth.Fill(HDSDataSet, "Pre_Auth");

        try
        {
            HDSDataSet.Relations.Add("Patient",---------------------------------------------------DATA RELATION SET HERE   ---------------------------------
                HDSDataSet.Tables["Patient"].Columns["MPI"],
                HDSDataSet.Tables["Pre_Auth"].Columns["MPI"]);
        }
        catch (System.Exception x)
        {
            string s = x.Message;-----------------------------------------------------------------------ERROR is TRAPPED HERE  ----------------------------
            string m = s;
        }

       
    }



      //------------   Patient Adapter
      protected SqlDataAdapter CreatePatientAdapter()
      {

        string physicianNPI;
        physicianNPI = Session["physicianNPI"].ToString();

            SqlConnection conn = new SqlConnection(ConnString);
            SqlCommand cmd = new SqlCommand(SearchString, conn);
        cmd.Parameters.Add("@REFERRING_PROVIDER_NPI", SqlDbType.VarChar).Value = physicianNPI;
        cmd.Parameters.Add(new SqlParameter("@SearchFn", tbPreAuthFname.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchLn", tbPreAuthLname.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchAddress", tbPreAuthAddress.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchDOB", tbPreAuthDOB.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchSSN", tbPreAuthSSN.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchDL", tbPreAuthDL.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchPhn", tbPreAuthPhone.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchBillingId", tbPreAuthAccountNum.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchSex", tbPreAuthSex.Text));


            SqlDataAdapter sqlDA = new SqlDataAdapter(cmd);
            return sqlDA;
      }

      //------------   Patient Search Tab
      private String ConnString
      {
            get
            {
                  //HDS ConnectionString comes from the Web.Config
                  return ConfigurationManager.ConnectionStrings["123121ConnectionString"].ConnectionString;

            }
      }

      //------------   Patient Search Tab
      private String SearchString
      {
            get
            {
            String srchCmd = "SELECT PATIENT.MPI, PATIENT.LAST_NAME, PATIENT.FIRST_NAME, PRIMARY_INSURANCE.PLAN_NAME, PATIENT.DATE_OF_BIRTH, PATIENT.SEX FROM PATIENT LEFT JOIN PRIMARY_INSURANCE ON PATIENT.MPI = PRIMARY_INSURANCE.MPI WHERE PATIENT.LAST_NAME = @SearchLn OR PATIENT.FIRST_NAME = @SearchFn";
                  return srchCmd;

            }
    }



    //------------   PreAuthAdapter
    protected SqlDataAdapter CreatePreAuthAdapter()
    {

        SqlConnection conn = new SqlConnection(ConnString);
        SqlCommand cmd = new SqlCommand(PreAuthSearchString, conn);
        SqlDataAdapter sqlDAPreAuth = new SqlDataAdapter(cmd);
        return sqlDAPreAuth;
    }

   

    //------------   PreAuth Search Command
    private String PreAuthSearchString
    {
        get
        {
            String srchCmd = "SELECT PRE_AUTH.MPI, PRE_AUTH.INSURANCE_NAME, PRE_AUTH.PRE_AUTH_NUM, PRE_AUTH.EXPIRY_DATE, PRE_AUTH.VISITS FROM PRE_AUTH";
            return srchCmd;

        }
    }


0
Comment
Question by:kwh3856
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
4 Comments
 
LVL 11

Accepted Solution

by:
jgordos earned 500 total points
ID: 22798730
SqlDataAdapter sqlDA = CreatePatientAdapter();
SqlDataAdapter sqlDAPreAuth = CreatePreAuthAdapter();
HDSDataSet.Clear();
sqlDA.FillSchema(HDSDataSet, SchemaType.Source);
sqlDA.Fill(HDSDataSet, "Patient");                                           <------------ You added PATIENT here....
sqlDAPreAuth.Fill(HDSDataSet, "Pre_Auth");
try
{
HDSDataSet.Relations.Add("Patient",                                    
HDSDataSet.Tables["Patient"].Columns["MPI"],                          <------------- And again, here...
HDSDataSet.Tables["Pre_Auth"].Columns["MPI"]);
}


0
 

Author Comment

by:kwh3856
ID: 22811711
jgordos,
If I do not do the .fill on the table then when I look at my dataset there are no records on the table.  Is there some other way to accomplish this task?

Thanks
Kenny
0
 

Author Comment

by:kwh3856
ID: 22826949
Resolved Problem with the remove command.  I think the actual problem was due to caching.
 

protected void PopulatePatientDS()
{
SqlDataAdapter sqlDA = CreatePatientAdapter();
SqlDataAdapter sqlDAPreAuth = CreatePreAuthAdapter();
HDSDataSet.Clear();
sqlDA.FillSchema(HDSDataSet, SchemaType.Source);
sqlDA.Fill(HDSDataSet, "Patient");
sqlDAPreAuth.Fill(HDSDataSet, "Pre_Auth");
 

try
{
HDSDataSet.Relations.Remove("PatientRelation"); ------------------------------------------------Fixed problem-------------------------------
HDSDataSet.Relations.Add("PatientRelation",
HDSDataSet.Tables["Patient"].Columns["MPI"],
HDSDataSet.Tables["Pre_Auth"].Columns["MPI"]);
}
catch (System.Exception x)
{
string s = x.Message;
string m = s;
}
 
this.PreAuthWebGrid1.DataSource = HDSDataSet.Tables["Patient"];
this.PreAuthWebGrid1.DisplayLayout.AutoGenerateColumns = false;
PreAuthWebGrid1.DisplayLayout.Bands.Clear();
this.PreAuthWebGrid1.DataBind();


 
0
 

Author Closing Comment

by:kwh3856
ID: 31509744
jgordos,
I resolved the problem whith the remove command.  I wanted to award you the points for trying to help me.  Thanks for your assistance.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
JQuery Detecting page post back 6 34
c# DateTime Format validation 4 91
Connect Gridview column to Textbox in C# 2 55
How does this modal gets closed? 6 41
In order to hide the "ugly" records selectors (triangles) in the rowheaders, here are some suggestions. Microsoft doesn't have a direct method/property to do it. You can only hide the rowheader column. First solution, the easy way The first sol…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
Suggested Courses

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question