2017-10-18 163 views
-2

我在Access中創建了數據庫,並給出了數據類型「短文本」。通過VB在Microsoft Access中插入多條記錄

現在我試圖通過Visual Basic提示記錄到此表中。我到目前爲止寫了一個代碼,但需要幫助來修復錯誤。我得到的編譯錯誤:

Duplicate declaration in current scope

我不知道它是什麼?

Option Compare Database 

Sub arrayData() 

Dim CustomerName() As Variant 
Dim num As Integer, dbs As Database, InsertRecord As String 
Dim CustomerID As Long, num1 As Long, CustomerName As String 

Set dbs = CurrentDb() 
CustomerID = 0 
For num1 = 0 To 49999 

CustomerID = CustomerID + 1 
CustomerName = Array("Peter", "Mary") 
CustomerAddress = Array("163 City Rd, SOUTHBANK", "65 Orange St, BENTLEIGH EAST") 
CustomerPhoneAddress = Array("0416874963", "0478937534") 
num = Int((200 - 0 + 1) * Rnd + 0) 
CustomerName = CustomerName(num) 
CustomerAddress = CustomerAddress(num) 
CustomerPhoneNo = CustomerPhoneNo(num) 
InsertRecord = "INSERT INTO Customers (CustomerID,CustomerName,CustomerAddress,CustomerPhoneNo) VALUES (" & "'" & CustomerID & "'" & "," & "'" & CustomerName & "'" & "," & "'" & CustomerAddress & "'" & "," & "'" & CustomerPhoneNo & "'" & ")" 

dbs.Execute InsertRecord 
Debug.Print CustomerID, CustomerName, CustomerAddress, CustomerPhoneNo 

Next 

End Sub 

在這種情況下我該怎麼辦?任何幫助,將不勝感激。

+1

那不是VB.NET代碼。 – Plutonix

+0

兩個標籤中的兩個不正確 - 不錯! (固定) – YowE3K

+0

你是什麼意思?你能給我解釋一下嗎? –

回答

0

您使用的語言是「Visual Basic for Applications」(VBA)。這種語言是面向行的。它表示一條語句必須放在一行上,除非您使用的是一行連續字符(_),前面至少有一個空格。

Dim CustomerID As Long, num1 As Long, CustomerName As String, CustomerAddress _ 
    As String, CustomerPhoneNo As String 

不過,我會放置在單獨的行LongString變量和寫:

Dim CustomerID As Long, num1 As Long 
Dim CustomerName As String, CustomerAddress As String, CustomerPhoneNo As String 

第二個語法錯誤是在InsertRecord = "INSERT INTO ...聲明。這裏同樣的問題。它建議立即進行刪除這個樣子:

InsertRecord = "INSERT INTO CUSTOMERS (CustomerID,CustomerName," _ 
     & "CustomerAddress,CustomerPhoneNo) VALUES " _ 
     & "(" & "'" & CustomerID & "'" & "," & "'" & CustomerName & "'" & "," & "'" _ 
     & CustomerAddress & "'" & "," & "'" & CustomerPhoneNo & "'" & ")" 

此外,什麼是- 0+ 0好於Int((200 - 0 + 1) * Rnd + 0)。該表達式相當於Int(201 * Rnd)


經過編輯,看起來您沒有行延續。

錯誤是:您有2個變量名爲CustomerName。變量名必須是唯一的:

Dim CustomerName() As Variant 
Dim CustomerName As String 

例如,命名陣列CustomerNames

Dim CustomerNames() As Variant 

你應該縮進代碼。它使閱讀起來更容易。

Sub arrayData() 
    Dim CustomerName() As Variant 
    ... 
    CustomerID = 0 
    For num1 = 0 To 10 
     CustomerID = CustomerID + 1 
     ... 
     Debug.Print CustomerID, CustomerName, CustomerAddress, CustomerPhoneNo 
    Next 
End Sub 
+1

這就是爲什麼我堅持要求OP公佈實際代碼 - 修訂後的版本顯示沒有行延續,所以不需要連續字符。 – YowE3K

+0

我在一條線上使用了所有東西。我不認爲這是一個問題。檢查我在評論中給出的截圖。無論如何感謝回答。 –

+0

很好的發現在'客戶名'上!我的眼睛沒有注意到那一個。 @MalikDraz **請**編輯您的問題,說出「小錯誤」是什麼。 – YowE3K