我正在将Access查询转换为SQL视图。 Access查询之一具有用户可以在其中输入值的条件
where table1.id=[Enter the ID of the user]
有没有一种方法可以将这样的查询转换为T-SQL。对我来说,保持提示原样很重要。
答案 0 :(得分:5)
首先,没有什么理由可以转换为通过查询。
但是,SQL Server无法提示您进行访问(或说使用SQL Server的网站)。因此,GUI部件必须由您的网站创建,或者在这种情况下说访问客户端。
通常最好用按钮构建一些提示表单,因为从UI的角度来看,Access创建的那些自动提示非常差。
如前所述,很可能您可以继续使用访问查询。
但是,如果您需要pt查询,则可以使用访问代码询问/获取提示值,然后将其添加到查询中。
这将起作用:
Dim strSQL As String
Dim invoiceNum As String
strSQL = "select * from tblInvoices where invoiceNumber = "
invoiceNum = InputBox("enter Invoice Number")
If invoiceNum = "" Then Exit Sub
strSQL = strSQL & invoicenumber
With CurrentDb.QueryDefs("qryPassR")
.SQL = strSQL
End With
' now, docmd.OpenReport, or openform or
' whatever it is you wanted to do with the sql
但是,如前所述,对于报告等,我将构建一个不错的表单,允许用户输入一个值。查询提示对您的用户是纯粹的折磨,对用户而言根本不友好。
此外,以上内容假设您要打开某些报告或类似的报告。如果您需要记录集返回的数据,请使用以下命令:
Dim strSQL As String
Dim invoiceNum As String
dim rst As DAO.RecordSet
strSQL = "select * from tblInvoices where invoiceNumber = "
invoiceNum = InputBox("enter Invoice Number")
If invoiceNum = "" Then Exit Sub
strSQL = strSQL & invoicenumber
With CurrentDb.QueryDefs("qryPassR")
.SQL = strSQL
Set rst = .OpenRecordset
End With
最后但并非最不重要的一点,正如此处其他建议一样,您应该考虑使用带参数的存储过程,因为上面的内容需要进行SQL注入。