【发布时间】:2014-01-15 22:22:18
【问题描述】:
我目前正在尝试向表中添加新记录,我们将其命名为 'tbl1'。这包含字段
ID | SID | Payment | PaymentDate | TID
SID 字段当前从另一个表中获取其值,我们称之为 'tbl2' 这包含字段
SID | Forename | Surname | Location
我有一个向 tbl1 添加付款记录的表单,它成功添加了 ID、Payment 和 PaymentDate 字段。这一切都很好,但是表单不包含 SID 的提交框,这是因为用户很难记住 SID。 因此,他们在表单中输入了名字和用户名。
我将如何从 tbl2 中检索 SID 给定表单中的名字和姓氏,然后将 SID 应用到 tbl1
我尝试过双 SQL 语句,例如:
SELECT tbl2.Forename, tbl2.Surname FROM tbl2 WHERE tbl2.Forename = (FromInputForename) , tbl2.surname = (FOrmInputSurname)
据我了解,这应该会得到与之关联的记录,然后我应该能够从中检索 SID?
但这并没有奏效,如果你明白我来自哪里,你能帮帮我吗?
我试过了:
'Declaring the connection route
Public connstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data TestDB.accdb"
'The cursor
Public conn As New OleDbConnection(connstring)
Private Sub Addrecordbtn_Click(sender As Object, e As EventArgs) Handles Addrecordbtn.Click
SPaid = Paidtxt.Text
'Checking if connection is open.
If conn.State = ConnectionState.Closed Then
conn.Open()
End If
'SQL Query command for ADDING
Dim sqlquery1 As String = "INSERT INTO tbl1 (Payment,PaymentDate) VALUES (@SPaid,@todaysdate)"
'Creating the command itself.
Dim sqlcommand As New OleDbCommand
With sqlcommand
'Telling what query
.CommandText = sqlquery
' Paramaters to add with values.
.Parameters.AddWithValue("@SPaid", SPaid)
.Parameters.AddWithValue("@todaysdate", Today.Date)
' Selecting the connection
.Connection = conn
' Executing the non query
.ExecuteNonQuery()
End With
Dim sqlquery2 As String = "SELECT tbl2.Forename, tbl2.Surname FROM tbl2 WHERE tbl2.Forename = Forenametxt.text , tbl2.surname = Surnametxt.text"
Dim da As OleDbDataAdapter = New OleDbDataAdapter(sqlquery2, conn)
Dim ds As DataSet = New DataSet
da.Fill(ds, "Payments")
Dim dt As DataTable = ds.Tables("Payments")
'Will then go on to display data.
conn.Close()
End Sub
【问题讨论】:
-
好吧,首先您的查询没有选择 SID,它选择了
Forename和Surname。该查询不会返回您没有告诉它返回的任何数据。除此之外,您如何查询数据库?你能告诉我们你用来构建和执行这个查询的代码吗? -
已更新问题答案。
-
正如我之前提到的,您的第二个 SQL 语句不会从
tbl2检索 SID。您需要将该列添加到您的SELECT,然后才能使用它。如果您想将 SIDINSERT转换为tbl1,我还建议您交换语句的位置