Page 487 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼追加クエリがうまく動きません ほびっと 04/1/16(金) 14:39 ┗Re:追加クエリがうまく動きません クロ 04/1/16(金) 18:23 ┗Re:追加クエリがうまく動きません ほびっと 04/1/17(土) 9:57 ┗Re:追加クエリがうまく動きません クロ 04/1/17(土) 10:59 ┗Re:追加クエリがうまく動きません ほびっと 04/1/17(土) 11:20 ┗Re:追加クエリがうまく動きません クロ 04/1/17(土) 11:41 ┗Re:追加クエリがうまく動きません ほびっと 04/1/17(土) 12:17 ┣Re:追加クエリがうまく動きません クロ 04/1/17(土) 13:17 ┃ ┗うまく動くようになりました! ほびっと 04/1/17(土) 13:33 ┗Re:追伸 クロ 04/1/17(土) 13:21 ─────────────────────────────────────── ■題名 : 追加クエリがうまく動きません ■名前 : ほびっと ■日付 : 04/1/16(金) 14:39 -------------------------------------------------------------------------
Access2002+Win2000です。 以下はコードの一部ですが、追加クエリがうまく動きません。 TWK、TWKAともテーブルで、各フィールド名と型は同じです。 SIDはフィールド名で長整数型、KSEはフィールド名で文字列型です。 目的はTWKよりSIDが1で、KSEが「深」で始まるレコードを抽出し、TWKAに追加したいのです。 --------------------------------------- Dim cmdP As New ADODB.Command Dim strSQL As String '--- Del TWKA --- Set cmdP = New ADODB.Command Set cmdP.ActiveConnection = CurrentProject.Connection cmdP.CommandText = "DELETE * FROM TWKA" cmdP.Execute , , adCmdText '--- TWK→TWKA WHERE strSQL---指定された条件でTWKAを作成する strSQL = "(SID=1) AND (KSE Like " & Chr$(34) & "深*" & Chr$(34) & ")" strSQL ="INSERT INTO TWKA SELECT * FROM TWK WHERE " & strSQL cmdP.CommandText = strSQL cmdP.Execute , , adCmdText Set cmdP = Nothing --------------------------------------- strSQLは「INSERT INTO TWKA SELECT * FROM TWK WHERE (SID=1) AND (KSE Like "深*")」となり、これをAccessのクエリの新規作成で、SQLビューから作成すると、条件に合ったレコードがTWKAに追加されます。 ところが、上記コードだと、レコードは追加されません(TWKAのレコード数はゼロ)。 どこに問題があるのか、アドバイスいただけると助かります。よろしくお願いします。 |
> strSQL = "(SID=1) AND (KSE Like " & Chr$(34) & "深*" & Chr$(34) & ")" > strSQL ="INSERT INTO TWKA SELECT * FROM TWK WHERE " & strSQL strSQL = "(SID=1) AND (KSE Like '深*')" strSQL = "INSERT INTO TWKA SELECT * FROM TWK WHERE " & strSQL これでいいのでは? |
クロさん、ありがとうございます。 >> strSQL = "(SID=1) AND (KSE Like " & Chr$(34) & "深*" & Chr$(34) & ")" >> strSQL ="INSERT INTO TWKA SELECT * FROM TWK WHERE " & strSQL > >strSQL = "(SID=1) AND (KSE Like '深*')" >strSQL = "INSERT INTO TWKA SELECT * FROM TWK WHERE " & strSQL >これでいいのでは? 変更してみましたが、うまく動いてくれません。 残念ながら、状況は変わりません。 引き続きアドバイスいただけませんか? |
おはようございます。 >引き続きアドバイスいただけませんか? strSQL = "(SID=1) AND (KSE Like '深*');" ここの最後の「"」の前に「;」ありませんね。(自分も見落としてました...) これでどうでしょうか? |
クロさん おはようございます。 >strSQL = "(SID=1) AND (KSE Like '深*');" >ここの最後の「"」の前に「;」ありませんね。(自分も見落としてました...) >これでどうでしょうか? 「;」入れてみましたが、ダメでした。状況は同じです。 |
>「;」入れてみましたが、ダメでした。状況は同じです。 cmdP.CommandText = "INSERT INTO TWKA SELECT * FROM TWK WHERE " & _ "(SID=1) AND (KSE Like '深*');" と直接書かないとダメなのかな?(ADOは不慣れなもんで...) |
クロ さん何度もありがとうございます。 >>「;」入れてみましたが、ダメでした。状況は同じです。 >cmdP.CommandText = "INSERT INTO TWKA SELECT * FROM TWK WHERE " & _ > "(SID=1) AND (KSE Like '深*');" >と直接書かないとダメなのかな?(ADOは不慣れなもんで...) 直接書いてもダメでした。状況は同じです。 いずれの書き方でも、WHERE以下、SID=1だけだとちゃんと動いてくれます。 また、日付の入ったフィールドに「Between And」を指定したような場合は、きちんと動いてくれます。 なぜかKSE(文字列)フィールドにLikeで条件かけるとダメなんです。 直接クエリでやるとちゃんと動き、VBAだとだめです。エラーメッセージは出ず、抽出レコードはゼロになります。 どうか引き続きアドバイスお願いします。 |
strSQL = "(SID=1) AND (KSE Like '深%');" やっとわかりました。 「*」は使わずに「%」を使ってください。 |
クロさん、ありがとうございます。 >strSQL = "(SID=1) AND (KSE Like '深%');" > >やっとわかりました。 >「*」は使わずに「%」を使ってください。 「%」を使って、ばっちり動くようになりました。 本当にありがとうございました。感謝です。 |
ADOのExecute場合のみらしいです。 DOAやRunSQLの場合は「*」でも大丈夫らしいです。 |