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

タイトル SQLサーバの更新
投稿日: 2013/12/14(Sat) 17:41
投稿者かっちゃん
いつもお世話になります
大変助かっております。
色々してみたのですが、更新エラーが直りません
よろしくお願いいたします

データベース:SQLサーバ2008
プログラム :VB2010
OS    :Windows7

テーブル:JusyoF
  JU-NO   JU- NAME     JU- JUSYO   JU-CODE
      1        AAA         東京都        A15
      2        BBB         埼玉県        B25
      3        CCC         神奈川県      C30
      4        DDD         千葉県        D45
      5        EEE         山梨県        E55

更新内容

テーブルJusyoFのJU-NO=3のJU-CODEをC35に変更するプログラムを
VB2010で作成中ですが更新でエラーになります。

最後のReturn cmd.ExecuteNonQueryのロジックで
“'?' 付近に不適切な構文があります。”
色々変更してみましたが、直りませんでした
すみません。よろしくお願いいたします

定義
Imports System.Data.SqlClient
Public Cnn As New SqlClient.SqlConnection
Public Cmd As New SqlCommand
Public Adp As SqlClient.SqlDataAdapter
Private JusyoFDs As DataSet
Private JusyoFDt As DataTable
Dim glstrCnpath = "Persist Security Info=False;" _
              & "User ID=sa;" _
              & "Password=PASS;" _
              & "Initial Catalog=JusyoS;" _
              & "Data Source=192.168.1.10;"
Cnn = New SqlConnection(glstrCnpath)
Cmd.Connection = Cnn
Cnn.Open()

設定
Try
  Dim wkstrSql = "select JU-NO , JU- NAME , JU- JUSYO , JU-CODE from JusyoF"
  Cmd.CommandText = wkstrSql
  Adp = New SqlDataAdapter(Cmd)
  JusyoFDs = New DataSet
  Adp.Fill(JusyoFDs, "JusyoF")
  JusyoFDt = JusyoFDs.Tables("JusyoF")
Catch ex As Exception
  MessageBox.Show(ex.ToString, "エラー")
End Try

更新
Dim dtrow As DataRow
Dim pk() As DataColumn = {JusyoFDt.Columns("JU-NO")}
Dim wkTxt1 As Byte
Dim wkTxt2 As String
wkTxt1 = 3
wkTxt2 = “C35”
JusyoFDt.PrimaryKey = pk
dtrow =JusyoFDt.Rows.Find(wkTxt1)
dtrow("JU-CODE") = Trim(wkTxt2)
Call SubmitChangesByHand()

Private Sub SubmitChangesByHand()
  Dim cmdUpdate As SqlCommand = CreateUpdateCommand()
  Dim row As DataRow
  Dim intRowsAffected As Integer
  Dim dvrs As DataViewRowState
  dvrs = DataViewRowState.ModifiedCurrent _
         Or DataViewRowState.Deleted Or DataViewRowState.Added
  For Each row In JusyoFDt.Select("", "", dvrs)
     Select Case row.RowState
       Case DataRowState.Modified
         intRowsAffected = SubmitUpdate(row, cmdUpdate)
     End Select
     If intRowsAffected = 1 Then
       row.AcceptChanges()
      Else
       row.RowError = "更新が失敗"
     End If
  Next row
End Sub

Private Function CreateUpdateCommand() As SqlCommand
 Dim strSQL As String
  strSQL = "UPDATE [JusyoF] " & _
          " SET JU-NO = ? ,  JU-CODE  = ? " & _
          " Where JU-NO = ? "
  Dim cmd As New SqlCommand(strSQL, Cnn)
  Dim pc As SqlParameterCollection = cmd.Parameters
  pc.Add("JU-NO _New", SqlDbType.Int)
  pc.Add("JU-CODE _New", SqlDbType.VarChar)
  pc.Add("JU-NO _Orig", SqlDbType.Int)
  pc.Add("JU-CODE _Orig", SqlDbType.VarChar)
  Return cmd
End Function

Private Function SubmitUpdate(ByVal row As DataRow, _
                              ByVal cmd As SqlCommand) As Integer
  Dim pc As SqlParameterCollection = cmd.Parameters
  pc("JU-NO _New").Value = row("JU-NO ")
  pc("JU-CODE _New").Value = row("JU-CODE ")
  pc("JU-NO _Orig").Value = row("JU-NO ", _
                                 DataRowVersion.Original)
  pc("JU-CODE _Orig").Value = row("JU-CODE ", _
                                DataRowVersion.Original)
  Return cmd.ExecuteNonQuery
End Function

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

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