怎样使用代码定义TABLE中某字段为索引?

szyss 2003-09-12 10:28:51
怎样使用代码定义TABLE中某字段为索引?代码如下,无法定义
Dim tbl As New Table
Dim idx As New ADOX.Index
Dim cat As New ADOX.Catalog
cat.ActiveConnection = conn 'conn在前面已经定义好连接数据库字符串
tbl.Name = "gzk"
idx.Name = "multicolidx"
idx.Columns.Append "userid" '需要定义索引的字段名称
tbl.Indexes.Append idx
以上代码是否有问题,请高手指点,多谢!
...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liufeng7600 2003-09-18
  • 打赏
  • 举报
回复
CREATE INDEX YOURINDEXNAME ON YOURTABLENAME(FILEDNAME)

CREATE UNIQUE INDEX YOURINDEXNAME ON YOURTABLENAME(FILEDNAME)

就这样了
fire_soft 2003-09-18
  • 打赏
  • 举报
回复
以下使用了 DAO

Dim oCon As New ADODB.Connection
oCon.Provider = "Microsoft.Jet.OLEDB.4.0;Data Source=" & strFileName & ";Persist Security Info=False;Jet OLEDB:Database Password="
oCon.Open

Dim oRs As New ADODB.Recordset
Dim sql, arrTableGuid() As String
Dim mydb As DAO.Database, myws As DAO.Workspace
Set myws = DBEngine.Workspaces(0)
Set mydb = myws.OpenDatabase(App.Path & "\TaskList\" & strDBName & ".mdb", True, False, ";pwd=")


Dim NewTable As DAO.TableDef
Dim NewField As DAO.Field
Dim idxNew As DAO.Index
sql = "select * from ProjectAttachTable"
With oRs
.ActiveConnection = oCon
.CursorLocation = adUseClient
.LockType = adLockPessimistic
.Open sql
Dim iRecordCount, i As Long
iRecordCount = .RecordCount
ReDim arrTableGuid(iRecordCount)
For i = 0 To iRecordCount - 1
arrTableGuid(i) = .Fields("AttachTableGuid")
.MoveNext
Next
.Close
End With
For i = 0 To iRecordCount - 1
'新增一个表

Set NewTable = mydb.CreateTableDef(arrTableGuid(i))
'新增一个字段名为ID的字段,为关键字
Set NewField = NewTable.CreateField("ID", dbLong)
NewField.Attributes = dbAutoIncrField
NewTable.Fields.Append NewField

'新增一个字段名为ProjectGuid的字段,为项目的Guid
Set NewField = NewTable.CreateField("ProjectGuid", dbText)
NewField.Size = 50
NewTable.Fields.Append NewField

sql = "select * from TableHeader where AttachTableGuid='" & arrTableGuid(i) & "'"
sql = sql & " and IsDBFields = true order by col"
With oRs
.ActiveConnection = oCon
.CursorLocation = adUseClient
.LockType = adLockPessimistic
.Open sql
While Not .EOF
If .Fields("FieldType") = "文本" Then
'新增一个文本字段
Set NewField = NewTable.CreateField(.Fields("FieldName"), dbText)
NewField.AllowZeroLength = True
NewField.Size = .Fields("FieldLength")
NewTable.Fields.Append NewField
Else
'新增一个数字字段
Set NewField = NewTable.CreateField(.Fields("FieldName"), dbCurrency)
NewTable.Fields.Append NewField
End If
.MoveNext
Wend
On Error Resume Next
mydb.TableDefs.Delete arrTableGuid(i)
mydb.TableDefs.Append NewTable

'把ID字段设为主键
Set idxNew = NewTable.CreateIndex("ID")
idxNew.Fields.Append idxNew.CreateField("ID")
idxNew.Primary = True
NewTable.Indexes.Append idxNew

'关闭oRs
.Close
End With
Next

Set oRs = Nothing
oCon.Close
Set oCon = Nothing
yijiansong 2003-09-12
  • 打赏
  • 举报
回复
CREATE INDEX YOURINDEXNAME ON YOURTABLENAME(FILEDNAME)
CREATE UNIQUE INDEX YOURINDEXNAME ON YOURTABLENAME(FILEDNAME)
strongfisher 2003-09-12
  • 打赏
  • 举报
回复
CREATE INDEX YOURINDEXNAME ON YOURTABLENAME(FILEDNAME)
CREATE UNIQUE INDEX YOURINDEXNAME ON YOURTABLENAME(FILEDNAME)
daviddivad 2003-09-12
  • 打赏
  • 举报
回复
用SQL语句就行了
CREATE INDEX YOURINDEXNAME ON YOURTABLENAME(FILEDNAME)
CREATE UNIQUE INDEX YOURINDEXNAME ON YOURTABLENAME(FILEDNAME)

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧