我有这个数据库,我需要在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]*";