我一直在几个论坛中搜索,包括我正在面对的问题。
目前我正在使用Visual Studio 2017开发一个网站,数据库使用MS Access 2007运行。我面临的问题可能不是错误,因为它没有显示任何错误消息,尽管我已经把Try和Catch打开了我的代码。
所以我正在尝试对Access中的表执行UPDATE查询,但无法更新。目的是更新名为' DataDiriKaryawan'的表。
在更新之前,我选择了每个  nip' (ID作为主键)并通过调用Function' isi'将其显示在我的网络表单上。在page_load上。然后,用户可以根据预先存在的数据编辑数据。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Session("editval") = "WAMB17001"
isi()
End Sub
Protected Sub isi()
Dim dr As OleDb.OleDbDataReader
Dim nip As String = Session("editval")
Try
Using command As New OleDb.OleDbCommand("SELECT * FROM DataDiriKaryawan WHERE NIP='" & nip & "'", mdl_koneksi.connection)
dr = command.ExecuteReader
dr.Read()
lblnip.Text = dr.GetValue(0)
txtnamadepan.Text = dr.GetValue(1)
txtnamabelakang.Text = dr.GetValue(2)
txtnoktp.Text = dr.GetValue(3)
txtnonpwp.Text = dr.GetValue(4)
txtalamatktp.Text = dr.GetValue(5)
txtkabktp.Text = dr.GetValue(6)
txtprovinsiktp.Text = dr.GetValue(7)
txtkodeposktp.Text = dr.GetValue(8)
txtnegaraktp.Text = dr.GetValue(9)
txtalamattgl.Text = dr.GetValue(10)
txtkabtgl.Text = dr.GetValue(11)
txtprovtgl.Text = dr.GetValue(12)
txtkodepostgl.Text = dr.GetValue(13)
txtnegaratgl.Text = dr.GetValue(14)
txtkontak1.Text = dr.GetValue(15)
txtkontak2.Text = dr.GetValue(16)
txtkontakdarurat.Text = dr.GetValue(17)
txthbgn.Text = dr.GetValue(18)
If dr.GetValue(19) = "Laki-laki" Then
rblaki.Checked = True
Else
rbperempuan.Checked = False
End If
txtnikah.Text = dr.GetValue(20)
txtjmlhanak.Text = dr.GetValue(21)
txttmptlahir.Text = dr.GetValue(22)
txttgllahir.Text = dr.GetValue(23)
txtpendidikan.Text = dr.GetValue(24)
txtnorek.Text = dr.GetValue(25)
command.Dispose()
connection.Close()
dr.Close()
End Using
Catch
End Try
在Web表单中编辑数据后,将执行UPDATE查询。
Private Sub simpan()
Dim nip As String = Session("editval")
Try
Using command As New OleDb.OleDbCommand("UPDATE DataDiriKaryawan SET nama_depan=@nama_depan, nama_akhir=@nama_akhir, ktp_no=@ktp_no, no_npwp=@no_npwp, alamat_ktp=@alamat_ktp,
kota_ktp=@kota_ktp, provinsi_ktp=@provinsi_ktp, kodepos_ktp=@kodepos_ktp, negara_ktp=@negara_ktp, alamat_tgl=@alamat_ktp, kota_tgl=@kota_tgl, provinsi_tgl=@provinsi_tgl,
kodepos_tgl=@kodepos_tgl, negara_tgl=@negara_tgl, cp1=@cp1, cp2=@cp2, kontak_darurat=@kontak_darurat, hbgn_kontak=@hbgn_kontak, jenis_kelamin=@jenis_kelamin, status_nikah=@status_nikah,
jmlh_anak=@jmlh_anak, tempat_lahir=@tempat_lahir, tgl_lahir=@tgl_lahir, pendidikan_terakhir=@pendidikan_terakhir, rek_niaga=@rek_niaga WHERE NIP='" & nip & "'", mdl_koneksi.connection)
command.Parameters.Add(New OleDb.OleDbParameter("@nama_depan", OleDbType.Char)).Value = txtnamadepan.Text
command.Parameters.Add(New OleDb.OleDbParameter("@nama_akhir", OleDbType.Char)).Value = txtnamabelakang.Text
command.Parameters.Add(New OleDb.OleDbParameter("@ktp_no", OleDbType.Char)).Value = txtnoktp.Text
command.Parameters.Add(New OleDb.OleDbParameter("@no_npwp", OleDbType.Char)).Value = txtnonpwp.Text
command.Parameters.Add(New OleDb.OleDbParameter("@no_npwp", OleDbType.Char)).Value = txtnonpwp.Text
command.Parameters.Add(New OleDb.OleDbParameter("@alamat_ktp", OleDbType.Char)).Value = txtalamatktp.Text
command.Parameters.Add(New OleDb.OleDbParameter("@kota_ktp", OleDbType.Char)).Value = txtkabktp.Text
command.Parameters.Add(New OleDb.OleDbParameter("@kota_ktp", OleDbType.Char)).Value = txtkabktp.Text
command.Parameters.Add(New OleDb.OleDbParameter("@provinsi_ktp", OleDbType.Char)).Value = txtprovinsiktp.Text
command.Parameters.Add(New OleDb.OleDbParameter("@kodepos_ktp", OleDbType.Char)).Value = txtkodeposktp.Text
command.Parameters.Add(New OleDb.OleDbParameter("@negara_ktp", OleDbType.Char)).Value = txtnegaraktp.Text
command.Parameters.Add(New OleDb.OleDbParameter("@alamat_tgl", OleDbType.Char)).Value = txtalamattgl.Text
command.Parameters.Add(New OleDb.OleDbParameter("@kota_tgl", OleDbType.Char)).Value = txtkabtgl.Text
command.Parameters.Add(New OleDb.OleDbParameter("@provinsi_tgl", OleDbType.Char)).Value = txtprovtgl.Text
command.Parameters.Add(New OleDb.OleDbParameter("@kodepos_tgl", OleDbType.Char)).Value = txtkodepostgl.Text
command.Parameters.Add(New OleDb.OleDbParameter("@negara_tgl", OleDbType.Char)).Value = txtnegaratgl.Text
command.Parameters.Add(New OleDb.OleDbParameter("@cp1", OleDbType.Char)).Value = txtkontak1.Text
command.Parameters.Add(New OleDb.OleDbParameter("@cp2", OleDbType.Char)).Value = txtkontak2.Text
command.Parameters.Add(New OleDb.OleDbParameter("@kontak_darurat", OleDbType.Char)).Value = txtkontakdarurat.Text
command.Parameters.Add(New OleDb.OleDbParameter("@hbgn_kontak", OleDbType.Char)).Value = txthbgn.Text
If rblaki.Checked = True Then
command.Parameters.Add(New OleDb.OleDbParameter("@jenis_kelamin", OleDbType.Char)).Value = rblaki.Text
Else
command.Parameters.Add(New OleDb.OleDbParameter("@jenis_kelamin", OleDbType.Char)).Value = rbperempuan.Text
End If
command.Parameters.Add(New OleDb.OleDbParameter("@status_nikah", OleDbType.Char)).Value = txtnikah.Text
command.Parameters.Add(New OleDb.OleDbParameter("@jmlh_anak", OleDbType.Char)).Value = txtjmlhanak.Text
command.Parameters.Add(New OleDb.OleDbParameter("@tempat_lahir", OleDbType.Char)).Value = txttmptlahir.Text
command.Parameters.Add(New OleDb.OleDbParameter("@tgl_lahir", OleDbType.Char)).Value = txttgllahir.Text
command.Parameters.Add(New OleDb.OleDbParameter("@pendidikan_terakhir", OleDbType.Char)).Value = txtpendidikan.Text
command.Parameters.Add(New OleDb.OleDbParameter("@rek_niaga", OleDbType.Char)).Value = txtnorek.Text
command.Parameters.Add(New OleDb.OleDbParameter("@NIP", OleDbType.Char)).Value = lblnip.Text
command.ExecuteNonQuery()
command.Dispose()
connection.Close()
Session("editval") = ""
Page.Response.Redirect("FrmRedirectInsertData.aspx")
End Using
Catch ex As Exception
lblpesan.Visible = True
MsgBox(ex.Message)
End Try
End Sub
然后在btnsimpan.click中调用包含UPDATE查询的Function' simpan'。
Protected Sub btnsimpan_Click(sender As Object, e As EventArgs) Handles btnsimpan.Click
simpan()
Session("editval") = ""
End Sub
现在这里是异常现象:
尽管尝试了catch,但我没有显示任何错误消息。 Web表单只刷新为与之前相同的数据,并且MS Access中的表未更新。
如果我没有打电话给功能' isi'在page_load上用预先存在的数据填充Web表单,UPDATE查询非常有用。
我在其他表格中使用了相同的方法和代码用于不同的表格,它运作得很好。
我已经花了几天时间,尝试比较Access中的表和Visual Studio中的代码,我发现代码和设置/属性没有区别。
因此,我可能需要你的帮助来解决这个问题。干杯!