2009-05-12 20 views
1
Dim conn As OleDbConnection 
    Dim cmd As OleDbCommand 

    Public Sub openDB() 
     conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\VFMS_DB.mdb;" & "Jet OLEDB:System Database=Security.mdw;User ID=Adster;Password=300624;") 
     conn.Open() 
    End Sub 

    Public Function UpdateUser() As Integer 
     Dim retCode As New Integer 

     Try 
      openDB() 
      cmd = conn.CreateCommand() 

以下の更新コマンドは、「文字列からの変換」「WHERE [ユーザー名] = '」の入力で「Double」が無効です。なぜか分からない。 aUserNameフィールドはStringフィールドで、入力されたことを確認するためにチェックしました。アクセスエラーの更新

  cmd.CommandText = "UPDATE Users SET [First Name] = '" & aName & "', [Last Name] = '" & aSurname & "', [Contact Number] = '" & aContactNum & "', [Password] = '" & aPassword & "', [User Rights] = '" & aUserRights + "' WHERE [Username] = '" + aUserName + "' " 

      cmd.ExecuteNonQuery() 
      conn.Close() 

      'rsAddRecs = rsConn.Execute("UPDATE Users ([First Name], [Last Name], [Contact Number], [User Name], [Password], [User Rights]) VALUES ('" & aName & "','" & aSurname & "','" & aContactNum & "','" & aUserName & "','" & aPassword & "','" & aUserRights & "')") 

      retCode = 0 
      'rsConn.Close() 
      Return retCode 

     Catch ex As Exception 
      MessageBox.Show(ex.ToString, ex.Message, MessageBoxButtons.OK) 
      retCode = 1 
      Return retCode 
     End Try 
    End Function 

答えて

5

あなたはタイプミスがあります。あなたは&文字

間違っ

cmd.CommandText = "UPDATE Users SET [First Name] = '" & aName & _ 
        "', [Last Name] = '" & aSurname & _ 
        "', [Contact Number] = '" & aContactNum & _ 
        "', [Password] = '" & aPassword & "', [User Rights] = '" & _ 
        aUserRights + "' WHERE [Username] = '" + aUserName + "' " 
'       ^      ^  ^

cmd.CommandText = "UPDATE Users SET [First Name] = '" & aName & _ 
        "', [Last Name] = '" & aSurname & _ 
        "', [Contact Number] = '" & aContactNum & _ 
        "', [Password] = '" & aPassword & "', [User Rights] = '" & _ 
        aUserRights & "' WHERE [Username] = '" & aUserName & "' " 
'       ^      ^  ^
+0

私はそこに明白ながありませんでした、ありがとう – Domitius

+0

Nice edit codeslave;) – Ropstah

0

あなたのSQLコードが使用するのではなく、SQL文字列の末尾に+連結文字を使用しています[Username]

cmd.CommandText = "UPDATE Users SET ... [Username]... 

あなたはコードが[User Name]を使用コメントアウトに対し:

'rsAddRecs = rsConn.Execute("UPDATE Users ... [User Name]... 

間違った列名が問題の原因だろうか?

もう1つ考えます。パラメータ値を消去しましたか?その値に動的SQLを動揺させる一重引用符が含まれている可能性があります。いずれにしても、プリペアドステートメント(またはPROCEDURES)を使用してParameterオブジェクトを使用してSQLを呼び出すことを検討し、OLE DBプロバイダにパラメータ値のサニタイズを延期する必要があります。あなたか私:

関連する問題