我知道这是一个漫长的过程,但是我确实需要帮助,并且我是Microsoft Access的新手,正在研究一些旧代码,我不知道问题出在哪里。
与其他每个Access数据库一样,我有一些表,列,查询,报告等。
在同事更改了某些表的名称(可能也添加/删除了列等)之后,此代码停止了工作。这是一条简单的SQL语句,它针对tabel1
进行查询并将信息插入表格中。请注意,在更改人员之前,数据库运行良好。
不再起作用的代码,并突出显示错误发生的位置:
(我已经在底部添加了代码,但是让图片突出显示了发生错误的位置)
接收错误:
运行时错误'2580':记录源不存在
问题:如果记录源不存在,那么实际上不存在什么呢?
我对错误的看法
我的SQL显然存在,所以我假设是问题subAvoidPrivatList
? 这是我可以在设计/布局视图中访问的列表吗?(由于我可以在任何地方找到该列表,因此请您对它进行猜测)或者您的猜测是?还是因为某些表/列不再存在而导致错误被触发?
任何帮助表示赞赏
编辑:在上方添加了图片的代码版本
Dim SQL As String
SQL = "SELECT tabel1.area, tabel1.[are systemname], tabel1.[charge name] // +15 columns that im gonna leave out for brevity
& "FROM tabel1 " _
& "WHERE [charge name] LIKE '*" & Me.txtKeywords & "*' " _
& " AND [avoid] = '" & Me.avoidcheck & "' " _
& " AND [area systemname] LIKE '*" & Me.test1 & "*' " _
& " AND [area] LIKE '*" & Me.resub & "*' " _
& "ORDER BY tabel1.[Id] "
Me.subAvoidPrivatList.Form.RecordSource = SQL
Me.subAvoidPrivatList.Form.Requery
答案 0 :(得分:1)
发生错误,因为您的SQL语句与表的结构不匹配。要解决此问题,您将需要修复SQL或尝试弄清楚如何将tabel1
放回原来的状态。
要修复SQL,请确保仅使用tabel1
中(当前)在最近更改之后的列。当然,这可能会破坏MS Access表单或报表中的其他内容。
修复表格要困难得多,但如果您有足够的决心,则有可能。首先查看查询中正在使用哪些列,但表中缺少哪些列。您将需要猜测它们曾经是什么类型。将它们添加到表中。当然,要期待一些反复试验。
根据您发布的查询,我希望tabel1
包含(至少)以下列:
Id,
area,
[are systemname], //possibly you misspelled this column in your SELECT clause
[area systemname], //this is probably the correct spelling
[charge name],
avoid,
//and you omitted the other columns, but you get the idea
答案 1 :(得分:1)
好吧,所以“一位同事更改了某些表的名称(可能也添加/删除了列等),”……。这是我所见过的最糟糕的想法。表格是结构的基础,在构建结构后更改基础是许多麻烦的保证。
关于更新查询以适应新表结构的建议是正确的。...虽然在表示层(表格/报告)的查询上方仍然存在很多问题,但这些问题会抛出错误,直到它们也适应为止。
根据更改的数量,您可能会认真考虑在同事造成损害之前返回到版本。...