• 締切済み

文字化け、記号の含まれるフィールド抽出

アクセス初心者です。 現在6万件ほどの住所と名前のデーターべースから、文字化けしていたり記号が入っているデータを探し出すクエリを作成していますが、なかなかうまくいきません。 1. 文字化けを探し出すことは可能でしょうか? 2. 記号が入っているフィールドを探しだすいい方法は無いでしょうか? 3. 名前のフィールドに文字列に数値が入っているものも抽出したいのです。 皆さんでしたら、どのように記述しますか? ど素人な質問ですみません。 どなたかアドバイスをよろしくお願いします。

みんなの回答

noname#140971
noname#140971
回答No.1

<顧客名簿> ID___顧客名________住所 1____鈴木 一郎____東京都〇 2____中村 太郎____大阪府枚方¶市 3____山田 次郎____兵庫県 このような顧客名簿があるとします。 そこで、イミディエイトウインドウで化け文字があるか否かを SQL文で判定してみます。 [イミディエイトウインドウ] ? DBSelect("SELECT Exist_ShapeCharacter(住所, '〇¶') FROM 顧客名簿") -1; -1; 0 つまり、1番目と2番目のレコードに存在することが判ります。 次に、化け文字があるレコードのみに限定し、その列情報の全てを表示してみます。 ? DBSelect("SELECT * FROM 顧客名簿 WHERE Exist_ShapeCharacter(住所, '〇¶')=-1") 1;鈴木 一郎;1;東京都〇; 2;中村 太郎;1;大阪府枚方¶市; 一体、どのような化け字があるのかが問題ですが・・・。 が、このように複数の化け文字が存在するのか否かをチェックする関数を利用すれば幾つかは確実に引っかかるでしょう。 なお、クエリでは、このように簡単にSQL文をテストできません。 そこで、このようにイミディエイトウインドウでSQL文をテストされた方が手っ取り早いと思います。 そうして、試されずみの SQL文をクエリにコピペするのが簡単。 もちろん、DBSelect()、 Exist_ShapeCharacter() の類は標準モジュールに用意する必要があります。 Public Function Exist_ShapeCharacter(ByVal TEXT As String, ByVal Shapes As String) As Boolean   Dim I As Integer   Dim L As Integer   Dim M As Integer      L = Len(Shapes)   M = Len(TEXT)   For I = 1 To L     If M <> Len(Replace(TEXT, Mid(Shapes, I, 1), "")) Then       Exist_ShapeCharacter = True       Exit For     End If   Next I End Function Public Function DBSelect(ByVal strQuerySQL As String, _              Optional ByVal strSeparator As String = ";") As String On Error GoTo Err_DBSelect   Dim I   As Integer   Dim J   As Integer   Dim R   As Integer   Dim C   As Integer   Dim M   As Integer   Dim N   As Integer   Dim rst  As ADODB.Recordset   Dim fld  As ADODB.Field   Dim Datas As String      Set rst = New ADODB.Recordset   ' =================   ' Begin With: rst   ' -----------------   With rst      .Open strQuerySQL, _         CurrentProject.Connection, _         adOpenStatic, _         adLockReadOnly      If Not .BOF Then       M = .RecordCount - 1       N = .Fields.Count - 1       .MoveFirst       For R = 0 To M         For C = 0 To N           Datas = Datas & .Fields(C) & strSeparator         Next C         Datas = Datas & vbCrLf         .MoveNext       Next R      End If   End With   ' ---------------   ' End With: rst   ' =============== Exit_DBSelect:   DBSelect = Left(Datas, Len(Datas) + (Len(Datas) > 0))   Exit Function Err_DBSelect:   MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"   Resume Exit_DBSelect End Function

kenken433
質問者

お礼

とても丁寧にありがとうございます。 一度試しにやってみます。

関連するQ&A

  • アクセス2010でフィールドから抽出し加工の仕方

    アクセスの初心者です。 助けてください。 現在、今週中に、 下記の事を今週中にしあげなくてはいけません。 (1)3000件以上のデータから特定のフィールドから不規則な文字列(ファイル名)を抽出し (2)その文字列にHTMLのタグを前後に加え、 (3)その3000件以上あるデータの同じレコードの別フィールドに挿入する をしたいのですが、 どのようなクエリを使っていけば確実に間違いなく出来るかを どなたかお教え下さい。 助けてください。

  • Accessでフィールド内から文字列を抽出するには

    Accessについてどなたか教えて頂けますでしょうか? 以下のような、Accessのフィールド内において ---------------------------------------------- 今日の質問 <1件目> 1件目の問合せ内容 <1終わり> <2件目> 2件目の問合せ内容 <2終わり> おつかれさまでした。 ---------------------------------------------- 1件目の問合せ内容 と 2件目の問合せ内容 を抽出して、 質問の内容だけを「リスト化」したいと考えています。 その場合、クエリの中でどのような式を記述すれば良いのでしょうか? 「文字数」や「内容」は質問者によって変化するのですが Access初心者のため、できればVBAを使用したくないと思っています。 どなたか、お分かりになる方はいらっしゃいますでしょうか? どうぞよろしくお願い致します。

  • アクセスのクエリ抽出について

    アクセスで、テキストデータを開き クエリウィザードからフィールドの抽出条件として 文字が含まれているものと文字が含まれていないものと それぞれ抽出したいのですが Likeの式から抽出出来るのでしょうか? なにかの文字を含んでるデータに対しては 抽出できるのですが、うまく抽出出来ません。 下記のようなイメージで抽出したいと思ってます。 例 データ合計5件    "00000001234-23 " "12345672-1-2 " "" "55145672-1-3-2 " ""    データあり3件    "00000001234-23 " "12345672-1-2 " "55145672-1-3-2 "    データなし2件    "" "" 宜しくお願いします。

  • クエリーで全部のデータを抽出する方法

    アクセスのクエリーでデータを抽出する時、具体的にはフォームでデータを入力し抽出するのですが、たとえばフォームのテキストボックスに数字を入れないとそのクエリーのフィールドは抽出がかからないようにしたいのです。(抽出フィールドが1つなら数字をいれなければクエリーのデータすべてが表示される) ----------------------------------- フィールド   A      B     c テーブル   テーブル1 テーブル1 テーブル1 抽出条件    []    [] または    ---------------------------------- 上はクエリーのデザインですがクエリーをひらくと抽出条件をきいてきますがA列は何も入力しないでB列では1と入力するとBの列に1の入ってるレコードを表示させたいのです。(もし空欄が無理ならAの列の時何かある文字を入力すると全部表示になる、でもいいです。) まわりくどくなりましたが、アクセス超入門者です。よろしくおねがいします。

  • Accessのテーブルフィールド属性の抽出

    Access2003で作成したデータベースで、各フィールド(IDや名前、住所など)の属性(数値型といったデータ型やさらなる詳細(「標準」「ルックアップ」で設定できる内容)、長整数型、値要求「いいえ」など)を一度に抽出することはできないでしょうか。 よろしくお願いします。

  • フィールドにテキストしか入ってないレコードの抽出

    ハイパーリンク型のフィールドにテキストしか入ってないレコードを取り出したいです。 1レコード目が 表示文字列:http://jp.msn.com アドレス:http://jp.msn.com (クリックしたらURLが開く) 2レコード目が 表示文字列:http://jp.msn.com アドレス:null (クリックしても何も起きない) の二つのレコードがあります。 クエリで2レコード目のように ハイパーリンク型のフィールドなのに、表示文字列しか入ってないレコードを抜き出したいのですが やり方がわかりません。 クエリの抽出条件に Not Like "*#*" を入れてもどちらも該当してしまいます。 ハイパーリンク型のフィールドのアドレスがNullのレコードの抜き出し方を教えてください。 よろしくお願いいたします。 (当方access2003です)

  • アクセスフィールドの抽出条件について。

    アクセスに取り込んだデータに 連続番号があったとします。 クエリの抽出条件で 連続番号が奇数の場合のレコードを抽出 連続番号が偶数の場合のレコードを抽出というように 奇数偶数の作業列を作らず 抽出条件を一気に判定することは出来ますでしょうか。 一応試したのが作業列を作る方法ですが 例えば50フィールドあるクエリを作成し 連続番号をキーに フィールド mod 2 とすると 奇数偶数の判定が出来 抽出条件は満たすのですが フィールドのmodの判定で 連続番号が上書きされてしまいます。 また http://www.mahoutsukaino.com/ac/ac2000/ac2000/nigyo/gyo02.htmの ようにすると フィールド数が足りなく すべてのフィールドが追加出来なくなります。 どなたかアドバイスよろしくお願いします。

  • 文字型フィールドの数値データの抽出

    mdbファイルを、VB6.0+ADO2.7で扱っています。 文字型フィールドに数値データが入力されたレコードを抽出したいのですが、何かよい方法はないでしょうか? そのフィールドに文字型データが入力されているレコードもあり、それを除外したいのです。 SQLでも、.filterプロパティでも結構です。お知恵を下さい。 よろしくお願いします。

  • 【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです

    【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです。 Access2003を使っています。 困っている状況は以下のようなもです。 ■テーブル1  ・フィールド1 ■クエリ1  ・フィールドA:フィールド1  ・フィールドB:[フィールドA]   【抽出条件】>=10 このような条件で、クエリを実行すると、 「パラメータの入力 フィールドA」というダイアログが立ち上がってしまいます。 上記載のクエリ1でフィールドAの[]は自然についてしまうのではずせません。 今はもう一つクエリを作る事でこの状況はなんとかしましたが、フィールドに別名をつける毎にクエリを作るとクエリの数が多くなってしまうので困っています。 クエリでフィールドに別名をつけた場合は、そのクエリ上でその別名を使って抽出をかけることはできないのでしょうか? よろしくお願いします。

  • Accessで文字列を連結しフィールドを作成するには?

    アクセスのクエリーでテーブルから2つの文字列フィールド引っ張ってきて、その文字列データをくっつけることがやりたいのですが、どのようにやったらよいのでしょうか? ちなみにExcelの場合はCONCATENATE関数で2つのセルを 1つのセルにまとめることが可能です。アクセスで関数を見てみたのですが、そのような関数はありませんでした。 誰かよい方法があれば教えていただけませんか? よろしくお願いします。