2011-07-05 6 views
0

私はこのデータベースを持っていると私は、Visual Studioのデータベースを持っている2005年フィルター間違ったデータベースレコード(Visual Studio 2005の)(Visual Basicの)(正規化)

でVisual Basicフォームでそれをロードする必要があります6の表には、フォームにデータベースをロードするときにフィルタリングする必要のある間違ったデータが含まれています。

簡単な例:

最初の表は、3つのフィールド(ID、名前、説明)を有するカテゴリーです。あるレコードにはid(数字のみのフィールド)の2aがあり、他のレコードにはm1lkという名前(文字列のみのフィールド)があります。

ボタンをクリックすると、データベースがDataGridViewコントロールに読み込まれます。ビジュアルベーシックが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]') 

のように、使用してみてくださいしているが、それはエンジェル*とP3terとHood8、同時にすべてのようなものをフィルタリングすることは本当に難しいです

答えにサンプルコードを表示してみてください。

ありがとうございます。

+0

-1は研究努力を示していません。 「答えにサンプルコードを表示して試してみてください」というのではなく、あなたが書いたコードを*編集して試してみてください。 (それはまた、私の "-1"を取り消すことを奨励します。) –

+0

StackOverflowにはよくある質問があります。 http://stackoverflow.com/faq#questions –

+0

SQLステートメントを送信していただきありがとうございます。あなたの質問で-1を削除しましたが、私はあなたの非構造的なコメントにフラグを立てました。 –

答えて

0

数値データ型を使用して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」と「2e5」の両方を2^5(「5番目の2乗の2乗」)と解釈します。

数字のないデータを選択するには、このような正規表現を使用します。 (私はあなたがこれをやろうとしているとは確信していません)。

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

はい、通常、正規化されたデータベース(または定義済みのもの)は、そのデータ型で既に定義されているデータ型以外のデータ型を受け入れたり含んではいけませんが、このデータベースは正規化されていないため、2aやm1lkのようなものです。私は 'NOT LIKE '* [0-9] *' 'を試みますが、うまくいかない、私はまだP3terとWooh8を得て、そのような記録を... – Ashir

+0

@Ashir:「明確に定義された」は正しい用語です。 「正規化された」とは、SQLデータベースについて話しているときに、まったく異なるものを意味します。 'Not Like" * [0-9] * "'という表現は実際には "P3ter"と "Wooh8"の値を取り除きます。それを右の列に適用していることを確認してください。 –

関連する問題