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 条件表达式旁路中的数据类型不匹配_Vb.net_Ms Access_Jet - Fatal编程技术网

Vb.net 条件表达式旁路中的数据类型不匹配

Vb.net 条件表达式旁路中的数据类型不匹配,vb.net,ms-access,jet,Vb.net,Ms Access,Jet,我在Access上运行一个查询,尽管它警告我有空字段,但它仍然可以运行查询并添加行 然而,当我在VB.NET中运行JET时,它表示条件表达式中的数据类型不匹配 JET是否有办法表现得像Access ie一样,仍然运行查询并添加行 我知道我可以在VB.NET中将字段转换为正确的类型并进行循环,但我没有时间这样做,因为我需要在许多不同的查询中这样做 感谢您的帮助我将开始查看您有条件的字段,然后在查询中执行select语句,以便将空值更改为可接受的类型。请尝试IsNull或NZ,或者执行派生表子查询,

我在Access上运行一个查询,尽管它警告我有空字段,但它仍然可以运行查询并添加行

然而,当我在VB.NET中运行JET时,它表示条件表达式中的数据类型不匹配

JET是否有办法表现得像Access ie一样,仍然运行查询并添加行

我知道我可以在VB.NET中将字段转换为正确的类型并进行循环,但我没有时间这样做,因为我需要在许多不同的查询中这样做


感谢您的帮助

我将开始查看您有条件的字段,然后在查询中执行select语句,以便将空值更改为可接受的类型。请尝试IsNull或NZ,或者执行派生表子查询,在处理条件之前消除空值

比如说

SELECT TextField, DateField, OtherField 
FROM Table 
WHERE TextField='something' And Datefield=#2/11/2011#
下面是一个派生表解决方案:

SELECT TextField, DateField, OtherField
FROM ( 
    SELECT TextField, DateField, OtherField 
    FROM Table 
    WHERE TextField Is Not Null And Datefield Is Not Null
     ) AS aTable
WHERE TextField='something' And Datefield=#2/11/2011#
你可以说:

SELECT nz(Table.TextField,'') AS TextField...

希望这对您有所帮助

您使用什么接口来执行SQL?您如何知道Access中的结果是正确的?Access允许不一致的更新,因此您可能永远不知道已丢弃的问题是什么。我的建议是消除产生错误的任何因素,这样您就不会有任何问题。是的,通常我会这样做:在插入数据库时确保数据是正确的。然而,我还没有建立这个数据库,它有许多表。我不想对数据库结构做任何更改。正如在OP中提到的,我使用JET来执行SQL。我知道访问结果是正确的,因为它确实执行了插入操作,而通过JET则没有。您不必更改数据来避免问题-只需编写SQL语句即可消除抛出错误的任何问题。Access允许空值之类的内容,如果提示后的文本长度更大,它将剪切文本。通过JET,这会产生错误。正如我所说,实际上有数百个查询和表,仔细检查每一个查询和表并修复它们将是一件痛苦的事情。我想维护现有的数据库结构,但是通过JET/VB.NET而不是Access来实现。我认为您根本没有很好地解释这种情况。在这一点上,我没有什么可以提供的,因为你还没有明确说明情况是什么。我无法想象SQL不会在Access中抛出提示,然后允许不一致的更新。这是一件坏事,因为无法预测结果是什么。还有很多工作要做,这一事实丝毫没有改变您可以编写SQL以避免错误的事实。如果您要从外部访问执行它,您真的没有选择。