質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.80%

CommandTextプロパティの設定の仕方がわからない

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 6,048

rebell

score 17

Excelでお仕事

VBAの学習をしております。
削除機能を追加するにあたコードを書いていたのですが、
「 Command オブジェクトの CommandText が設定されていません。」と実行時エラーが出てしまいました。

調べてみると『ADO.CommandオブジェクトにCommandTextプロパティを設定せずExecuteメソッドを実行しようとして出たエラーです』とあり、実行するSQLが空になっていると...

いろんなサイトを回ったのですが知識不足で解決出来ず2時間無駄にしてしまったので、
ご存知の方いればご教授していただきたいです。

よろしくお願いします。

Private Sub BTN_DEL_Click()

    Dim dbCon As ADODB.Connection                                   ' ADODB.Connection
    Dim dbCmd As ADODB.Command                                   ' ADODB.Command
    Dim strBusyoCd As String                                                ' 選択部署コード
    Dim strYakuCd As String                                                 ' 選択役職コード
    Dim strSQL As String                                                       ' SQL文編集WORK
    Dim blnUpdate As Boolean

    Dim msg As String                                                          'MsgBox
    Dim ret As String                                                             '戻り値
    Dim sql As String                                                             'sql
    Dim Command As String

        '確認する
        msg = "このデータを削除しますか?"
        ret = MsgBox(msg, vbQuestion + vbOKCancel, "g_cnsTitle")
            If ret = vbOK Then
                    ' データベースへの接続
                    If Not FP_GetSqlConnection(dbCon) Then
                        Me.Hide
                        Exit Sub
                    End If

            'SqlConnection.CreateCommand Method
            dbCon.CreateCommand
            dbCmd.CommandText = strSQL

                ' 登録するSQL文を作る
                sql = "DELETE FROM MST_HAIZOKU WHERE"

                    ' 実行する
                    dbCon.Execute (sql)

                MsgBox "削除しました。", vbInformation + vbOKOnly, ""

                Call GP_StartSCUPD

            Else
                MsgBox "処理を中断します"

            End If

    ' データベース接続を閉じる
    dbCon.Close
    Set dbCon = Nothing
    g_blnReturnValue = True
    Me.Hide

End Sub

'SqlConnection.CreateCommand Method
dbCon.CreateCommand
dbCmd.CommandText = strSQL

メソッドでコマンドのインスタンスっていうのはどうすればよいのでしょうか?
JavaならNewをするような認識なのですが、、

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+2

メソッドでコマンドのインスタンスっていうのはどうすればよいのでしょうか?
JavaならNewをするような認識なのですが、、

VBAも New です。下記のような感じ。

Set dbCmd = New ADODB.Command

ただし、今回のコードでは、dbCmd は使用してないので、不要です。

               sql = "DELETE FROM MST_HAIZOKU WHERE"

                    ' 実行する
                    dbCon.Execute (sql)

でエラーが出るのは、"DELETE FROM MST_HAIZOKU WHERE" のSQLが間違っているからです。
WHERE の後に、抽出条件式が必要です。

MST_HAIZOKUテーブルの主キーフィールドに対して、エクセルシートのカレント行のキー値で抽出する式が必要ですね。

前の質問の時にも言いましたが、参照しているサイトの内容と質問者さんのスキルがあっていないと思います。
参照しているサイトはVBA、ADO、SQLの基本は習得しているレベルの人を対象とするサイトです。

VBAの入門書(サイト)、SQLの入門書(サイト)でとりあえすで基本を理解してからでないと、
エラーがでるたびにここで質問していても進展しないし、スキルアップにもならないと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/14 09:40

    次の案件で使うのと、簡単だからすぐ終わるよねと、言われて焦ってわからないまま質問をして申し訳ないです。。
    昨日スッキリのSQL本を購入したのでVBAと平行して基礎を固めようかと思います。

    先回の質問に続きありがとうございました。

    キャンセル

+1

dbConはコネクションなので、ここからCommandを生成し、さらにCommand.CommandTextに対してSQL文を設定してやる必要があります。

確認できてないですがdbCon.CreateCommandみたいなメソッドでコマンドのインスタンスを生成し、その後そのプロパティにdbCmd.CommandText = strSQLみたいな感じでSQL文設定できませんか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/13 17:38

    ありがとうございます。
    設定してみます!

    キャンセル

+1

(dbConに接続情報が設定されているとして)SQL文が格納されている変数の指定が誤っています。

          sql= "DELETE FROM MST_HAIZOKU WHERE"
          ' 実行する
          dbCon.Execute (sql)


Execute メソッド (ADO Connection)

「 Command オブジェクトの CommandText が設定されていません。」

dbCmd使用していないみたいなんですけど、本当にこのコード上のエラーですか? 

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/13 17:37

    ありがとうございます。
    実行してデバッグをすると『dbCon.Execute (sql)』の部分がハイライトされるので、おそらくは・・

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る