2017-08-02 46 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。 –