2013-02-19 78 views
0

我试图在Access中创建一个查询。简单访问查询

比方说,例如,我有四个领域:数字1-26,字母AZ,26名和26个城市,这样一个记录可能是:2,B,简,纽约

我想创建并保存一个新的查询: 数字字段,字母字段和名称字段。我希望字母字段在“A”或“B”上过滤,名称字段有一个表达式,因此它始终为0.

这将成为一个循环,因此它会创建13个查询(A/B,C/D等)。

看起来好像在VBA中有这个过程而不是Access宏构建器会更好,因为我不但必须循环这个过程,而且还有两个类似的表(相同的字段名称,不同的值)需要运行它。

+3

你想创建多个查询我不认为。您想要创建一个查询并使用宏/ VBA以多个输入参数运行它。 – JohnFx 2013-02-19 17:07:57

+1

使用查询设计窗口创建查询,然后在条件行上添加参数,例如:[[输入数字:]查看您是否获得了所需的数据,然后转到更高级的方法,例如使用一个参数的形式。 – Fionnuala 2013-02-19 17:18:24

回答

3

您可以运行使用记录您在VBA查询,然后将数据从那里开始工作:

Sub YourQueries(ByVal pstrCol1 As String, ByVal pstrCol2 As String, ByVal pstrCol3 As String, ByVal pstrCol4 As String) 
Dim rs As Recordset 
Dim strSQL As String 

' Change types above to match what's actually in the table 

strSQL = "SELECT YourColumn1, YourColumn2, YourColumn3, YourColumn4 " 
strSQL = strSQL & " WHERE " 
strSQL = strSQL & "YourColumn1='" & pstrCol1 & "'" 
strSQL = strSQL & " AND YourColumn1='" & pstrCol1 & "'" 
strSQL = strSQL & " AND YourColumn1='" & pstrCol1 & "'" 
strSQL = strSQL & " AND YourColumn1='" & pstrCol1 & "'" 

Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot) 
While Not rs.EOF 
    For i = 0 To 3 
    Debug.Print rs.Fields(i) & " is Column" & Format(i) 
    Next i 
    rs.MoveNext 
Wend 
rs.Close 
Set rs = Nothing 
End Sub