小编APr*_*ugh的帖子

ADO和DAO之间的区别

这不是一个关于哪个更好的问题,而是一个关于它们在功能上有何不同的问题.我遇到的问题已经解决了,但我很好奇为什么会发生这种情况.

背景 - 使用Excel vba从Access数据库中提取数据.当用户单击按钮时,会从Access中提取记录集,并将各种数据填充到电子表格中.然后,从另一个查询中提取另一个记录集以填充电子表格的另一部分.

ADO做了什么 - ADO非常适合我的第一个记录集.但是,我的第二个记录集转到Access中的查询,运行,并且不返回任何行.如果我在Access中运行此查询,它会打开(大约3到4秒后).此查询具有多个连接,计算项,限制以及可能的Union查询(我尝试了许多不同的方式,有/无联合等).我尝试关闭并重新打开ado连接.我尝试更改超时值,我甚至测试使用ADO命令运行对此数据的Make表查询,然后从表中取出(这样做顺便说一句,但不是最好的情况,因为数据不断变化,每次有人使用此工具时,我都不想运行make table查询.

所以,我把第二个数据拉到了DAO,看,它有效.第一个数据拉取仍然是ADO(我通常更喜欢使用),但现在考虑将其更改为DAO,因为我宁愿在代码中使用一种数据访问方法.

那么,有人可以向我解释为什么ADO不会在一个案例中提取数据,但DAO会吗?同样,这纯粹是出于提供信息的目的.

excel ms-access vba dao ado

19
推荐指数
2
解决办法
3万
查看次数

如何在ObjectListView中过滤多个SubItems

所以,我试图以编程方式将ModelFilter添加到我的ObjectListView中,它将分别查看两个(或更多)列和过滤器.目前,我认为ObjectListView只支持一个过滤器,但我可能在代码/文档中遗漏了一些东西.

例如,我的一个预期过滤器是查看"活动"列,其值为"A"或"T".另一栏是主管姓名.所以,我想找到Supervisor name ="Smith"和Active ="A"的所有条目.

我可以使用TextMatchFilter单独使用过滤器来处理这些选项中的任何一个,但无法弄清楚如何同时使两者同时工作.

我看到的一个小问题是,如果超级用户名包含"A",那么使用标准过滤器将返回整行.我已经能够通过以编程方式将列的Searchable属性设置为false来解决这个问题,如果我不想查看它们,然后在列表被过滤后再将它们重新打开.但是,我有一种感觉,如果我将Searchable打开为Supervisor列,我将得到不需要的结果.

有没有人知道如何让过滤器在多个列上工作,只使用每个过滤器的指示列?

(我没有示例代码来帮助解决这个问题.但是,如果你真的想看看我对我的过滤代码有什么,我会很乐意添加它;但它在VB中却是如此).

当前代码 - 查看用户选择的值(searchMeth)并启用对该列的搜索.然后它搜索txtSearch框中输入的内容.但是,除此之外,我还想为Supervisor添加一个额外的过滤器.(参见AndAlso评论

    olvEmps.UseFiltering = True
    OlvColumn1.Searchable = False
    OlvColumn2.Searchable = False
    OlvColumn4.Searchable = False
    OlvColumn3.Searchable = False
    OlvColumn5.Searchable = False

    Select Case searchMeth
        Case "Name"
            OlvColumn1.Searchable = True
        Case "Employee Number"
            OlvColumn2.Searchable = True
        Case "Department"
            OlvColumn3.Searchable = True
    End Select

    olvEmps.OwnerDraw = True
    Dim tFilter As BrightIdeasSoftware.TextMatchFilter = BrightIdeasSoftware.TextMatchFilter.Contains(olvEmps, txtSearch.Text)
    'andalso olvColumn5 = supeName?

    olvEmps.ModelFilter = tFilter
    olvEmps.DefaultRenderer = New BrightIdeasSoftware.HighlightTextRenderer(tFilter)

    OlvColumn1.Searchable = True
    OlvColumn2.Searchable = True
    OlvColumn3.Searchable = …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net winforms objectlistview

1
推荐指数
1
解决办法
3995
查看次数

将 xls 文件转换为 csv,但添加了额外的行?

所以,我正在尝试将一些 xls 文件转换为 csv,除了一部分之外,一切都很好。Excel 互操作中的 SaveAs 函数似乎导出所有行(包括空白行)。当我使用记事本查看文件时,我可以看到这些行。(我期望的所有行,有两个单引号的 15 行,然后其余的都是空白的)。然后我有一个存储过程,它接受这个 csv 并导入到所需的表中(这适用于已手动转换为 csv 的电子表格(例如打开、文件-> 另存为等)

这是我在代码中用于 SavesAs 的代码行。我曾尝试将 xlCSV、xlCSVWindows 和 xlCSVDOS 作为我的文件格式,但它们都做同样的事情。

wb.SaveAs(aFiles(i).Replace(".xls", "B.csv"), Excel.XlFileFormat.xlCSVMSDOS, , , , False) 'saves a copy of the spreadsheet as a csv
Run Code Online (Sandbox Code Playgroud)

那么,是否有一些额外的步骤/设置我需要做才能让多余的行显示在 csv 中?

请注意,如果我打开这个新创建的 csv,然后单击另存为,并选择 csv,我的程序会再次喜欢它。

vb.net csv excel

1
推荐指数
1
解决办法
4510
查看次数

标签 统计

excel ×2

vb.net ×2

.net ×1

ado ×1

c# ×1

csv ×1

dao ×1

ms-access ×1

objectlistview ×1

vba ×1

winforms ×1