タイトル : Re: SQLサーバの更新 投稿日 : 2013/12/14(Sat) 19:51 投稿者 : 魔界の仮面弁士
> JU-NO JU- NAME JU- JUSYO JU-CODE > Dim wkstrSql = "select JU-NO , JU- NAME , JU- JUSYO , JU-CODE from JusyoF" [JU-NAME] と[JU-JUSYO] ではなく、 [JU- NAME]と[JU- JUSYO]なのですね? 本来は、空白やマイナス記号を含んだ列名を作るべきでは無いのですが、 どうしてもそうした名前が必要な場合には、それぞれを = "select [JU-NO], [JU- NAME], [JU- JUSYO], [JU-CODE] from [JusyoF]" のように、角括弧で囲む必要があります。 そうしないと、「JU-CODE」が「JU から CODE を引いた値」という数式として 誤解されてしまいますので。 仮に、「-」の部分がマイナス記号で無かったとしても、空白が含まれていると、 それが別名の指定であると誤解され、 = "select [JU-NO], [JU-] AS [NAME], [JU-] AS [JUSYO], [JU-CODE] from [JusyoF]" の意味で認識されてしまうかと思います。 > Dim pk() As DataColumn = {JusyoFDt.Columns("JU-NO")} 上記では「JU-NO」という列名にしていますが、 > pc("JU-NO _New").Value = row("JU-NO ") こちらは「JU-NO 」という列名を右辺に指定していますね。 本当の列名はどちらなのでしょうか? もし、末尾に空白を含む名前ならであれば、SQL 文を記述する際、 SELECT * FROM の構文を使うか、先述したように フィールド名を角括弧で囲まないと呼び出せないはずです。 (囲み記号はダブルクォーテーションでも OK) 今のままだと、そもそも > 最後のReturn cmd.ExecuteNonQueryのロジックで > “'?' 付近に不適切な構文があります。” に到達する前にエラーになってしまいそうですが…。 > “'?' 付近に不適切な構文があります。” ? を使うのは System.Data.Odbc です。System.Data.SqlClient の場合は = "UPDATE [JusyoF] SET [JU-NO] = @p1, …" とか = "UPDATE [JusyoF] SET [JU-NO] = [@JU-NO _New], …" などのように、@で始まる名前で指定します。 Parameters.Add で使う名前も、同様に同じ名前をセットしてください。 |