2016-01-14 69 views
-2

我正在嘗試編寫代碼,它使用用戶輸入來查詢數據庫,然後在VB 2015中顯示一個GridView。我得到一個編譯錯誤,無法弄清楚我做錯了什麼。BC30469:引用非共享成員需要一個對象引用

這裏是我所有的.VB編碼。出於測試目的,我有意將變量設置爲定義的數字。

Imports System.Data 
Imports System.Data.SqlClient 

Partial Class BeaversInc_GridTest 
    Inherits System.Web.UI.Page 

    Dim strConnectionString As String 

    Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     If Not IsPostBack Then 
      Dim conn As New SqlConnection(strConnectionString) 
      Dim drDataReader As SqlDataReader 
      Dim dtDataTable As New DataTable 
      Dim cmd As New SqlCommand 

      Dim intStoreNumber As Integer 
      Dim dteStartDate As Date 
      Dim dteEndDate As Date 

      intStoreNumber = "686" 
      dteStartDate = CDate("11/15/2013") 
      dteEndDate = CDate("11/15/2015") 

      conn.ConnectionString = ConfigurationManager.ConnectionStrings("ConnectionString1").ConnectionString 
      cmd.Connection = conn 
      cmd.CommandType = Data.CommandType.StoredProcedure 
      cmd.CommandText = "CriticalFails" 

      With cmd.Parameters 
       .AddWithValue("@StoreNumber", intStoreNumber) 
       .AddWithValue("@StartDate", dteStartDate) 
       .AddWithValue("@Enddate", dteEndDate) 
      End With 

      conn.Open() 
      drDataReader = SqlCommand.ExecuteReader 
      dtDataTable.Load(drDataReader) 
      GridView1.DataSource = dtDataTable 
      GridView1.DataBind() 
      conn.Close() 
     End If 
    End Sub 
End Class 
+0

拋出該exeption的代碼行是dtDataTable.Load(drDataReader)dtDataTable.Load(drDataReader)如果我將它們註釋掉,一切正常編譯。 –

+5

當然你的意思是'cmd.ExecuteReader()' –

+0

是的,謝謝。這是我第一次使用VB。所以在旅途中學習是 –

回答

0

行 「drDataReader = SqlCommand.ExecuteReader」 不應該是 「drDataReader = cmd.ExecuteReader」 ??

我認爲這是你的問題。 = D

+0

是的,這是它非常感謝你我認爲這是一個小的東西,我忽略 –

+0

我還有一個關於這個問題。現在一切都在按預期拉動和展示。現在唯一的問題是包含時間的數據庫的日期。我想限制顯示爲「mm/dd/yyy」 –

+0

嘗試轉換,如下所示:CAST(DateField AS DATE)或CONVERT(VARCHAR(10),DateField,101)。有很多方法可以做到這一點,你也可以在VB上格式化它。格式(DateField,「MM/dd/yyyy」)。 – Abner

相關問題