過去ログ

                                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のレコード数はゼロ)。
どこに問題があるのか、アドバイスいただけると助かります。よろしくお願いします。

 ───────────────────────────────────────  ■題名 : Re:追加クエリがうまく動きません  ■名前 : クロ  ■日付 : 04/1/16(金) 18:23  -------------------------------------------------------------------------
   >  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
これでいいのでは?

 ───────────────────────────────────────  ■題名 : Re:追加クエリがうまく動きません  ■名前 : ほびっと  ■日付 : 04/1/17(土) 9:57  -------------------------------------------------------------------------
   クロさん、ありがとうございます。

>>  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
>これでいいのでは?

変更してみましたが、うまく動いてくれません。
残念ながら、状況は変わりません。
引き続きアドバイスいただけませんか?

 ───────────────────────────────────────  ■題名 : Re:追加クエリがうまく動きません  ■名前 : クロ  ■日付 : 04/1/17(土) 10:59  -------------------------------------------------------------------------
   おはようございます。

>引き続きアドバイスいただけませんか?

strSQL = "(SID=1) AND (KSE Like '深*');"
ここの最後の「"」の前に「;」ありませんね。(自分も見落としてました...)
これでどうでしょうか?

 ───────────────────────────────────────  ■題名 : Re:追加クエリがうまく動きません  ■名前 : ほびっと  ■日付 : 04/1/17(土) 11:20  -------------------------------------------------------------------------
   クロさん おはようございます。

>strSQL = "(SID=1) AND (KSE Like '深*');"
>ここの最後の「"」の前に「;」ありませんね。(自分も見落としてました...)
>これでどうでしょうか?

「;」入れてみましたが、ダメでした。状況は同じです。

 ───────────────────────────────────────  ■題名 : Re:追加クエリがうまく動きません  ■名前 : クロ  ■日付 : 04/1/17(土) 11:41  -------------------------------------------------------------------------
   >「;」入れてみましたが、ダメでした。状況は同じです。
cmdP.CommandText = "INSERT INTO TWKA SELECT * FROM TWK WHERE " & _
          "(SID=1) AND (KSE Like '深*');"
と直接書かないとダメなのかな?(ADOは不慣れなもんで...)

 ───────────────────────────────────────  ■題名 : Re:追加クエリがうまく動きません  ■名前 : ほびっと  ■日付 : 04/1/17(土) 12:17  -------------------------------------------------------------------------
   クロ さん何度もありがとうございます。
>>「;」入れてみましたが、ダメでした。状況は同じです。
>cmdP.CommandText = "INSERT INTO TWKA SELECT * FROM TWK WHERE " & _
>          "(SID=1) AND (KSE Like '深*');"
>と直接書かないとダメなのかな?(ADOは不慣れなもんで...)

直接書いてもダメでした。状況は同じです。

いずれの書き方でも、WHERE以下、SID=1だけだとちゃんと動いてくれます。
また、日付の入ったフィールドに「Between And」を指定したような場合は、きちんと動いてくれます。
なぜかKSE(文字列)フィールドにLikeで条件かけるとダメなんです。
直接クエリでやるとちゃんと動き、VBAだとだめです。エラーメッセージは出ず、抽出レコードはゼロになります。

どうか引き続きアドバイスお願いします。

 ───────────────────────────────────────  ■題名 : Re:追加クエリがうまく動きません  ■名前 : クロ  ■日付 : 04/1/17(土) 13:17  -------------------------------------------------------------------------
   strSQL = "(SID=1) AND (KSE Like '深%');"

やっとわかりました。
「*」は使わずに「%」を使ってください。

 ───────────────────────────────────────  ■題名 : うまく動くようになりました!  ■名前 : ほびっと  ■日付 : 04/1/17(土) 13:33  -------------------------------------------------------------------------
   クロさん、ありがとうございます。

>strSQL = "(SID=1) AND (KSE Like '深%');"
>
>やっとわかりました。
>「*」は使わずに「%」を使ってください。

「%」を使って、ばっちり動くようになりました。
本当にありがとうございました。感謝です。

 ───────────────────────────────────────  ■題名 : Re:追伸  ■名前 : クロ  ■日付 : 04/1/17(土) 13:21  -------------------------------------------------------------------------
   ADOのExecute場合のみらしいです。
DOAやRunSQLの場合は「*」でも大丈夫らしいです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 487