Click here to Skip to main content
15,888,320 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
Index 0 is either negative or above rows count. Not able to understand how to resolve this problem:

C#
protected void loadData()
        {
            GlobalClass GC = new GlobalClass();

            PatientID = GC.getPatientID();
            string gQuery1 = "Select Treat_ID,Treat_Med_No,Treat_Due_Date,Treat_Issue_Date from Treatment_Details where Treat_P_ID = " + PatientID;
            Gbind1(gQuery1);


            string GetData = "Select P_Id,P_Name,P_Password,P_City,MedicineTaker, Treat_ID, Treat_Med_No,Format(Treat_Issue_Date, \"dd/mm/yyyy\") AS Treat_Issue_Date,Treat_Qty,Format(Treat_Due_Date, \"dd/mm/yyyy\") AS Treat_Due_Date,Treat_P_ID From patient_Details,Treatment_Details Where patient_Details.P_Id = Treatment_Details.Treat_P_ID AND patient_Details.P_Id = " + PatientID;

            DBTrac DBT = new DBTrac();

            DataSet dsData = DBT.returnDataset(GetData);

            DataView dv = dsData.Tables[0].DefaultView;
            dv.RowFilter = "Treat_ID >= MAX(Treat_ID)";

            label1.Text = dv[0]["P_Name"].ToString();
            label2.Text = dv[0]["MedicineTaker"].ToString();
            label4.Text = dv[0]["P_City"].ToString();
          
            label8.Text = dv[0]["Treat_Issue_Date"].ToString();
           label11.Text = dv[0]["Treat_Due_Date"].ToString();
           label14.Text = dv[0]["Treat_Qty"].ToString();
         

            
        }
Posted
Updated 9-Mar-15 23:22pm
v3
Comments
Subramanyam Shankar 10-Mar-15 5:07am    
Put a check for null and the number of rows you are getting if it is not null and the rows count is > 0 then try to get data by indexing.
MayankSemwal 10-Mar-15 5:28am    
it also throwing nullreferenceexception.object reference no set

Are you sure that the following code actually returns a value?
C#
PatientID = GC.getPatientID();

Where does PatientID get set when constructing this object?
 
Share this answer
 
Comments
MayankSemwal 10-Mar-15 5:47am    
Here the page which is requesing the above problem having code


private void button4_Click(object sender, EventArgs e)
{
string pID = "";
string PWD = "";

if (checkGrid.CompareTo("Name") == 0)
{
pID = gvPatientName.SelectedRows[0].Cells[0].Value.ToString();
PWD = gvPatientName.SelectedRows[0].Cells[1].Value.ToString();
}

if (checkGrid.CompareTo("City") == 0)
{
pID = gvPatientCity.SelectedRows[0].Cells[0].Value.ToString();
PWD = gvPatientCity.SelectedRows[0].Cells[1].Value.ToString();
}

if (checkGrid.CompareTo("Password") == 0)
{
pID = gvPatientPassword.SelectedRows[0].Cells[0].Value.ToString();
PWD = gvPatientPassword.SelectedRows[0].Cells[1].Value.ToString();
}

if (checkGrid.CompareTo("Due") == 0)
{
pID = gvPatientsDueDate.SelectedRows[0].Cells[0].Value.ToString();
PWD = gvPatientsDueDate.SelectedRows[0].Cells[1].Value.ToString();
}
GlobalClass GC = new GlobalClass();

GC.setPatientID(pID);

patientDetails PD = new patientDetails();
PD.Show();

}
Richard MacCutchan 10-Mar-15 5:52am    
Well some part is not working. you need to go through it with your debugger to find out why. in the code:

patientDetails PD = new patientDetails();
PD.Show();

Where are the new patient details set?
MayankSemwal 10-Mar-15 6:01am    
I have this code for it a part of that code

string PatientID = "";
string name = pnametxt.Text;


string city = ddlCities.Text;
string MedicineTaker = textBox1.Text;

string pwd = retypetxt.Text;


DateTime IssueDateMed = Convert.ToDateTime(comboImonth.SelectedItem + "/" + comboIday.SelectedItem + "/" + comboIYear.SelectedItem);
string TreatID="";
string MedNo = "";
string MedQty = comboqty.SelectedItem.ToString();
string MedPacket = "";
string dueDate = Convert.ToDateTime(Idate).ToString();

string getID = "Select MAX(P_Id) From patient_Details";

DBTrac DBT = new DBTrac();



if (DBT.returnOneValue(getID).ToString().CompareTo("") != 0)
{

PatientID = (Convert.ToInt32(DBT.returnOneValue(getID)) + 1).ToString();
}
else
{
PatientID = "1";
}

if (DBT.returnOneValue(getID).ToString().CompareTo("") != 0)
{

TreatID = (Convert.ToInt32(DBT.returnOneValue(getID)) + 1).ToString();
}
else
{
TreatID = "1";
}
string insertQryPatient = "Insert into patient_Details(P_name,P_Password,P_City,MedicineTaker) values ('" + name + "','" + pwd + "','" + city + "','" + MedicineTaker + "')";


DBT.exeQuery(insertQryPatient);

foreach (DataGridViewRow drvMedicine in gvMedicineParticulars.Rows)
{
MedNo = drvMedicine.Cells[0].Value.ToString();
MedPacket = drvMedicine.Cells[1].Value.ToString();

string insertQriTreat = "Insert into Treatment_Details(Treat_Med_No,Treat_Issue_Date,Treat_Qty,Treat_Due_Date,Treat_P_ID,Treat_P_Pkg) values ('" + MedNo + "',#" + IssueDateMed + "#," + MedQty + ",#" + dueDate + "#," + PatientID + "," + MedPacket + ")";

DBT.exeQuery(insertQriTreat);
}
Richard MacCutchan 10-Mar-15 6:14am    
As I said before, you need to use your debugger to find out which values/objects are incorrect. It is not possible for anyone to guess.
MayankSemwal 10-Mar-15 7:45am    
ok..
Put the following checks
C#
DataSet dsData = DBT.returnDataset(GetData);
if(dsdata!=null && dsdata.Tables.Count>0)
{
            DataView dv = dsData.Tables[0].DefaultView;
           
            dv.RowFilter = "Treat_ID >= MAX(Treat_ID)";
            
            if(dv!=null && dv.Table.Rows.Count>0)
           {
            label1.Text = dv[0]["P_Name"].ToString();
            label2.Text = dv[0]["MedicineTaker"].ToString();
            label4.Text = dv[0]["P_City"].ToString();
          
            label8.Text = dv[0]["Treat_Issue_Date"].ToString();
           label11.Text = dv[0]["Treat_Due_Date"].ToString();
           label14.Text = dv[0]["Treat_Qty"].ToString();
          }
}
 
Share this answer
 
Comments
MayankSemwal 10-Mar-15 5:53am    
Subramanayam@ Sir, did that it showing object does not contain a definition for tables
MayankSemwal 10-Mar-15 5:58am    
worked.But not getting user details from database
Subramanyam Shankar 10-Mar-15 6:04am    
obvious your data set is null right. check why you are not getting the data from the database.
MayankSemwal 10-Mar-15 6:09am    
can you tell me how to resolve that because i am newbee in software develoment.
MayankSemwal 10-Mar-15 6:12am    
GlobalClass GC = new GlobalClass();

PatientID = GC.getPatientID();
string gQuery1 = "Select Treat_ID,Treat_Med_No,Treat_Due_Date,Treat_Issue_Date from Treatment_Details where Treat_P_ID = " + PatientID;
Gbind1(gQuery1);


string GetData = "Select P_Id,P_Name,P_Password,P_City,MedicineTaker, Treat_ID, Treat_Med_No,Format(Treat_Issue_Date, \"dd/mm/yyyy\") AS Treat_Issue_Date,Treat_Qty,Format(Treat_Due_Date, \"dd/mm/yyyy\") AS Treat_Due_Date,Treat_P_ID From patient_Details,Treatment_Details Where patient_Details.P_Id = Treatment_Details.Treat_P_ID AND patient_Details.P_Id = " + PatientID;

DBTrac DBT = new DBTrac();

and code in dbtrac() :::--



public DataSet returnDataset(string Qry)
{
OleDbConnection Conn = new OleDbConnection(ConnStr);

OleDbDataAdapter daExeQry = new OleDbDataAdapter(Qry, Conn);

DataSet dsExeQry = new DataSet();

daExeQry.Fill(dsExeQry);

return dsExeQry;
}

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