タイトル | : SQLサーバの更新 |
記事No | : 11178 |
投稿日 | : 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
|