将参数添加到现有代码以将Access Query导出到Excel

时间:2017-05-18 13:06:22

标签: access-vba

'以下是我当前的代码,它将正确导出到excel工作簿和工作表。唯一的问题是我需要限制按月结束日期范围输出的数据(例如:2017年1月31日至2017年4月30日)以及工厂编号(例如:" 4101&# 34) 感谢任何帮助,非常感谢。

Public Function InventoryXport_4100()

Dim appXL As Object
Dim wb As Object
Dim wks As Object
Dim xlf As String
Dim rs As DAO.Recordset
Dim fld As Field
Dim intColCount As Integer

xlf = "Z:\COST ACCOUNTING INFO\Inventory Reports\MyFile.xlsx"

Set rs = CurrentDb.OpenRecordset("(QS)_Inventory") 
Set appXL = CreateObject("Excel.Application")
Set wb = appXL.Workbooks.Open(xlf)
Set wks = wb.Sheets("Inventory Xport") 'Sheet name

If rs.EOF = True Then
  MsgBox "No data", vbOKOnly
Exit Function
End If

With appXL
  .Application.worksheets("Inventory Xport").SELECT
  .Application.columns("A:AQ").SELECT
  .Application.columns.Clear
End With

intColCount = 1

For Each fld In rs.Fields
  wks.Cells(1, intColCount).Value = fld.Name
  intColCount = intColCount + 1
Next fld

appXL.displayalerts = False

wks.Range("A2").CopyFromRecordset rs

appXL.Visible = True

With appXL
  .Application.worksheets("Inventory Xport").SELECT
  .Application.columns("A:AQ").SELECT
  .Application.columns.AutoFit
  .Application.Range("A2").SELECT
  .Application.ActiveWindow.FreezePanes = True
End With

wb.Save
wb.Close
appXL.Quit

Set wb = Nothing
 rs.Close
Set rs = Nothing

End Function

1 个答案:

答案 0 :(得分:0)

您需要将过滤条件放入查询的where子句中:

public class ProgrammingLanguageInfo extends FragmentActivity{

private String languageName;
private int languageImageID;
private String languageDescription;
private String SHARED_PREFERENCES;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_pager);
    languageName = getIntent().getStringExtra("LANGUAGE_NAME");
    languageImageID = getIntent().getIntExtra("LANGUAGE_IMAGE", 0);
    languageDescription = getIntent().getStringExtra("LANGUAGE_DESCRIPTION");
    SHARED_PREFERENCES = getIntent().getStringExtra("LANGUAGE_SHARED_PREFERENCES");

    ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
    pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
}

private class MyPagerAdapter extends FragmentPagerAdapter {
    public MyPagerAdapter(FragmentManager fm) {
        super(fm);

    }

    @Override
    public Fragment getItem(int pos) {
        if(pos==0){
            return FirstFragment.newInstance(languageName, languageImageID, languageDescription, SHARED_PREFERENCES);
        }
        else{
            return SecondFragment.newInstance("aaa");
        }
    }

    @Override
    public int getCount() {
        return 2;
    }
}

如果您需要有关where子句语法的帮助,则需要发布查询结构(即至少提供要过滤的列的名称和数据类型)。此外,如果要将这些参数传递给函数,则需要将它们包含在具有合适参数名称的Function声明中,并用适当的数据类型替换每个Set rs = CurrentDb.OpenRecordset("SELECT * FROM [(QS)_Inventory] WHERE ...")

????

顺便说一下,为什么这是一个函数而不是一个Proc - 没有返回值甚至返回数据类型集?

跟随评论后

编辑

所以尝试像

这样的东西
Public Function InventoryXport_4100(prm1 As ????, prm2 As ????, prm3 As ????)