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

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

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

22026閲覧

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

rebell

総合スコア19

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/11/13 07:57

編集2018/11/13 09:02

Excelでお仕事

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

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

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

よろしくお願いします。

VBA

1Private Sub BTN_DEL_Click() 2 3 Dim dbCon As ADODB.Connection ' ADODB.Connection 4 Dim dbCmd As ADODB.Command ' ADODB.Command 5 Dim strBusyoCd As String ' 選択部署コード 6 Dim strYakuCd As String ' 選択役職コード 7 Dim strSQL As String ' SQL文編集WORK 8 Dim blnUpdate As Boolean 9 10 Dim msg As String 'MsgBox 11 Dim ret As String '戻り値 12 Dim sql As String 'sql 13 Dim Command As String 14 15 '確認する 16 msg = "このデータを削除しますか?" 17 ret = MsgBox(msg, vbQuestion + vbOKCancel, "g_cnsTitle") 18 If ret = vbOK Then 19 ' データベースへの接続 20 If Not FP_GetSqlConnection(dbCon) Then 21 Me.Hide 22 Exit Sub 23 End If 24 25 'SqlConnection.CreateCommand Method 26 dbCon.CreateCommand 27 dbCmd.CommandText = strSQL 28 29 ' 登録するSQL文を作る 30 sql = "DELETE FROM MST_HAIZOKU WHERE" 31 32 ' 実行する 33 dbCon.Execute (sql) 34 35 MsgBox "削除しました。", vbInformation + vbOKOnly, "" 36 37 Call GP_StartSCUPD 38 39 Else 40 MsgBox "処理を中断します" 41 42 End If 43 44 ' データベース接続を閉じる 45 dbCon.Close 46 Set dbCon = Nothing 47 g_blnReturnValue = True 48 Me.Hide 49 50End Sub
'SqlConnection.CreateCommand Method dbCon.CreateCommand dbCmd.CommandText = strSQL

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

メソッドでコマンドのインスタンスっていうのはどうすればよいのでしょうか?
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/13 10:36

hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rebell

2018/11/14 00:40

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

0

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

VBA

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

Execute メソッド (ADO Connection)

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

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

投稿2018/11/13 08:28

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rebell

2018/11/13 08:37

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

0

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

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

投稿2018/11/13 08:15

shun_kuwa

総合スコア187

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rebell

2018/11/13 08:38

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問