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

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

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

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

1回答

15892閲覧

「変数の名前/数が無効です」のエラーメッセージがでます

nanae2222

総合スコア29

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2015/08/11 06:29

現在下記のようなコードを書いています。
メインフォームで、クラス1のSqlPublish関数にSQL文とバインド変数名とその値を入れた配列を渡しており、データテーブルが返ってくるようにしているのですが、クラス1の DApt.Fill(DSet, "M_IRAI") あたりで止まってしまいます。そして「変数の名前/数が無効です」というエラーがでるのですが、どこが間違っているのか分かりません。教えて頂けないでしょうか。

----Main Form-------------------
Dim StBi As New System.Text.StringBuilder()

StBi.Append("select IRAISHA_CD AS コード,NAME_KN AS カナ,NAME _KJ AS 漢字,") StBi.Append("substr(POST_NO,1,3) || '-' ||substr(POST_NO,4) AS 郵便 番号,ADDRESS1 AS 住所1,ADDRESS2 AS 住所2,TEL,FA X ") StBi.Append("from M_IRAI ") StBi.Append("where NAME_KN like :P_kana and NAME_KJ like :P_kan j ") StBi.Append("order by IRAISHA_CD") Dim str() As String = {"P_kana", Kana_txt.Text, "P_kanji", Kanji_txt.Text} Dim c1 As New lass1 c1.SqlPublish(StBi.ToString(), Str)

-----Class1------------------------
Public Function SqlPublish(ByVal sql As String, ByVal str() As String) As DataTable

Dim DSet As DataSet Try Using Comd As New OracleCommand(sql, Conn) 'Comdオブジェクトの生成 For i = 0 To str.Length / 2 Step 2 Comd.BindByName = True 'OracleCommandにパラメータを追加 Dim para As String = str(i) Comd.Parameters.Add(para, OracleDbType.Varchar2, ParameterDirection.Input) Dim kakuninn As String = str(i + 1) Comd.Parameters.Item(para.ToString()).Value = "%" & kakuninn & "%" Next Console.WriteLine(sql) Dim DApt As New OracleDataAdapter DApt.SelectCommand = Comd DSet = New DataSet DApt.Fill(DSet, "M_IRAI") Return DSet.Tables("M_IRAI") End Using Catch ex As Exception MessageBox.Show(ex.Message) 'Return 0 End Try End Function

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

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

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

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

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

guest

回答1

0

ソースのコピペミスでなければ、エラーメッセージの通りパラメータ名が食い違っているように見えます。

StBi.Append("where NAME_KN like :P_kana and NAME_KJ like :P_kanj ")

Dim str() As String = {"P_kana", Kana_txt.Text, "P_kanji", Kanji_txt.Text}

前者がP_kanjで後者がP_kanjiになっています(前者に最後のiが足りない)

投稿2015/08/12 14:55

TetsuyaZama

総合スコア216

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問