VB6、MS Access、DAO - 显示列名不为空的所有记录
Posted
技术标签:
【中文标题】VB6、MS Access、DAO - 显示列名不为空的所有记录【英文标题】:VB6, MS Access, DAO - Display all records WHERE column-name IS NOT NULL 【发布时间】:2018-01-09 13:31:46 【问题描述】:我需要一些帮助,所以我要做的是显示列名不为空的所有记录。我有的是:
Dim rs As Recordset 将 sqlStr 调暗为字符串
Set WS = DBEngine.Workspaces(0)
DbFile = (App.Path & "\mydb.mdb")
strSql = "SELECT * FROM MyDatabaseName"
Set rs = db.OpenRecordset(strSql)
rs.MoveFirst
Do While Not rs.EOF
lblResult.Caption = ("cust Name: " & rs!SurName & " cust Surname: " & rs!FirstName)
rs.MoveNext
Loop
MsgBox ("End ")
我试过的是
strSql = "SELECT * FROM MyDatabaseName WHERE column-name IS NOT NULL"
但我收到错误 3131。感谢任何帮助。另外,如何在标签的 ListBox 中显示结果。
【问题讨论】:
请不要问双管齐下的问题,例如“我怎样才能在 ListBox insted of Label 中显示结果。”。如果您想回答第二个问题,请正确提问,并提供必要的信息以便我们能够回答。 您尚未指定要检查的列。 SurName 和 FirstName 是两列,而不是一列。 抱歉,这将是数据库中名为 personPresent 的另一列 请不要给我们这样的航空代码,而是您的实际代码。保留字可能存在问题,或者您的摘录中没有包含其他问题。 【参考方案1】:简单修复:使用特殊字符时将列名括在方括号中,例如 -
减法运算符:
strSql = "SELECT * FROM MyDatabaseName WHERE [column-name] IS NOT NULL"
您的 SQL 的其余部分似乎有效。
如果你想要一个将这个查询的结果作为列表的列表框,只需将其行源设置为该查询,并将其行源类型设置为表/查询即可。不需要任何 VBA。
如果要将所有内容都放在标签中,请使用:
Do While Not rs.EOF
lblResult.Caption = lblResult.Caption & "cust Name: " & rs!SurName & " cust Surname: " & rs!FirstName & VbCrLf
rs.MoveNext
Loop
【讨论】:
这将只显示一个条目而不是全部。 是的,当然。这段代码:Do While Not rs.EOF lblResult.Caption = ("cust Name: " & rs!SurName & " cust Surname: " & rs!FirstName) rs.MoveNext Loop
很奇怪,只将最新条目分配给lblResult.Caption
[column-name] 它只有一列,而 OP 检查两列:SurName 和 FirstName,因此我们可以让 SurName = NULL 或 FirstName =NULL 或两者都 = NULL。
我只是更正 SQL OP 提供的。不知道你到底想说什么。由于我没有这两列的名称,我不能在我的答案中使用它们
有没有办法同时显示所有记录中哪一个字段不为NULL?以上是关于VB6、MS Access、DAO - 显示列名不为空的所有记录的主要内容,如果未能解决你的问题,请参考以下文章
VB6/Microsoft Access/DAO 到 VB.NET/SQL Server... 有建议吗?