更改后Access数据库上的错误

时间:2018-12-19 13:24:38

标签: ms-access access-vba

我知道这是一个漫长的过程,但是我确实需要帮助,并且我是Microsoft Access的新手,正在研究一些旧代码,我不知道问题出在哪里。

与其他每个Access数据库一样,我有一些表,列,查询,报告等。

在同事更改了某些表的名称(可能也添加/删除了列等)之后,此代码停止了工作。这是一条简单的SQL语句,它针对tabel1进行查询并将信息插入表格中。请注意,在更改人员之前,数据库运行良好。

不再起作用的代码,并突出显示错误发生的位置:

enter image description here

(我已经在底部添加了代码,但是让图片突出显示了发生错误的位置)

接收错误:

运行时错误'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

2 个答案:

答案 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)

好吧,所以“一位同事更改了某些表的名称(可能也添加/删除了列等),”……。这是我所见过的最糟糕的想法。表格是结构的基础,在构建结构后更改基础是许多麻烦的保证。

关于更新查询以适应新表结构的建议是正确的。...虽然在表示层(表格/报告)的查询上方仍然存在很多问题,但这些问题会抛出错误,直到它们也适应为止。

根据更改的数量,您可能会认真考虑在同事造成损害之前返回到版本。...