2017-08-02 111 views
-4

我需要一点帮助,所以我想要做的是显示所有记录WHERE列名不是NULL。我所拥有的是:VB6,MS Access,DAO - 显示所有记录WHERE列名不是NULL

昏暗RS作为记录 昏暗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 insted的标签。

+0

请不要问双管的问题,像“还我怎么能显示结果在ListBox insted的标签的。”如果您想要第二个问题的答案,请正确提问,并提供必要的信息以便我们能够回答。 –

+0

您尚未指定要检查的列。 SurName和FirstName是两列,而不是一列。 –

+0

对不起,这将是数据库中的另一个名为personPresent – Cluster

回答

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 
+0

这将只显示一个条目而非全部。 – Cluster

+0

当然,是的。这段代码:'尽管没有rs.EOF lblResult.Caption =(“cust名称:”&rs!SurName&“cust姓:”&rs!名字) rs.MoveNext Loop'很奇怪,只分配'lblResult.Caption'的最新条目 –

+0

[column-name]它只有一列,而OP检查两列:SurName和FirstName,因此我们可以使SurName = NULL或FirstName = NULL或两者都为NULL。 –