-1

エラーが発生しました:

Fill: SelectCommand.Connection プロパティが初期化されていません。

private sub これは、データセットを内部ではなく.....で宣言しているためだと思いますが、プログラム中public classにデータセットを複数回使用する必要がありprivate subます....どのように定義すればよいですか? どうもありがとう。

Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Dim con As SqlConnection
Dim strsql As String
Dim da As New SqlDataAdapter(strsql, con)
Dim ds As New DataSet()
Dim strcon As String
Dim newmode As Boolean
Dim newrow As DataRow
Dim cb As SqlCommandBuilder

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    newmode = False
    'Dim con As SqlConnection
    'Dim strsql As String
    con = New SqlConnection("initial catalog=test;data source=nazi;integrated security=sspi;")
    strsql = "select*from table_1"
    con.Open()
    'Dim da As New SqlDataAdapter(strsql, con)
    'Dim ds As New DataSet()

    da.Fill(ds, "dd")

    TextBox1.DataBindings.Add(New Binding("text", ds, "dd.tel"))
    TextBox2.DataBindings.Add(New Binding("text", ds, "dd.nam"))
    TextBox3.DataBindings.Add(New Binding("text", ds, "dd.address"))
    da.update(ds, "dd")
    con.Close()
End Sub

Private Sub empty()
    textrecord.text = ""
    TextBox1.text = ""
    TextBox2.text = ""
    TextBox3.text = ""
    TextBox4.text = ""
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    newrow = ds.Tables("dd").NewRow
    newmode = True
    textrecord.BackColor = Color.Red
    textrecord.Text = "new record"
    MsgBox("enter new record and press save")
    Call empty()
End Sub

End Class
4

2 に答える 2

1

それ以外の:

Dim con As SqlConnection

追加してみてくださいNew

Dim con As New SqlConnection("initial catalog=test;...")

ただし、接続が必要になる直前にのみ接続を開き、すぐに閉じることをお勧めします。接続は、クラス変数ではなく、ブロック内のローカル変数にする必要があります!Using

于 2012-07-10T06:02:27.763 に答える
0

この行でグローバル レベルで DataAdapter を作成します。

Dim da As New SqlDataAdapter(strsql, con) 

ただし、この時点で strsql は空であり、後で変更しても dataadatpter 内で変更されないため、エラー メッセージが表示されます。

そのすべてのグローバル変数を保持することを主張する場合 (そして、@Andomar が指摘したように、それは悪い習慣と見なされます) 使用する直前に、正しい sqlstring を使用して DataAdapter を作成する必要があります。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load     
    newmode = False     
    con = New SqlConnection("initial catalog=test;data source=nazi;integrated security=sspi;") 
    strsql = "select*from table_1"     
    con.Open()     
    da = New SqlDataAdapter(strsql, con) '<- added this line here '  
    da.Fill(ds, "dd")      
    ....
    con.Close() 
End Sub 
于 2012-07-10T07:30:38.347 に答える