当前位置:编程学习 > C#/ASP.NET >>

未将对象引用设置到对象的实例。哪里的问题?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        myad = New SqlClient.SqlDataAdapter("select * from yhxx where 1=2", myconn)
        myad.Fill(myset, "yhxx")
        myset.Tables("yhxx").PrimaryKey = Nothing
        myset.Tables("yhxx").Rows.Clear()
        myset.Tables("yhxx").Columns.Clear()
        Dim mycol As New DataColumn
        Dim myint As Int16
        mycol.DataType = myint.GetType
        mycol.ColumnName = "序号"
        myset.Tables("yhxx").Columns.Add(mycol)
        mystr = "select * from yhxx WHERE 时间 >= '" & Me.DateTimePicker1.Value.Date & "' and 时间 <= '" & Me.DateTimePicker2.Value.Date & "'and 单位 like '%" & TextBox2.Text & "%' and 整改情况 = '未整改'"
        myad = New SqlClient.SqlDataAdapter(mystr, myconn)
        myad.Fill(myset, "yhxx")
        Me.DataGridView1.DataSource = myset.Tables("yhxx")
        Dim myrow As DataRow
        myint = 0
        For Each myrow In myset.Tables("yhxx").Rows
            myrow.BeginEdit()
            myint += 1
            myrow.Item("序号") = myint
            myrow.EndEdit()
        Next
    End Sub
这个是form中的查询BUTTON代码。

Private Sub DataGridView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.DoubleClick
        Dim mykey(1) As DataColumn
        mykey(0) = myset.Tables("yhxx").Columns("id")
        myset.Tables("yhxx").PrimaryKey = mykey
        Dim myrow6 As DataRow
        myrow6 = myset.Tables("yhxx").Rows.Find(Me.DataGridView1.Item(1, Me.DataGridView1.CurrentRow.Index).Value)
        If myrow6 Is Nothing Then
            myset.Tables("yhxx").PrimaryKey = mykey
            myrow6 = myset.Tables("yhxx").Rows.Find(Me.DataGridView1.Item(1, Me.DataGridView1.CurrentRow.Index).Value)
        Else
            a = Me.DataGridView1.CurrentRow.Cells("专业").Value
            b = myrow6.Item("单位")
            c = myrow6.Item("时间")
            d = myrow6.Item("地点")
            l = myrow6.Item("班次")
            f = myrow6.Item("检查人")
            g = myrow6.Item("责任人")
            h = myrow6.Item("限期时间")
            i = myrow6.Item("整改意见")
            j = myrow6.Item("存在隐患")
            k = myrow6.Item(0)
        End If
        Dim w As yhzg = New yhzg()
        w.Show()
    End Sub
上段是DATAGRIDVIEW双击弹出新窗口代码。
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If Me.CheckBox1.Checked = True Then

            Try
                If Me.Txtid.Text = "" Then
                    MsgBox("不能修改!")
                Else
                    Dim mycomm As SqlClient.SqlCommand = New SqlClient.SqlCommand("", myconn)
                    myconn.Open()
  mycomm.CommandText = "update yhxx set 专业='" & Me.Txtzy.Text & "' where id=" & Me.Txtid.Text
  mycomm.ExecuteNonQuery()
  mycomm.CommandText = "update yhxx set 单位='" & Me.cmbdw.Text & "' where id=" & Me.Txtid.Text
  mycomm.ExecuteNonQuery()
  mycomm.CommandText = "update yhxx set 时间='" & Me.dtp1.Text & "' where id=" & Me.Txtid.Text
  mycomm.ExecuteNonQuery()
  mycomm.CommandText = "update yhxx set 地点='" & Me.txtdd.Text & "' where id=" & Me.Txtid.Text
   mycomm.ExecuteNonQuery()
                    myconn.Close()
                End If
            Catch ex As Exception
            End Try
        Else
            MsgBox("未成成功保存,如整改完成请选中是否整改!")
        End If
        MsgBox("保存成功!")
    End Sub
上段是弹出新窗口后修改保存代码。
现在出现一个问题,就是当修改完成后如何实现DATAGRIDVIEW1的自动刷新?还一个问题就是修改完毕后,再点击最上面那个BUTTON1的代码时提示myset.Tables("yhxx").Columns.Clear()此列是主键的一部分,因此不能移除。,这是在最上面那段代码红色部分没加的时候,后来加了红色部分那段代码,现在却出现未将对象引用设置到对象的实例。这个是哪里的问题?请教 了

--------------------编程问答-------------------- PrimaryKey 禁止为空
--------------------编程问答-------------------- 主鍵給你修改成空了吧。 --------------------编程问答-------------------- 我晕死,在没加myset.Tables("yhxx").PrimaryKey   =   Nothing 
之前时提示此列是主键的一部分,因此不能移除
加了上面那句成了未将对象引用设置到对象的实例
那到底应该怎么个改法 --------------------编程问答-------------------- 设置断点看看吧
我知道我以前也出现这种报错,最后发现是dim***as 缺少new的事~~~~ --------------------编程问答-------------------- 唉 ,还请高手帮下! --------------------编程问答-------------------- 不会没人会吧真晕! --------------------编程问答--------------------       你把红色不去掉 然后直接设置 count= 0 看看效果也是清楚表的结构 
      myset.Tables("yhxx").Rows.count= 0 
      myset.Tables("yhxx").Columns.count =0 --------------------编程问答-------------------- 楼主多此一举啊 你完全可以定义个自己构造的datatable 然后加到dataset里面去吗 然后再把你要的结果fill进去 上面
   myad   =   New   SqlClient.SqlDataAdapter("select   *   from   yhxx   where   1=2",   myconn) 
                myad.Fill(myset,   "yhxx") 
                myset.Tables("yhxx").PrimaryKey   =   Nothing 
                myset.Tables("yhxx").Rows.Clear() 
                myset.Tables("yhxx").Columns.Clear() 
完全是废代码 既然你要一个空表 要写这些干什么?  --------------------编程问答-------------------- 我是想自动刷新一下表 --------------------编程问答-------------------- 不用new 关键声明变量就会出现"未将对象引用设置到对象的实例"
--------------------编程问答-------------------- 未创建实例,就是未New ,定位到出错的位置,看看是哪一个变量未New 。
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,