0

この特定のフォームのデータベースからデータを取得できないアプリケーションがありますが、他のフォームは正常に動作しています。

このフォームを使用してデータベースからデータを取得し、そのデータを別のフォームのラベルに表示しています。

データをフェッチするためのコードは次のとおりです。

string PName, DName, Psex, PPhoneNo, PAddress, Treatment, Teethno, PAge, Amount;

SqlDataAdapter a = new SqlDataAdapter("Select bills.BillNo,bills.PName,bills.DName,bills.PAge,bills.PSex,bills.PPhoneNo,bills.PAddress,bills.Treatment,bills.Amount,bills.Teethno,addpro.Medicines from bills,addpro where bills.BillNo=" + bno, Program.con);

DataTable t = new DataTable();
a.Fill(t);
PAge = Convert.ToString(t.Rows[3]);
Amount = Convert.ToString(t.Rows[8]);
PName = Convert.ToString(t.Rows[1]);
DName = Convert.ToString(t.Rows[2]);
Psex = Convert.ToString(t.Rows[4]);
PPhoneNo = Convert.ToString(t.Rows[5]);
PAddress = Convert.ToString(t.Rows[6]);
Treatment = Convert.ToString(t.Rows[7]);
Teethno = Convert.ToString(t.Rows[9]);

frmPrint sa=new frmPrint();
sa.start(bno, PAge, Amount, PName, DName, Psex, PPhoneNo, PAddress, Treatment,  Teethno);

これからのデータをラベルに表示する次のフォームを読み込もうとするとDataTable、次のエラーが発生します:-

位置 3 には行がありません。

4

3 に答える 3

0

使用する必要があるようです[Columns]

DataTable t = new DataTable();
a.Fill(t);
PAge = Convert.ToString(t.Rows[0]["ColumnsName"]);  
// and so on
于 2013-04-13T08:09:06.067 に答える
0

行を使用していて、列を使用したい場合:

foreach(DataRow row in t.Rows)
{
        PAge = row["PAge"].ToString();
        Amount = row["Amount"].ToString();
        PName = row["PName"].ToString();
        DName = row["DName"].ToString();
        Psex = row["PSex"].ToString();
        PPhoneNo = row["PPhoneNo"].ToString();
        PAddress = row["PAddress"].ToString();
        Treatment = row["Treatment"].ToString();
        Teethno = row["Teethno"].ToString();
}

番号を使用して列を識別する代わりに、名前を使用します。何らかの理由でクエリの順序が変更されたとしても、コードに影響はありません。序数を使用した場合、順序が変更されるため、row[n] コードも変更する必要があります。

于 2013-04-13T08:09:10.810 に答える
0

フィールドごとに異なる行にアクセスしています。最初の行にアクセスしてから、別の列にアクセスする必要があります。

t.Rows[0].Columns[0]
t.Rows[0].Columns[1]
t.Rows[0].Columns[2]
t.Rows[0].Columns[3]
...
于 2013-04-13T08:06:51.907 に答える