• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AccessのクエリでvbLfのみ抽出するには)

AccessのクエリでvbLfのみ抽出する方法

このQ&Aのポイント
  • Access2010のクエリー(SQL)を使用して、vbLfが含まれるレコードのみを抽出する方法を説明します。
  • vbLfの代わりにvbCrLfが含まれるレコードのみを抽出する方法も説明します。
  • vbLfが含まれるレコードとvbCrLfが含まれるレコードを分けて抽出する方法を説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.3

こんにちは、No1です 括弧というかフィールド名が足りなかったです。 WHERE [テーブル1].フィールド1 Not Like "*" & Chr(13) & Chr(10) & "*" And [テーブル1].フィールド1 Like "*" & Chr(10) & "*"

yam2012
質問者

お礼

こちらもできました。 ありがとうございました。

その他の回答 (5)

回答No.6

【補足】DBselect()について 回答では、SQL文はテスト済みってのを伝える為に次のDBSelect()を使っています。それ以上の意味はないのでDBSelect()についての説明は割愛しています。 Public Function DBSelect(ByVal strQuerySQL As String, _              Optional colDelimita As String = ";", _              Optional rowDelimita As String = ";") As String On Error GoTo Err_DBSelect   Dim R      As Integer ' 行インデックス   Dim N      As Integer ' 行総数 - 1   Dim cnn     As ADODB.Connection   Dim rst     As ADODB.Recordset   Dim fld     As ADODB.Field   Dim strList   As String ' 全てのデータを区切子で連結して格納      Set cnn = CurrentProject.Connection   Set rst = New ADODB.Recordset   With rst     .Open strQuerySQL, _        CurrentProject.Connection, _        adOpenStatic, _        adLockReadOnly     If Not .BOF Then       N = .RecordCount - 1       .MoveFirst       For R = 0 To N         For Each fld In .Fields           With fld             strList = strList & .Value & colDelimita           End With         Next fld         strList = Mid(strList, 1, Len(strList) - 1) & rowDelimita         .MoveNext       Next R     Else       strList = ""     End If   End With Exit_DBSelect: On Error Resume Next   rst.Close   Set rst = Nothing   DBSelect = IIf(Len(strList) > 0, Replace(strList & "[END]", rowDelimita & "[END]", ""), "")   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 このように ADODB を利用した場合には、ワイルドカードが *→%になります。 【補足】AND を使わないについて。(以下は、私のかってのサイトからの引用です。) パターン照合: LIKE WHERE節にキーワード LIKE を使って、特定の文字列を含む行を抽出することができます。   WHERE <文字型列> LIKE '<値>' <文字型列>には、CHAR型の列の名前を記述し<値>には文字列をシングルクォーテーション(’)で囲んで指定します。<値>の文字列には、次のようなワイルドカード文字列を使うことができます。 % 0個以上の文字に対応します。(%→*) _ 任意の1文字に対応します。  [...] 各カッコ内に指定した文字に対応します。  [^...] 各カッコ内に指定した文字以外に対応します。(^→!) 次に、キーワードLIKEを使った Accessプロジェクトの DBSelect関数の例文を幾つか紹介します。   [イミディエイト]   ? DBSelect("名前, 住所1", "得意先一覧", , "名前 LIKE '山%'",,True)   山田 太郎;大川市;      ? DBSelect("名前, 住所1", "得意先一覧", , "名前 LIKE '_木%'",,True)   鈴木 一郎;久留米市;   ? DBSelect("名前, 住所1", "得意先一覧", , "名前 LIKE '[山,中]%'",,True)   中村 健太;筑後市;山田 太郎;大川市;   ? DBSelect("名前, 住所1", "得意先一覧", , "名前 LIKE '[^山,中]%'",,True)   鈴木 一郎;久留米市;日高 進;柳川市; AND を使わない為には [...] 各カッコ内に指定した文字に対応します。  [^...] 各カッコ内に指定した文字以外に対応します。  をりようしますが、^はAccessでは!を使います。 回答では、目的通りの結果を得ていますが・・・。書き終えて、「ウン!なぜOKなのだ?」と疑問が・・・。でも、それ以上は追求していません。質問者も考えてください。

yam2012
質問者

お礼

>回答では、SQL文はテスト済みってのを伝える為に >次のDBSelect()を使っています。 DBSelect()はユーザー関数だったんですね。 >回答では、目的通りの結果を得ていますが・・・。 >書き終えて、「ウン!なぜOKなのだ?」と疑問が・・・。 >でも、それ以上は追求していません。 >質問者も考えてください。 私も回答No.4に関して お聞きしたかったことがあったのですが 回答No.3でしたかったことが解決しましたので 時間の取れたときに自分で考えてみます。 ありがとうございました。

回答No.5

【補足】なお ? DBSelect("SELECT * FROM Test_1 WHERE NOT Field_1 LIKE '%[!" & Chr(13) & "," & Chr(10) & "][!" & chr(10) & "]%'",,Chr(13)) 1;A B と AND を用いなくてもできるようですが・・・。ちょっと自信はありません。

回答No.4

Private Sub Form_Current()   Select Case ID     Case 1       Me.Field_1 = "A" & Chr(10) & "B"     Case 2       Me.Field_1 = "A" & Chr(13) & "B"     Case 3       Me.Field_1 = "A" & Chr(13) & Chr(10) & "B"     Case Else   End Select End Sub 結果は添付図の通りです。 ? DBSelect("SELECT * FROM Test_1 WHERE Field_1 LIKE '%" & Chr(10) & "%'",,Chr(13)) 1;A B 3;A B ? DBSelect("SELECT * FROM Test_1 WHERE Field_1 LIKE '%" & Chr(13) & Chr(10) & "%'",,Chr(13)) 3;A B 求めるのは、先のSQL文の結果からChr(13) Chr(10) を除外したそれ。 ? DBSelect("SELECT * FROM Test_1 WHERE Field_1 LIKE '%" & Chr(10) & "%' AND NOT Field_1 LIKE '%" & Chr(13) & Chr(10) & "%'",,Chr(13)) 1;A B これで、目出度く目的達成です。 【注意】 %は*に置き換えてください。

yam2012
質問者

補足

基本的なことがよく分からないので教えてください。 ? DBSelect("SELECT * FROM Test_1 WHERE Field_1 LIKE '%" & Chr(10) & "%'",,Chr(13)) は、ACCESSのVBEのイミディエイトウインドウに入力するのでしょうか。 実行するとSubまたはFunctionが定義されていないとか 修正候補:区切り記号または)のコンパイルエラーが発生するのですが? '%"と"%'"の部分ですが'*"と"*'"でよろしいのでしょうか。 よろしくお願いします。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは、No1です。 WHERE ((( [テーブル1].フィールド1) Not Like "*" & Chr(13) & Chr(10) & "*" And ( [テーブル1].フィールド1) Like "*" & Chr(10) & "*")); みたいに括弧で括って下さい。

yam2012
質問者

お礼

教えていただきました式でできました。 ありがとうございました。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは WHERE [テーブル1].フィールド1 Not Like "*" & Chr(13) & Chr(10) & "*" And Like "*" & Chr(10) & "*" で、出来ますか?

yam2012
質問者

補足

非常にすばやい回答ありがとうございます。 上記の式を確認してみたのですが、 クエリー式'SELECT [テーブル1].* FROM テーブル1 WHERE [テーブル1].フィールド1 Not Like "*" & Chr(13) & Chr(10) & "*" And Like "*" & Chr(10) & "*"の構文エラー:演算子がありません。 というエラーになります。 このコードの2つ目のLikeの箇所が反転表示されています。 念のため以下のことを確認してみました。 ・Not Like "*" & Chr(13) & Chr(10) & "*" のみであればOKです。 ・同様に、Like "*" & Chr(10) & "*"のみの場合もOKです。 ・ANDの前後を同じLike "*" & Chr(10) & "*"にすると  同様のエラーになります。 どうもLIKEとANDの併用に問題があるような感じがします。 よろしくお願いします。

関連するQ&A