0

私はアプリケーションに取り組んでおり、質問があります。データベース内のテーブルにバインドされたコンボ ボックスがあります。コンボ ボックスでデータが選択されたときに、'textbox 1' と 'textbox2' が自動的に入力されるようにしたいと考えています。テーブルからのデータで、これは可能ですか? たとえば、コンボ ボックスで「Richard」を選択すると、「Richards」「Address1」と「Postcode」がテキスト ボックスに入力されます。これを行うサンプル コードがありますが、Int32 でしか動作しないようです。以下の挿入を参照してください。

Public Class Form1

Private Sub cmdGetByIdentifier_Click(sender As Object, e As EventArgs) Handles cmdGetByIdentifier.Click
    If Not String.IsNullOrWhiteSpace(txtIdentifier1.Text) Then
        Dim Identifier As Int32 = 0
        If Int32.TryParse(txtIdentifier1.Text, Identifier) Then
            txtCompanyName1.Text = GetCustomerNameByIdentifier(Identifier)
        Else
            MessageBox.Show("'" & txtIdentifier1.Text & "' is not a valid integer.")
        End If
    Else
        MessageBox.Show("Must enter an identifier to get a company name.")
    End If

End Sub

Private Sub cmdGetCustomer_Click(sender As Object, e As EventArgs) Handles cmdGetCustomer.Click
    If Not String.IsNullOrWhiteSpace(txtIdentifier2.Text) Then
        Dim Identifier As Int32 = 0
        If Int32.TryParse(txtIdentifier2.Text, Identifier) Then
            Dim Cust As Customer = GetCustomer(Identifier)
            txtCompanyName2.Text = Cust.Name
            txtContactName2.Text = Cust.ContactName
        Else
            MessageBox.Show("'" & txtIdentifier1.Text & "' is not a valid integer.")
        End If
    Else
        MessageBox.Show("Must enter an identifier to get a company name.")
    End If

End Sub
End Class


  Module DatabaseOperations
Public Function GetCustomerNameByIdentifier(ByVal Identifier As Int32) As String
    Dim CompanyName As String = ""
    Dim Builder As New OleDb.OleDbConnectionStringBuilder With {.Provider = "Microsoft.ACE.OLEDB.12.0", .DataSource = IO.Path.Combine(Application.StartupPath, "Database1.accdb")}
    Using cn As New OleDb.OleDbConnection With {.ConnectionString = Builder.ConnectionString}
        Using cmd As New OleDb.OleDbCommand With {.Connection = cn}
            cmd.CommandText = "SELECT CompanyName FROM Customer WHERE Identifier =@P1"
            Dim NameParameter As New OleDb.OleDbParameter With {.DbType = DbType.Int32, .ParameterName = "P1", .Value = Identifier}
            cmd.Parameters.Add(NameParameter)
            cn.Open()
            CompanyName = CStr(cmd.ExecuteScalar)
        End Using
    End Using
    Return CompanyName
End Function
Public Function GetCustomer(ByVal Identifier As Int32) As Customer
    Dim Customer As New Customer

    Dim CompanyName As String = ""
    Dim Builder As New OleDb.OleDbConnectionStringBuilder With {.Provider = "Microsoft.ACE.OLEDB.12.0", .DataSource = IO.Path.Combine(Application.StartupPath, "Database1.accdb")}
    Using cn As New OleDb.OleDbConnection With {.ConnectionString = Builder.ConnectionString}
        Using cmd As New OleDb.OleDbCommand With {.Connection = cn}
            cmd.CommandText = "SELECT Identifier, CompanyName,ContactName FROM Customer WHERE Identifier =@P1"
            Dim NameParameter As New OleDb.OleDbParameter With {.DbType = DbType.Int32, .ParameterName = "P1", .Value = Identifier}
            cmd.Parameters.Add(NameParameter)
            cn.Open()
            Dim Reader As OleDb.OleDbDataReader = cmd.ExecuteReader
            If Reader.HasRows Then
                Reader.Read()
                Customer.Identifier = Identifier
                Customer.Name = Reader.GetString(1)
                Customer.ContactName = Reader.GetString(2)
            End If
        End Using
    End Using

    Return Customer

End Function
End Module


Public Class Customer
   Public Property Identifier As Int32
   Public Property Name As String
   Public Property ContactName As String
   Public Sub New()
   End Sub
End Class
4

2 に答える 2

0

1.以下のリンクを参照して、Sqlサーバーからデータを取得してください

2. ID をパラメーターとしてデータを返す関数を作成します Dataadapter with dataset - sql server

于 2013-10-20T19:08:22.467 に答える
0

Access の使用について 100% 確信があるわけではありませんが、理論的には顧客オブジェクトを使用することになります。

SQLストアドプロシージャがあります

Select * from Customers where id=@ID
...

その後、クラス

Public Class Customer
public property ID as Integer
Public property Name as string
public Property Surname as string
....
End Class

データにアクセスするコードでは、次のようなものになります

Public Function GetCustomerDetailsByID (byval CustomerID as Integer) As Customer ' Or whatever you want to return it as
Dim myCust as New Customer
' Code to access SQL
' Call your SQL procedure called GetCustByID(CustID)

With myCust
 .Name = valueFromYourProcedure
End With

End Function

クライアント アプリでは、上記を呼び出してから、値をコントロールに割り当てます。

Dim SingleCustomer as Customer = GetCustomerDetailsByID(1) ' i.e. value form your dropdown

txtBoxName.Text = SingleCustomer.Name

これは非常に大まかな例であり、完全ではありませんが、これをどのように行うかについてのアイデアを提供するはずです。上記を行うには多くの方法があり、誰もが独自の方法を持っているため、それに慣れるために追加の調査を行う必要がある場合があります.

お役に立てれば

于 2013-10-21T20:04:41.073 に答える