Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 检查MS Access中是否存在已保存的查询_Vb.net_Ms Access_Oledb - Fatal编程技术网

Vb.net 检查MS Access中是否存在已保存的查询

Vb.net 检查MS Access中是否存在已保存的查询,vb.net,ms-access,oledb,Vb.net,Ms Access,Oledb,我需要使用OleDb在VB.net程序中创建一个已保存的MS Access查询。但在创建查询之前,我需要检查数据库中是否已经存在该查询。如果它确实存在,我想更新它。如何使用OleDb在MS Access中检查现有查询?“如果确实存在查询,我想更新它。” 根据评论讨论,我知道您将在OleDB连接上执行一条语句来创建查询。(在Access术语中,是QueryDef对象。) 当查询不存在时,执行成功,您就完成了 如果查询确实存在,执行尝试将抛出一个错误,您将在VB.Net代码中捕获该错误。此时,您需要

我需要使用OleDb在VB.net程序中创建一个已保存的MS Access查询。但在创建查询之前,我需要检查数据库中是否已经存在该查询。如果它确实存在,我想更新它。如何使用OleDb在MS Access中检查现有查询?

“如果确实存在查询,我想更新它。”

根据评论讨论,我知道您将在OleDB连接上执行一条语句来创建查询。(在Access术语中,是
QueryDef
对象。)

当查询不存在时,执行成功,您就完成了

如果查询确实存在,执行尝试将抛出一个错误,您将在
VB.Net
代码中捕获该错误。此时,您需要修改现有查询。不幸的是,我不知道用OleDb修改现有查询的任何方法。但是,您可以放弃现有查询并重新执行语句以创建新版本

您可以执行Access DDL语句以放弃现有查询。这两个版本中的一个可以满足您的需要:

  • 在此处下拉查看您的查询名称
  • 将过程YourQueryName放到此处
  • 第一种是普通的
    SELECT
    查询。第二种是Access所称的“操作查询”:
    INSERT
    <代码>更新
    <代码>删除
    。我记得,“生成表”查询(
    从…
    选择到新表)也属于第二类(过程)(检查以确认是否需要)。我认为带有
    参数的
    SELECT
    查询也属于第二类(如果需要,请检查)


    注意:这只是一个建议的方向。我不能为你提供
    VB.Net
    code。我希望您知道或能够想出如何在
    VB.Net

    中执行所需的错误处理。您是否排除了尝试创建Access查询并在错误已经存在时捕获错误的可能性?如果您要在VBA中创建查询,您可以始终在查询定义之前的行上放置
    On error Resume Next
    。然后在查询之后,将
    放在Error上转到Err\u Handler
    。显然,Err_Handler可以用不同的名称命名。这只会在查询不存在时创建查询,如果查询确实存在,则不会生成错误。@HansUp我从未做过任何错误捕获。你能举个简单的例子吗?对不起,我不懂VB.Net。你试过林格的建议吗?我看过
    .Net
    使用
    try
    catch
    的代码。据我所知,视图和过程都是
    select
    语句。Access如果不使用任何参数(如表单控件的值),则称其为视图,如果使用,则称其为过程。我喜欢放弃现有查询并创建新查询的想法。解决可能出现的“不存在”错误要比找出如何更改查询更容易。@HansUp这看起来是一个解决方法!我要开始做了!谢谢