我是相當新的Access和vba和SQl,但我仍然需要使用這些。 我必須做的是根據一套標準在某個表上重複某些記錄; 爲了做到這一點,我設法執行了「插入選擇」語句。 簡而言之,我的問題是我必須重複N次相同的記錄,其中表中的某些字段值等於某個值。 這裏是我的代碼:這讓我,如果我跑,而不是這個代碼遍歷SQL語句N次(N是從表中取出)ACCES:插入選擇與迭代條件
Sub trydup()
Dim rst As DAO.Recordset
Dim asd As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("piv")
With rst
Dim i As Long
For i = 1 To 36
Dim NOM(1 To 36) As String
Dim NUM(1 To 36)
NOM(i) = !CDPRD
NUM(i) = !n
.MoveNext
Next
End With
Set asd = CurrentDb.OpenRecordset("Acc6")
MsgBox (NUM(4) & " " & NOM(4))
With asd
Dim k As Integer
Dim n As Long
For n = 1 To 36
Do While k <= NUM(n)
CurrentDb.Execute " INSERT into Acc6 SELECT * from Acc6 where CD_MAD = " & "'NOM(" & n & ")'"
k = k + 1
Loop
Next n
End With
End Sub
確實:
Sub trydup()
Dim rst As DAO.Recordset
Dim asd As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("piv")
With rst
Dim i As Long
For i = 1 To 36
Dim NOM(1 To 36) As String
Dim NUM(1 To 36)
NOM(i) = !CDPRD
NUM(i) = !n
.MoveNext
Next
End With
Set asd = CurrentDb.OpenRecordset("Acc6")
MsgBox (NUM(4) & " " & NOM(4))
With asd
Dim k As Integer
Dim n As Long
For n = 1 To 36
Do While k <= NUM(n)
*CurrentDb.Execute " INSERT into Acc6 SELECT * from Acc6 where CD_MAD='PCA' ")'"*
k = k + 1
Loop
Next n
End With
End Sub
其中PCA是該值包含在向量NOM中,vba工作正常! 所以問題是如何在sql語句中提取矢量「NOM」iterativley的所有值? thak你提前爲answares !!!!
我對這個問題有了更新。 讓我們考慮一個更容易的問題: 假設我想爲我的代碼中的一個步驟做同樣的事情: NUM向量中的第一個值是= 12 在NOM = PCA 因此基本上我'我想要做的是查找我的表中所有具有字段值CD_MAD ='PCA'的行,然後將此記錄複製12次到同一個表中!所以我的代碼將是這樣的:
Sub trydup()
Dim rst As DAO.Recordset
Dim asd As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("piv")
With rst
Dim i As Long
For i = 1 To 36
Dim NOM(1 To 36) As String
Dim NUM(1 To 36)
NOM(i) = !CDPRD
NUM(i) = !n
.MoveNext
Next
End With
Set asd = CurrentDb.OpenRecordset("Acc6")
With asd
Dim n As Long
For n = 1 To 36
Do While k <= 12
CurrentDb.Execute " INSERT into Acc6 SELECT * from Acc6 where CD_MAD='PCA' ")'"
k = k + 1
Loop
End With
End Sub
這裏的問題基本上是在「地方標準」: 確實假設在步驟0在我的源表中有4條是驗證標準CD_MAD = 'PCA' 在第二步將會有8個,在3步會有16個等等......這不是我想要的,因爲我想回復那個特殊的原始只有12次! 我想要做的是找到一種方法來執行一次選擇的建議,並插入該選擇12倍! 幫助我請我稍微瘋狂!!
我對這個問題有了更新。 讓我們考慮一個更容易的問題: 假設我想爲我的代碼中的一個步驟做同樣的事情: NUM向量中的第一個值是= 12 在NOM = PCA 因此基本上我'我想要做的是查找我的表中所有具有字段值CD_MAD ='PCA'的行,然後將此記錄複製12次到同一個表中!所以我的代碼將是這樣的:
Sub trydup()
Dim rst As DAO.Recordset
Dim asd As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("piv")
With rst
Dim i As Long
For i = 1 To 36
Dim NOM(1 To 36) As String
Dim NUM(1 To 36)
NOM(i) = !CDPRD
NUM(i) = !n
.MoveNext
Next
End With
Set asd = CurrentDb.OpenRecordset("Acc6")
With asd
Dim n As Long
For n = 1 To 36
Do While k <= 12
CurrentDb.Execute " INSERT into Acc6 SELECT * from Acc6 where CD_MAD='PCA' ")'"
k = k + 1
Loop
End With
End Sub
這裏的問題基本上是在「地方標準」: 確實假設在步驟0在我的源表中有4條是驗證標準CD_MAD = 'PCA' 在第二步將會有8個,在3步會有16個等等......這不是我想要的,因爲我想回復那個特殊的原始只有12次! 我想要做的是找到一種方法來執行一次選擇的建議,並插入該選擇12倍! 幫助我請我稍微瘋狂!!
OK thak你!!!!! – jsirico 2012-02-29 18:11:42
編輯:有一個運行時錯誤!無法打開數據庫INSERT到Acc6 SELECT * from Acc6其中CD_MAD ='PCA'它可能不是數據庫,您的應用程序可以識別該文件可能已損壞! – jsirico 2012-02-29 18:27:39
嗯,這很奇怪。 'CurrentDB.Execute'上發生這種情況'INSERT' – 2012-02-29 18:41:43