2016-01-06 28 views
0

我試圖通過使用ADODB連接的VB6在MS Access中創建一個表。 這裏是我的代碼,使用主鍵創建一個表不重複

dim rs as new ADODB.recordset 
set rs = new ADODB.recordset 
rs.Open "cretae table (StudentNumber Integer primary key)", con, 3, 3 

代碼工作正常,但StudentNumber列允許重複的值。如果試圖重新輸入現有學生號碼,我想要彈出錯誤消息。

+0

所以這是即時可能的,所以這就是我所做的,我在保存之前使用.EOF的力量。 &cmbRecords.Text& 「其中StudentNumber像」 &txtAddStudent.Text,CON,3,3 rs1sP1y.Open 「從選擇StudentNumber」 如果rs1sP1y.EOF然後 隨着rs1sP1y .AddNew 點域( 「StudentNumber」) = txtAddStudent.Text .Update .Requery 尾隨着 否則 MSGBOX「學生數量已經增加。」,vbCritical,「重複帳戶」 退出小組 結束如果 –

回答

0

這不是「使用ADODB連接」,而是使用ADO。 ADODB僅僅是組成ADO的兩大圖書館之一。

說話錯了就是思考錯了,導致做錯了。

這裏沒有理由使用Recordset。你也應該避免使用幻數,並且ADO幾乎提供了所有的枚舉,所以沒有任何藉口。

con.Execute "CREATE TABLE [Students](" _ 
      & "[StudentNumber] LONG CONSTRAINT [PK_StudentNumber] PRIMARY KEY)", _ 
      , _ 
      adCmdText Or adExecuteNoRecords 

注意,INTEGER,LONG,INT和INTEGER4都意味着在JET SQL符號的32位整數。如果您想要一個帶符號的16位整數,則可以說SMALLINT,SHORT或INTEGER2。

另請注意,CONSTRAINT是全局數據庫對象,需要唯一的名稱。

+0

是爲時已晚說對不起? :( –

+0

大聲笑,它是永遠不會太晚* *對不起,並糾正你的過程。這可以幫助你避免在未來錯誤輪流 – Bob77

+0

呵呵,順便感謝您的幫助bob77 :) –