2010-04-27 67 views
0

我碰到下面的错误的实例:C#:对象引用未设置到对象

Object reference not set to an instance of an object

这是我的C夏普代码:

 DataTable tableAcces = dsAcces.Tables["dsPrinterAcces"]; 
     DataTable tableMDF = dsAcces.Tables["dsPrinterMDF"]; 
     DataRow newrow = null; 


     foreach(DataRow dr in tableAcces.Rows) 
     { 
      newrow = tableMDF.NewRow(); 

     newrow["PRINTER_ID"] = dr["PRINTER_ID"]; 
     newrow["MERK"] = dr["MERK"]; 
     newrow["MODEL"] = dr["MODEL"]; 
     newrow["LOKAAL_ID"] = dr["LOKAAL_ID"]; 

     tableMDF.Rows.Add(newrow); 
     } 

     daMDF.Update(dsMDF, "dsPrinterMDF"); 
     lblSucces.Text = "Gelukt. De tabel printers is overgezet."; 
    } 

在这一行中,他抛出的错误:

newrow = tableMDF.NewRow(); 

非常感谢,

Vincent

+0

是tableMDF空? – 2010-04-27 08:12:03

回答

2

tableMDF为空。你需要找出为什么dsAcces.Tables["dsPrinterMDF"]在顶部返回null。

+0

这是一张空桌子,也许是这个问题? – Vinzcent 2010-04-27 08:13:43

+0

这是可能的,但我希望该设置包含零行的表格对象。你确定你的表名是否正确? – Paolo 2010-04-27 08:43:56

+0

我发现了这个错误。这是一个错字。 This:DataTable tableMDF = dsAcces.Tables [“dsPrinterMDF”]; - > DataTable tableMDF = dsMDF.Tables [“dsPrinterMDF”]; – Vinzcent 2010-04-27 09:22:49

0

似乎dsAcces.Tables [“dsPrinterMDF”]返回null而不是表。也许这张表没有找到,或者你有一个错字。

0

看起来像tableMDF为空,检查是否有表dsPrinterMDF

0
dsAcces.Tables["dsPrinterMDF"] 

看起来是空的,所以确保它提供了一个DataTable。我猜标识符dsPrinterMDF不存在(例如具有不同的大小写)

0

这里是我的所有代码:

ng connStringAcces = ConfigurationManager.ConnectionStrings["RandAppAcces"].ToString(); 
    connAcces = new OleDbConnection(connStringAcces); 


    daAcces = new OleDbDataAdapter(); 


    string sqlSelectAcces = "SELECT * FROM tblPrinter"; 
    OleDbCommand cmdAcces = new OleDbCommand(sqlSelectAcces, connAcces); 
    daAcces.SelectCommand = cmdAcces; 

    string connStringMDF = ConfigurationManager.ConnectionStrings["RandAppMDF"].ToString(); 
    connMDF = new SqlConnection(connStringMDF); 

    daMDF = new SqlDataAdapter(); 

    string sqlSelectMDF = "SELECT * FROM tblPrinter"; 
    SqlCommand cmdMDF = new SqlCommand(sqlSelectMDF, connMDF); 
    daMDF.SelectCommand = cmdMDF; 

    string sqlInsertMDF = @"INSERT INTO tblPrinter(PRINTER_ID, MERK, MODEL, LOKAAL_ID)" + 
    @"VALUES (@PRINTER_ID, @MERK, @MODEL, @LOKAAL_ID)"; 

    cmdMDF = new SqlCommand(sqlInsertMDF, connMDF); 

    cmdMDF.Parameters.Add("@PRINTER_ID", SqlDbType.Int, 0, "PRINTER_ID"); 
    cmdMDF.Parameters.Add("@MERK", SqlDbType.NVarChar, 100, "MERK"); 
    cmdMDF.Parameters.Add("@MODEL", SqlDbType.NVarChar, 100, "MODEL"); 
    cmdMDF.Parameters.Add("@LOKAAL_ID", SqlDbType.Int, 0, "LOKAAL_ID"); 

    daMDF.InsertCommand = cmdMDF; 

    dsMDF = new DataSet(); 
    dsAcces = new DataSet(); 

    daMDF.Fill(dsMDF, "dsPrinterMDF"); 
    daAcces.Fill(dsAcces, "dsPrinterAcces"); 

    DataTable tableAcces = dsAcces.Tables["dsPrinterAcces"]; 
    DataTable tableMDF = dsAcces.Tables["dsPrinterMDF"]; 
    DataRow newrow = null; 


    foreach(DataRow dr in tableAcces.Rows) 
    { 
     newrow = tableMDF.NewRow(); 

    newrow["PRINTER_ID"] = dr["PRINTER_ID"]; 
    newrow["MERK"] = dr["MERK"]; 
    newrow["MODEL"] = dr["MODEL"]; 
    newrow["LOKAAL_ID"] = dr["LOKAAL_ID"]; 

    tableMDF.Rows.Add(newrow); 
    } 
+1

@Vinzcent - 为了将来的参考,这不是一个传统的论坛 - 你可以编辑你的问题(和你的答案),所以你需要做的就是将上述问题放在原始问题中。 – Murph 2010-04-27 08:21:13

相关问题