Ayuda con error '3251' en tiempo de ejecucion
El recordeset actual no admite actualizaciones.puede ser una limitacion del proveedor o del tipo de bloque seleccionado.
hola amigos tengo un form con un datagrid, un textbox y un combobox, lo que quiero hacer es que cuando abra el formuluario se me cargue los datos personales en el datagrid cuando doy dbclick sobre un registro se abre otra ventana donde puedo modificar los datos o corregirlos y volverlos a guardar y listo hasta aqui me funciona bien..
el problema viene cuando tengo demasiados y quiero utilizar el textbox donde didigto el numero de identifiacion o nombre de la persona, y el combobox donde escojo el criterio por el cual buscar.. El filtro lo hace bien pero cuando lo modifico y lo ovy a guardar de sale el error mencionado arriba 3251..
este es el codigo del formulario que carga el datagrid
Option ExplicitPrivate Sub cmdOpciones_Click(Index As Integer)Select Case IndexCase 1: Call EditarCase 3: Unload MeEnd SelectEnd Sub
Private Sub datagrid1_DblClick() Call EditarEnd Sub
Sub CargarDataGriddatper(dg As DataGrid)dg.MarqueeStyle = dbgHighlightRowSet dg.DataSource = rsdatperdg.RefreshEnd Sub
Private Sub Form_Load()Call IniciarConexiondatperrsdatper.Open "select * from Datosp", cnndatper, adOpenStatic, adLockOptimisticWith DataGrid1.AllowUpdate = FalseEnd WithCall CargarDataGriddatper(DataGrid1)
End Sub
Public Sub Text30_Change()
Select Case Combo1.List(Combo1.ListIndex)Case "Identificacion"Set rsdatper = cnndatper.Execute("SELECT * FROM Datosp WHERE Identificacion Like '%" & Text30.Text & "%'")Set DataGrid1.DataSource = rsdatper
Case "Nombre"Set rsdatper = cnndatper.Execute("SELECT * FROM Datosp WHERE Nombre Like '%" & Text30.Text & "%'")Set DataGrid1.DataSource = rsdatper
Case "Nombre Madre"Set rsdatper = cnndatper.Execute("SELECT * FROM Datosp WHERE [Nombre Madre] Like '%" & Text30.Text & "%'")Set DataGrid1.DataSource = rsdatper
Case "Nombre Padre"Set rsdatper = cnndatper.Execute("SELECT * FROM Datosp WHERE [Nombre Padre] Like '%" & Text30.Text & "%'")Set DataGrid1.DataSource = rsdatperEnd Select
End Select
DataGrid1.Columns(0).Visible = FalseDataGrid1.Columns(1).Visible = FalseDataGrid1.Columns(2).Visible = FalseDataGrid1.Columns(3).Visible = FalseDataGrid1.Columns(4).Visible = FalseDataGrid1.Columns(5).Visible = False'DataGrid1.Columns(6).Visible = FalseDataGrid1.Columns(7).Visible = FalseDataGrid1.Columns(8).Visible = FalseDataGrid1.Columns(9).Visible = FalseDataGrid1.Columns(6).Width = 1500 'columna identificacionDataGrid1.Columns(10).Width = 3700 'columna nombreDataGrid1.Columns(11).Width = 0DataGrid1.Columns(12).Width = 0DataGrid1.Columns(13).Width = 0DataGrid1.Columns(14).Width = 0DataGrid1.Columns(13).Width = 0DataGrid1.Columns(14).Width = 0DataGrid1.Columns(15).Width = 0DataGrid1.Columns(16).Width = 0DataGrid1.Columns(17).Width = 0DataGrid1.Columns(18).Width = 0DataGrid1.Columns(19).Width = 0DataGrid1.Columns(20).Width = 0DataGrid1.Columns(21).Width = 0DataGrid1.Columns(22).Width = 0DataGrid1.Columns(23).Width = 0DataGrid1.Columns(24).Width = 0DataGrid1.Columns(25).Width = 2500DataGrid1.Columns(26).Width = 2500DataGrid1.Columns(27).Width = 0DataGrid1.Columns(28).Width = 0 Combo1.ListIndex = (0)
End Sub
Private Sub Editar()Dim i As VariantIf DataGrid1.Row = -1 Then Exit SubWith DatospersonaleseditaFor i = 1 To 28.Text1(i).Text = Empty & rsdatper(i)Nexti = Null.ACCION = EDITAR_REGISTROdatper.Show vbModalDataGrid1.RefreshEnd WithEnd SubPrivate Sub mnusalir_Click() Unload Me EndEnd Sub
codigo del formulario que abre los datos personales
Option ExplicitPublic IdRegistro As LongPublic ACCION As EACCION
Enum EACCIONdatperEDITAR_REGISTROdatper = 1End Enum
Private Sub cmdGuardar_Click()If Text1(6) = "" ThenMsgBox "El Nombre del usuario no puede estar vacio", vbCritical, "Datos incompletos"Text1(6).SetFocusExit SubEnd If
Select Case ACCIONCase EDITAR_REGISTROdatper 'rs(1) = Text1(1)'rs(2) = Text1(2)rsdatper(3) = Text1(3) rsdatper(4) = Text1(4) 'rs(5) = Text1(5) rsdatper(6) = Text1(6) rsdatper(7) = Text1(7) rsdatper(8) = Text1(8) rsdatper(9) = Text1(9) rsdatper(10) = Text1(10) rsdatper(11) = Text1(11) rsdatper(12) = Text1(12) rsdatper(13) = Text1(13) rsdatper(14) = Text1(14) rsdatper(15) = Text1(15) rsdatper(16) = Text1(16) rsdatper(17) = Text1(17) rsdatper(18) = Text1(18) rsdatper(19) = Text1(19) rsdatper(20) = Text1(20) rsdatper(21) = Text1(21) rsdatper(22) = Text1(22) rsdatper(23) = Text1(23) 'rsdatper(24) = Text1(24) rsdatper(25) = Text1(25) rsdatper(26) = Text1(26) rsdatper(27) = Text1(27) rsdatper(28) = Text1(28) End Select rsdatper.Update Unload Me Set Datospersonalesedita = NothingEnd Sub
Private Sub cmdCancelar_Click() Unload MeEnd Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeyEscape Then Unload Me End IfEnd Sub
Private Sub Form_Load()Datospersonalesedita.BackColor = RGB(182, 206, 252)Label25.Caption = carlos.Label1.Caption
End SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))End Sub
codigo del modulo
Option ExplicitPublic cnndatper As New ADODB.ConnectionPublic rsdatper As New ADODB.RecordsetPublic Sub IniciarConexiondatper()With cnndatper.CursorLocation = adUseClient.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _App.Path & "\Datos Personales.mdb" & ";Persist Security Info=False; Jet OLEDB:Database "
End WithSet rsdatper.ActiveConnection = Nothing
End Sub
Agradezco la colaboracion ya que llevo desde hace dias con este problema y no logro salir de ahi...si necesita el el programa me dejan a que correo donde lo puedo enviar..
hola amigos tengo un form con un datagrid, un textbox y un combobox, lo que quiero hacer es que cuando abra el formuluario se me cargue los datos personales en el datagrid cuando doy dbclick sobre un registro se abre otra ventana donde puedo modificar los datos o corregirlos y volverlos a guardar y listo hasta aqui me funciona bien..
el problema viene cuando tengo demasiados y quiero utilizar el textbox donde didigto el numero de identifiacion o nombre de la persona, y el combobox donde escojo el criterio por el cual buscar.. El filtro lo hace bien pero cuando lo modifico y lo ovy a guardar de sale el error mencionado arriba 3251..
este es el codigo del formulario que carga el datagrid
Option ExplicitPrivate Sub cmdOpciones_Click(Index As Integer)Select Case IndexCase 1: Call EditarCase 3: Unload MeEnd SelectEnd Sub
Private Sub datagrid1_DblClick() Call EditarEnd Sub
Sub CargarDataGriddatper(dg As DataGrid)dg.MarqueeStyle = dbgHighlightRowSet dg.DataSource = rsdatperdg.RefreshEnd Sub
Private Sub Form_Load()Call IniciarConexiondatperrsdatper.Open "select * from Datosp", cnndatper, adOpenStatic, adLockOptimisticWith DataGrid1.AllowUpdate = FalseEnd WithCall CargarDataGriddatper(DataGrid1)
End Sub
Public Sub Text30_Change()
Select Case Combo1.List(Combo1.ListIndex)Case "Identificacion"Set rsdatper = cnndatper.Execute("SELECT * FROM Datosp WHERE Identificacion Like '%" & Text30.Text & "%'")Set DataGrid1.DataSource = rsdatper
Case "Nombre"Set rsdatper = cnndatper.Execute("SELECT * FROM Datosp WHERE Nombre Like '%" & Text30.Text & "%'")Set DataGrid1.DataSource = rsdatper
Case "Nombre Madre"Set rsdatper = cnndatper.Execute("SELECT * FROM Datosp WHERE [Nombre Madre] Like '%" & Text30.Text & "%'")Set DataGrid1.DataSource = rsdatper
Case "Nombre Padre"Set rsdatper = cnndatper.Execute("SELECT * FROM Datosp WHERE [Nombre Padre] Like '%" & Text30.Text & "%'")Set DataGrid1.DataSource = rsdatperEnd Select
End Select
DataGrid1.Columns(0).Visible = FalseDataGrid1.Columns(1).Visible = FalseDataGrid1.Columns(2).Visible = FalseDataGrid1.Columns(3).Visible = FalseDataGrid1.Columns(4).Visible = FalseDataGrid1.Columns(5).Visible = False'DataGrid1.Columns(6).Visible = FalseDataGrid1.Columns(7).Visible = FalseDataGrid1.Columns(8).Visible = FalseDataGrid1.Columns(9).Visible = FalseDataGrid1.Columns(6).Width = 1500 'columna identificacionDataGrid1.Columns(10).Width = 3700 'columna nombreDataGrid1.Columns(11).Width = 0DataGrid1.Columns(12).Width = 0DataGrid1.Columns(13).Width = 0DataGrid1.Columns(14).Width = 0DataGrid1.Columns(13).Width = 0DataGrid1.Columns(14).Width = 0DataGrid1.Columns(15).Width = 0DataGrid1.Columns(16).Width = 0DataGrid1.Columns(17).Width = 0DataGrid1.Columns(18).Width = 0DataGrid1.Columns(19).Width = 0DataGrid1.Columns(20).Width = 0DataGrid1.Columns(21).Width = 0DataGrid1.Columns(22).Width = 0DataGrid1.Columns(23).Width = 0DataGrid1.Columns(24).Width = 0DataGrid1.Columns(25).Width = 2500DataGrid1.Columns(26).Width = 2500DataGrid1.Columns(27).Width = 0DataGrid1.Columns(28).Width = 0 Combo1.ListIndex = (0)
End Sub
Private Sub Editar()Dim i As VariantIf DataGrid1.Row = -1 Then Exit SubWith DatospersonaleseditaFor i = 1 To 28.Text1(i).Text = Empty & rsdatper(i)Nexti = Null.ACCION = EDITAR_REGISTROdatper.Show vbModalDataGrid1.RefreshEnd WithEnd SubPrivate Sub mnusalir_Click() Unload Me EndEnd Sub
codigo del formulario que abre los datos personales
Option ExplicitPublic IdRegistro As LongPublic ACCION As EACCION
Enum EACCIONdatperEDITAR_REGISTROdatper = 1End Enum
Private Sub cmdGuardar_Click()If Text1(6) = "" ThenMsgBox "El Nombre del usuario no puede estar vacio", vbCritical, "Datos incompletos"Text1(6).SetFocusExit SubEnd If
Select Case ACCIONCase EDITAR_REGISTROdatper 'rs(1) = Text1(1)'rs(2) = Text1(2)rsdatper(3) = Text1(3) rsdatper(4) = Text1(4) 'rs(5) = Text1(5) rsdatper(6) = Text1(6) rsdatper(7) = Text1(7) rsdatper(8) = Text1(8) rsdatper(9) = Text1(9) rsdatper(10) = Text1(10) rsdatper(11) = Text1(11) rsdatper(12) = Text1(12) rsdatper(13) = Text1(13) rsdatper(14) = Text1(14) rsdatper(15) = Text1(15) rsdatper(16) = Text1(16) rsdatper(17) = Text1(17) rsdatper(18) = Text1(18) rsdatper(19) = Text1(19) rsdatper(20) = Text1(20) rsdatper(21) = Text1(21) rsdatper(22) = Text1(22) rsdatper(23) = Text1(23) 'rsdatper(24) = Text1(24) rsdatper(25) = Text1(25) rsdatper(26) = Text1(26) rsdatper(27) = Text1(27) rsdatper(28) = Text1(28) End Select rsdatper.Update Unload Me Set Datospersonalesedita = NothingEnd Sub
Private Sub cmdCancelar_Click() Unload MeEnd Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeyEscape Then Unload Me End IfEnd Sub
Private Sub Form_Load()Datospersonalesedita.BackColor = RGB(182, 206, 252)Label25.Caption = carlos.Label1.Caption
End SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)KeyAscii = Asc(UCase(Chr(KeyAscii)))End Sub
codigo del modulo
Option ExplicitPublic cnndatper As New ADODB.ConnectionPublic rsdatper As New ADODB.RecordsetPublic Sub IniciarConexiondatper()With cnndatper.CursorLocation = adUseClient.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _App.Path & "\Datos Personales.mdb" & ";Persist Security Info=False; Jet OLEDB:Database "
End WithSet rsdatper.ActiveConnection = Nothing
End Sub
Agradezco la colaboracion ya que llevo desde hace dias con este problema y no logro salir de ahi...si necesita el el programa me dejan a que correo donde lo puedo enviar..