2014-10-08 82 views
-1

表B中插入我有一個2個表,以便:更新表格中的一行時,在多選擇列

Visitors  ID|Name|Visit_from|To|image 
Visitor_log ID|Name|Visit_from|To|requestor 

當我記錄插入Visitor_log的日期是在遊客表更新。當有一位訪問者被請求時,我有這個工作。問題是Visitor_log.Visitor場是多選場,使代碼只適用於一個訪問者:

sub row_inserted (rsold, rsnew) 

ew_execute ("UPDATE [Visitors] SET [To Visit On] = ('" & rsnew("To Visit On") & "'), 
[To] = ('" & rsnew("To") & "') 
WHERE [Visitors].[Visitor(s) Name] = ('" & rsnew("Visitor") & "');") 

where子句變成:

WHERE [Visitors].[Visitor(s) Name] = (Visitor A) 

但是,當選擇了多個觀衆就變成:

WHERE [Visitors].[Visitor(s) Name] = (Visitor A, Visitor B, Visitor C) 

訪客表中沒有名爲Visitor A, Visitor B, Visitor C的訪客作爲一個名稱,因此SQL查詢失敗。

我一直堅持這一段時間,現在任何幫助非常感謝。

更新:我已經查詢設置爲response.write證明有多少SQL做...

sql: UPDATE [Visitors] SET [To Visit On] = ('10/10/2014'), [To] = ('10/10/2014') WHERE [Visitors].[Visitor(s) Name] = ('Mark M, Paul P');

+0

我想你可能需要在你的WHERE標準中將'='改成'IN'。 rsnew(「Visitor」)返回的是什麼?我想你會需要每個訪問者的單引號,以供選擇工作。 – sgeddes 2014-10-08 23:36:43

+0

嗨,我已經嘗試過,但沒有喜悅,它再次爲1名遊客工作不多。 – monkhouse 2014-10-08 23:47:19

回答

-1

已解決!

下面是完整的工作答案:

Dim sql
sql = ("UPDATE [Visitors] SET [To Visit On] = ('" & rsnew("To Visit On") & "'), [To] = ('" & rsnew("To") & "') WHERE [Visitors].[Visitor(s) Name] IN ('" & replace(rsnew("Visitor"),", ","','") & "');")
Call ew_Execute(sql)

這是smalarons有輕微編輯的間距替換statment回答。

感謝大家的支持。

0

也許你可以在visitor_log表定義一個觸發器來更新訪問者表。 在MySQL中,這將是這樣的:

+0

現在就試試看,謝謝你的回覆。 – monkhouse 2014-10-09 14:15:23

+0

嗨,重新閱讀這個答案我已經有一個觸發器。'Sub Row_inserted(rsold,rsnew)'這是一個插入行的事件,'ew_execute'之後的所有內容都會在visitor_log表中插入新行時觸發。問題在於'WHERE'子句。我的數據庫試圖找到一個名爲'(vis1,vis2,vis3)'的訪問者,當選擇1個訪問者時,它就像數據庫的'(Vis1)'一樣工作,並且可以與'Visitors'表中的名稱匹配。 – monkhouse 2014-10-09 15:19:39

1

查看您的更新,我覺得你的問題就出在引號。應引用每個不同的值,並應使用IN運算符。 所以您的查詢應該是這樣的:

UPDATE [Visitors] SET [To Visit On] = ('10/10/2014'), [To] = ('10/10/2014') 
WHERE [Visitors].[Visitor(s) Name] IN ('Mark M', 'Paul P'); 

所以假設rsnew(「訪客」)是用逗號分隔值的和你的語言是VBScript,你可以做這樣的事情

ew_execute ("UPDATE [Visitors] SET [To Visit On] = ('" & rsnew("To Visit On") & "'), 
[To] = ('" & rsnew("To") & "') 
WHERE [Visitors].[Visitor(s) Name] IN ('" & replace(rsnew("Visitor"),",","','") & "');") 
字符串
+0

感謝您的回覆,我現在會測試它並讓您知道,謝謝。 – monkhouse 2014-10-10 10:59:38

+0

make sur使用IN運算符而不是'='。當我粘貼你的代碼時,我沒有自己改變它。現在已經糾正了。 – 2014-10-10 12:03:22

+0

感謝您的信息,我會重試。 – monkhouse 2014-10-12 14:17:04