在DataGridView控件中过滤错误的数据库记录(Visual Studio 2005)(Visual Basic)



我有这个数据库,我需要在visual Studio 2005中加载一个visual basic表单。

数据库有6个表,它们包含错误的数据,我必须在表单中加载数据库时过滤。

一个简单的例子:

第一个表是Category,有3个字段(id, name, description)。在一个记录中,我有2a的id(一个数字字段),在其他记录中,我有m1lk的名称(一个字符串字段)。

当我单击按钮时,我将数据库加载到DataGridView控件中。我如何阻止visual basic从加载到DataGridView控件的那些记录无效的数据(如在我的例子)。

我尝试使用WHERE和LIKE的SQL查询,就像在

SELECT   IdCategoría, NombreCategoría, Descripción
FROM     Categorías
WHERE    (NombreCategoría LIKE '[!l]%') AND (IdCategoría LIKE '[!abcdefghijklmnñopqrstuvwxyz]')

但是要同时过滤像Angel*, P3ter和Hood8这样的东西真的很难…

请给我一个例子代码在你的答案,所以我可以尝试它。

如果您使用数字数据类型在MS Access表中定义列,它根本不允许像"2a"这样的值。但是文本列允许像"m1lk"这样的值,因为"m1lk"是一个有效的字符串。

快速解决方案

要只选择那些可以被解释为数字的值,使用isnumeric()函数。您需要按照这些行编写SQL语句。

SELECT your-column-list
FROM some-table
WHERE isnumeric(numeric-column-having-bad-data)

注意,像isnumeric("2e5")isnumeric("2d5")这样的表达式将返回True。VBA将"2d5"one_answers"2e5"解释为2^5("2的五次方")。

要选择根本不包含数字的数据,请使用如下的正则表达式。(我不确定你是不是想这么做。)

SELECT your-column-list
FROM some-table
WHERE some-column-name Not Like "*[0-9]*";

最新更新