tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 で使う名前も、同様に同じ名前をセットしてください。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。