如何将带有提示的Access查询转换为T-SQL?

时间:2018-12-31 00:43:30

标签: sql-server ms-access

我正在将Access查询转换为SQL视图。 Access查询之一具有用户可以在其中输入值的条件

where table1.id=[Enter the ID of the user]

有没有一种方法可以将这样的查询转换为T-SQL。对我来说,保持提示原样很重要。

1 个答案:

答案 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注入。