Office中国论坛/Access中国论坛
标题: 怎么用TABELDEF老是出錯. [打印本页]
作者: ADAM 时间: 2003-10-17 03:09
标题: 怎么用TABELDEF老是出錯.
當運行此段代碼時:
出現錯誤
"執行階段錯誤'3420'"
物件無效或已不再設定..
Dim rst As TableDef
Dim prpLoop As Property
Set rst = CurrentDb.TableDefs("BB")
For Each prpLoop In rst.Properties
If prpLoop <> "" Then Debug.Print " " & prpLoop.Name & " = " & prpLoop
Next prpLoop
各們老大們看看是怎么回事....
作者: esmile 时间: 2003-10-17 16:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: ADAM 时间: 2003-10-17 17:04
以下是引用esmile在2003-10-17 8:57:03的发言:
对,这种现象我也出现过,关健是有些字段中的属性原本没有填值,所以易造成没有定义、物件无效等错误。
你可以在代码前加一句
on error resume next
来忽略错误。
"字段中的属性原本没有填值"===>有點不明白....
另外,如果忽略錯誤,那程式碼就不能完成預定任務啊....
55555
作者: 唐小小 时间: 2003-10-17 17:18
看看这个吧,也许可以帮上你哦
http://www.accfans.net/show.asp?id=456
作者: ADAM 时间: 2003-10-17 18:09
小小,那個不是我要的...
55555
作者: zhuyiwen 时间: 2003-10-17 18:30
请检查,
一、是否引用了DAO3.6
二、是否有BB表
三、Set rst = CurrentDb.TableDefs("BB") 改为 Set rst = CurrentDb().TableDefs("BB")
作者: ADAM 时间: 2003-10-17 21:09
斑竹:
1.有引用DAO3.6
2.存在BB表
3.用了Currentdb()也不是,錯誤同上...
4.另外,我用
Dim rst As TableDef
Dim prpLoop As Property
Set rst = CurrentDb.TableDefs("BB")
MsgBox CurrentDb.TableDefs("bom1").Name '===>這句不會出錯...,正確
5.我把tabledef 改為 dao.tabledef 也不行
這到的是為什么呢....
蒼天啦.....5555555555555555555555
作者: zhuyiwen 时间: 2003-10-17 21:13
把你的MDB裤挂上来 [em24]
[此贴子已经被作者于2003-10-17 13:16:51编辑过]
作者: ADAM 时间: 2003-10-17 21:47
我把庫傳上來了,你老幫忙看看吧..
不知是俺DAO有問題還是咋的..
[attach]2087[/attach]
[em00]
作者: zhuyiwen 时间: 2003-10-17 22:14
Sub test()
Dim db As DAO.Database
Dim rst As DAO.TableDef
Dim prpLoop As DAO.Property
Set db = CurrentDb
Set rst = db.TableDefs("bb")
Debug.Print rst.Name
Debug.Print rst.Properties.Count
For Each prpLoop In rst.Properties
Debug.Print " " & prpLoop.Name & " = " & prpLoop.Value
Next prpLoop
End Sub
' PASS PASS PASS
作者: ADAM 时间: 2003-10-17 22:58
zhuyiwen,你好歷害,為什么這樣一做,就可以了呢
我也這樣試過
太感謝你了.....
作者: 唐小小 时间: 2003-10-17 23:08
学了一招,:)
作者: ADAM 时间: 2003-10-17 23:10
其實這個貼子主要是想解決表的CAPTION屬性的問題,
再羅嗦一下,我現在還是出錯:
在CREATPROPERTY中出現型態不符,我查過這個方法的用法
可是還是沒頭緒...
而且,我如果不把
FIEL1.Caption = "BBTEST2"這名取消,它執行起來
首先這會報告這句有問題...
斑竹,再幫幫忙............
Private Sub Command18_Click()
Dim db As DAO.Database
Dim rst As DAO.TableDef
Dim FIEL1 As DAO.Field
Dim prpLoop As Property
Set db = CurrentDb
Set rst = db.TableDefs("bb")
Set FIEL1 = rst.Fields("bb1")
SetProperty FIEL1, "CAPTION", True
'FIEL1.Caption = "BBTEST2"
For Each prpLoop In rst.Properties
Debug.Print " " & prpLoop.Name & " = " & prpLoop.Value
Next prpLoop
End Sub
Sub SetProperty(dbsTemp As Object, strName As String, booTemp As Variant)
Dim prpNew As Property
Dim errLoop As Error
' Attempt to set the specified property.
On Error GoTo Err_property
MsgBox 1
dbsTemp.Properties("strName") = booTemp
On Error GoTo 0
Exit Sub
Err_property:
'Error 3270 means that the property was not found.
If DBEngine.Errors(0).Number = 3270 Then
' Create property, set its value, and append it to the' Properties collection
Set prpNew = dbsTemp.CreateProperty(strName, dbBoolean, booTemp)
dbsTemp.Properties.Append prpNew
Resume Next
Else
' If different error has occurred, display message.
For Each errLoop In DBEngine.Errors
MsgBox "Error number: " & errLoop.Number & vbCr & errLoop.Description
Next errLoop
End
End If
End Sub
作者: zhuyiwen 时间: 2003-10-17 23:10
CurrentDB只是一个ACCESS的方法,它返回一个DAO的Database对象
作者: ADAM 时间: 2003-10-17 23:45
斑竹,我還有一點不明....
作者: zhuyiwen 时间: 2003-10-17 23:47
Sub test()
Dim db As DAO.Database
Dim rst As DAO.TableDef
Dim FIEL1 As DAO.Field
Dim prpLoop As Property
Set db = CurrentDb
Set rst = db.TableDefs("BB")
Set FIEL1 = rst.Fields("BB1")
SetProperty FIEL1, "CAPTION", "BB1的标题"
For Each prpLoop In FIEL1.Properties
Debug.Print " " & prpLoop.Name
Next prpLoop
End Sub
Sub SetProperty(dbsTemp As Object, strName As String, strValue As String)
Dim prpNew As Property
Dim errLoop As Error
On Error GoTo Err_Property
' 这是帮助中的写法 : dbsTemp.Properties("strName") = strValue,是错误的
dbsTemp.Properties(strName) = strValue
On Error GoTo 0
Exit Sub
Err_Property:
If DBEngine.Errors(0).Number = 3270 Then
Set prpNew = dbsTemp.CreateProperty(strName, dbText, strValue)
dbsTemp.Properties.Append prpNew
Resume Next
Else
For Each errLoop In DBEngine.Errors
MsgBox "Error number: " & errLoop.Number & vbCr & _
errLoop.Description
Next errLoop
End
End If
End Sub
' PASS PASS PASS
[此贴子已经被作者于2003-10-17 16:09:32编辑过]
作者: ADAM 时间: 2003-10-18 00:14
斑竹老大,這一句在我這里出錯了:
For Each prpLoop In FIEL1.Properties
提示:型態不符..
作者: zhuyiwen 时间: 2003-10-18 00:34
以下是引用ADAM在2003-10-17 16:14:10的发言:
斑竹老大,這一句在我這里出錯了:
For Each prpLoop In FIEL1.Properties
提示:型態不符..
请仔细检查你的代码。
作者: ADAM 时间: 2003-10-18 01:18
我查了,真的不知錯在哪里....
指點指點...
謝謝了...
但是
把 Dim prpLoop As Property 改成 Dim prpLoop As object
就可以了...
??????
作者: ygcswl 时间: 2003-11-22 18:52
究竟是如何给字段标题赋值,最终的代码是什么?我还是不明白。
作者: ADAM 时间: 2003-11-22 21:49
請看13樓
代碼不是寫了嗎......
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |