设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2719|回复: 7
打印 上一主题 下一主题

[窗体] 求助! 报错: "." "!" "()" 的非法使用 ??

[复制链接]
跳转到指定楼层
1#
发表于 2011-11-3 16:50:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
今天新做了个主-子窗体,出现了个怪问题:

主窗体:未绑定窗体,子窗体源:tbl配件清单temp
主窗体里有字段 维修id 和 Cmd查询。
意图:
输入 维修id,点击查询,子窗体刷新后只显示该维修id的配件清单记录。
我的代码(红色字体就是系统提示报错的部分):
Private Sub Cmd查询_Click()
    Dim Stemp As String
    Dim rs As New ADODB.Recordset
   
    Stemp = "SELECT [tbl维修].* FROM [tbl维修] WHERE 维修ID LIKE '" & Me.维修ID & "'"
    rs.Open Stemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
        With rs
            Me.维修ID = ![维修ID]
            Me.日期 = ![日期]
            Me.维修类型 = ![维修类型]            
        End With
    rs.Close
    Set rs = Nothing
   
    DoCmd.SetWarnings False
    DoCmd.RunSQL " Insert Into tbl配件清单temp Select tbl配件清单.* Where 维修id Like ' " & 维修ID & " ' "
    DoCmd.SetWarnings True
    Me.frm配件清单child.Form.Refresh
   
End Sub

我之前做的也是这样,怎么就没这个报错呢?我把另外一个不报错的窗体代码看了过百次了,还是没发现区别……
各位兄弟姐妹帮看一下问题出在哪里了呀????拜谢!!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
8#
 楼主| 发表于 2011-11-4 10:48:24 | 只看该作者
感谢楼上两位的帮助!问题解决了!就是因为temp表里少了个ID字段的问题,所以要一个个字段来!
7#
发表于 2011-11-4 10:02:08 | 只看该作者
你那样的我没写过,我都写全的。
insert into 那个表 (字段1, 字段2,....) select 字段1, 字段2,.... from 这个表 where......
6#
发表于 2011-11-4 10:00:22 | 只看该作者
"INSERT INTO tbl配件清单temp ( 维修ID, 配件ID, 配件名称, 单位, 规格, 供应商, 生产厂家, 生产日期, 产地, 单价, 数量, 金额 )
SELECT 维修ID, 配件ID, 配件名称, 单位, 规格, 供应商, 生产厂家, 生产日期, 产地, 单价, 数量, 金额
FROM tbl配件清单
WHERE 维修ID=" & me.维修id
5#
 楼主| 发表于 2011-11-4 09:31:06 | 只看该作者
本帖最后由 紫风 于 2011-11-4 09:31 编辑

回楼上,我有试过用FROM,但是由于以下原因,所以就不用FROM了:
数据库里有2个表:
1. tbl配件清单
2. tbl配件清单temp
从表名上就能看出来tbl配件清单temp是做给tbl配件清单的临时表,但是temp表比原表少一个字段"ID",所以当我用from时系统报错提示:insert into 包含以下未知字段语句:"id"。
这样,我把库上传上来,麻烦帮我看一下如何解决好么?谢谢!
问题就在frm维修的Cmd查询里。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
4#
 楼主| 发表于 2011-11-4 15:35:35 | 只看该作者
谢谢楼上!!!{:soso_e113:}
3#
发表于 2011-11-4 15:27:20 | 只看该作者
Function InsertSQL(TargetTbl As String, SourceTbl As String, WhereCondition As String)
    Dim tbl    As DAO.TableDef
    Dim str    As String
    Dim i      As Byte
    Set tbl = CurrentDb.TableDefs(TargetTbl)
    For i = 0 To tbl.Fields.Count - 1
        str = str & tbl.Fields(i).Name & ","
    Next
    str = Left(str, Len(str) - 1)
    str = "INSERT INTO " & TargetTbl & "(" & str & " ) SELECT " & str & " FROM " & SourceTbl & WhereCondition
    DoCmd.RunSQL str
End Function

Call InsertSQL("tbl配件清单temp", "tbl配件清单", "WHERE 维修ID=" & Me.维修id)

循环目标表字段,可以保证不会出现字段不匹配情况,而且以后增减字段,也不用从写代码
2#
发表于 2011-11-3 22:54:46 | 只看该作者
select不用from啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-12 07:14 , Processed in 0.082850 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表