タイトル : Re^2: SQLサーバの更新 投稿日 : 2013/12/14(Sat) 23:44 投稿者 : かっちゃん
> > 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 で使う名前も、同様に同じ名前をセットしてください。 魔界の仮面弁士 様 ありがとうございます。 @p1, …" ですか ACCESSでは更新できたのに SQLサーバーではなぜと、色々とロジックを変えてやってみましたが できなかったので、助かりました。 さっそく月曜日に実施してみます。 本当に本当に ありがとうございました かっちゃん |