2011-08-14 59 views
0

我的例子VB6程序:VB6 ADO INSERT成.MDB

Dim conn As New connection 
conn.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & App.Path & "\adatabase.mdb;" 
conn.Execute "INSERT INTO atable (afield) VALUES (""some text"")" 
End Sub 

( 「adatabase.mdb」 包含一個表 「atable」 與一個場 「更遠」 類型的 「文本」 長度255。 Access 2002中,Access文件格式2000 VB6引用包括 「Microsoft ActiveX數據對象2.8庫」)

conn.Execute得到:

運行時錯誤 '-2147217904(80040e10'[微軟] [ODBC訪問驅動程序]參數太少,預計1.

查詢直接

INSERT INTO atable (afield) VALUES ("some text") 

運行在Access中沒有任何問題。

+1

你還在寫VB6? 「[最終版本是1998年的第6版。微軟的擴展支持在2008年3月結束,指定的繼承者是Visual Basic .NET(現在簡稱爲Visual Basic)。](http://en.wikipedia.org/wiki/) Visual_Basic)「 –

+0

感謝Tomalak。不是新聞。當然,我有我不會在這裏進入的理由。 –

+0

是的,我相信你會這樣做。 –

回答

0

難道不應該是:

conn.Execute "INSERT INTO atable (afield) VALUES ("""some text""")" 

即你需要使用引號雙引號?

更新:或者在解決海報問題時,使用單引號引用文本。

甚至更​​好,使用參數化查詢:

Dim Conn1 As ADODB.Connection 
Dim Cmd1 As ADODB.Command 
Dim Param1 As ADODB.Parameter 
Dim Rs1 As ADODB.Recordset 

' Create and Open Connection Object. 
Set Conn1 = New ADODB.Connection 
Conn1.ConnectionString = "DSN=Biblio;UID=admin;PWD=;" 
Conn1.Open 

' Create Command Object. 
Set Cmd1 = New ADODB.Command 
Cmd1.ActiveConnection = Conn1 
Cmd1.CommandText = "SELECT * FROM Authors WHERE AU_ID < ?" 

' Create Parameter Object. 
Set Param1 = Cmd1.CreateParameter(, adInteger, adParamInput, 5) 
Param1.Value = 5 
Cmd1.Parameters.Append Param1 
Set Param1 = Nothing 

' Open Recordset Object. 
Set Rs1 = Cmd1.Execute() 
+0

其實這條線不是句法,但它確實提醒我,我可以在我的文本週圍使用單引號而不是雙打,並且解決了問題......現在......直到我必須避開單引號,但我當然,那裏已經有幫助了! 感謝米奇! –

+0

解決此問題的最佳方法是使用參數化查詢。 –