朋友,帮解决一下,有100分的给你。

tzhz 2003-09-14 04:12:52
我利用了
Dim qdef As QueryDef
dim t as string
dim daodb as dao.database
dim daotb as dao.tabledef
set daodb = opendatabase(app.path & "db.mda")
for each daotb in daodb.tabledefs
t = daotb.name
next
取出的t是表的名字,我也能在屏幕上打印出来.但是不只为什么用在语句:
Set qdef = daodb.CreateQueryDef("", "select * from t")
运行中提示,在相应的数据库中找不到表"t".可是我已经找到了是t 的数据类型错了吗?请您帮助我解决,表示感谢了.
...全文
41 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
shw014 2003-09-14
  • 打赏
  • 举报
回复
表名是 SQL 语言的保留字会报类似的错误
abc10 2003-09-14
  • 打赏
  • 举报
回复
还有一个可能是你的表名可能不合法,我试了一下,我一个表的名称中出现了"-"也会报错,例如表名为"A-A",就会报你说的错误,你把表名全改成中文或字母试试看。
abc10 2003-09-14
  • 打赏
  • 举报
回复
Set qdef = daodb.CreateQueryDef("", "select * from " & t)
tzhz 2003-09-14
  • 打赏
  • 举报
回复
我加了控制表类型的语句了,可是还是不行
.............
for left$(daotb.name,4)<>"MSys" then
t = daotb.name
endif
...........
abc10 2003-09-14
  • 打赏
  • 举报
回复
对了,你把这句
Set daodb = opendatabase("F:\test\Ado\mdb\Smallres.mdb")
改成你自己的路径
set daodb = opendatabase(app.path & "db.mda")
abc10 2003-09-14
  • 打赏
  • 举报
回复
你创建的只有一个表,但实际上还有一些系统表看不到,你再试试下面的代码 ,

Private Sub Form_Load()
Dim qdef As QueryDef
Dim t As String
Dim daodb As DAO.Database
Dim daotb As DAO.tabledef
Set daodb = opendatabase("F:\test\Ado\mdb\Smallres.mdb")
For Each daotb In daodb.TableDefs
If daotb.Attributes = 0 Then
t = daotb.Name '这些是你自己的表
Else
MsgBox daotb.Name '这里就是一些隐含的表了。
End If
Next

End Sub
tzhz 2003-09-14
  • 打赏
  • 举报
回复
我做实验用的数据库里面只有一个表,大哥在帮帮忙
abc10 2003-09-14
  • 打赏
  • 举报
回复
很明显,你上面的循环打开的是所有的表,其中也包括一些不是用户的access内部的表。
你应该先判断一下表的类型
另年改成下面的是没错的
Set qdef = daodb.CreateQueryDef(" ", "select * from " & t)
tzhz 2003-09-14
  • 打赏
  • 举报
回复
不可以,我已经用过了
xf_david921 2003-09-14
  • 打赏
  • 举报
回复
试试先将select语句单独做成字符串变量看可不可以
tzhz 2003-09-14
  • 打赏
  • 举报
回复
错误就在这行,是"from子句语法的错误"
如果把
set qder = daodb.CreateQueryDef(" ", "select * from t ")里面的t该成一个以知道的表的名字,程序句可以运行了
armu80830 2003-09-14
  • 打赏
  • 举报
回复
建议楼主调试程序时采用单步调试,以便确认错误发生在哪一行
tzhz 2003-09-14
  • 打赏
  • 举报
回复
不行,你的这种方法是同样的错误
armu80830 2003-09-14
  • 打赏
  • 举报
回复
for each daotb in daodb.tabledefs
t = daotb.name
Set qdef = daodb.CreateQueryDef(" ", "select * from " & t)
....
next
tzhz 2003-09-14
  • 打赏
  • 举报
回复
不可以的,你提出的做法,会谈出"from子句错误"的对话框
lisen101 2003-09-14
  • 打赏
  • 举报
回复
Set qdef = daodb.CreateQueryDef("", "select * from " & t & "")

1,216

社区成员

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

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