Ayuda con código implementado en Visual Basic por error en tiempo de ejecución con un datagrid
Hola de nuevo, me aparece un error que dice:
Error '3265' en tiempo de ejecucion:
No se encontro el elemento en la coleccion que corresponde con el nombre o el ordinal pedido.
me aparece al guardar lo que tengo en el datagrid y lo de las cajas de texto, y me lo alcanza a guardar pero me lo guarda doble vez, aqui te dejo el codigo.
Private Con As New Connection
Private Rec As ADODB.Recordset
Private Rec2 As ADODB.Recordset
Private Rec3 As ADODB.Recordset
Public var As String
Dim addFlag As Boolean
Private Sub cmdCancelar_Click()
If Rec.EOF Then
Display
Else
Display
Rec.CancelUpdate
'Rec2.CancelUpdate
'Rec3.CancelUpdate
Form_Activate
cmdIngresar.Visible = False
txtValorLegalizacion.Text = ""
lblTotal2.Caption = ""
Label1.Visible = False
Label2.Visible = False
txtConcepto.Text = ""
txtConcepto.Visible = False
txtValor.Text = ""
txtValor.Visible = False
cmdNuevo.Enabled = True
If permiso = "A" Then cmdModificar.Enabled = True
If permiso = "B" Then cmdModificar.Enabled = True
cmdCancelar.Enabled = False
cmdGuardar.Enabled = False
cmdFirst.Enabled = True
cmdPrevious.Enabled = True
cmdNext.Enabled = True
cmdLast.Enabled = True
End If
cmdIngresar.Visible = False
Label1.Visible = False
Label2.Visible = False
txtConcepto.Visible = False
txtValor.Visible = False
End Sub
Private Sub cmdFirst_Click()
Rec.MoveFirst
Display
End Sub
Private Sub cmdGuardar_Click()
Set Con = New ADODB.Connection
With Con
.ConnectionString = "provider = microsoft.ace.oledb.12.0;data source=D:\PROYECTO TYT\TYT.accdb"
.Open
End With
Dim strSql As String
For i = 1 To Me.DataGrid1.ApproxCount
strSql = "insert into RECIBOS values('" + CStr(Me.DataGrid1.Columns(0).CellValue(i)) + "','" + Me.DataGrid1.Columns(1).CellValue(i) + "','" + Me.DataGrid1.Columns(2).CellValue(i) + "','" + CStr(Me.DataGrid1.Columns(3).CellValue(i)) + "')"
Con.Execute strSql
Next
If lblTotal2.Caption = "" Then
MsgBox "DEBE INGRESAR LOS DATOS Y VALORES"
txtConcepto.SetFocus
Else
With Rec2
If addFlag Then .AddNew
Rec2!LEGALIZACION = lblLegalizacionNo.Caption
Rec2!USUARIO = lblNombre.Caption
Rec2!ANTICIPODIRIGIDO = lblDirigdoA.Caption
Rec2!VALORANTICIPO = lblValorAnticipo2.Caption
Rec2!OBRA = lblObra2.Caption
Rec2!VALORLEGALIZACION = txtValorLegalizacion.Text
Rec2!TOTAL = lblTotal2.Caption
.Update
End With
addFlag = False
cmdNuevo.Enabled = True
If permiso = "A" Then cmdModificar.Enabled = True
If permiso = "B" Then cmdModificar.Enabled = True
cmdGuardar.Enabled = False
cmdCancelar.Enabled = False
cmdFirst.Enabled = True
cmdPrevious.Enabled = True
cmdNext.Enabled = True
cmdLast.Enabled = True
'cmdBuscar.Enabled = True
'cmdCancelarBuscar.Enabled = True
cmdIngresar.Visible = False
Label1.Visible = False
Label2.Visible = False
txtConcepto.Visible = False
txtValor.Visible = False
End If
End Sub
Private Sub cmdIngresar_Click()
Rec3.AddNew
Rec3(0) = lblLegalizacionNo.Caption
Rec3(1) = lblObra2.Caption
Rec3(2) = txtConcepto.Text
Rec3(3) = txtValor.Text
Rec3.Update
Dim suma As Double
suma = 0
For i = 1 To Me.DataGrid1.ApproxCount
suma = suma + Me.DataGrid1.Columns(3).CellValue(i)
Next
Me.txtValorLegalizacion.Text = FormatCurrency(suma)
Dim res As Long
Dim num1 As Long
Dim num2 As Long
num1 = FormatNumber(lblValorAnticipo2.Caption)
num2 = FormatNumber(txtValorLegalizacion.Text)
res = num1 - num2
lblTotal2.Caption = FormatCurrency(res)
txtConcepto.Text = ""
txtValor.Text = ""
End Sub
Private Sub cmdLast_Click()
Rec.MoveLast
Display
End Sub
Private Sub cmdModificar_Click()
cmdGuardar.Enabled = True
cmdCancelar.Enabled = True
End Sub
Private Sub cmdNext_Click()
With Rec
.MoveNext
If .EOF Then .MoveLast
End With
Display
End Sub
Private Sub cmdNuevo_Click()
addFlag = True
cmdNuevo.Enabled = False
cmdModificar.Enabled = False
cmdGuardar.Enabled = True
cmdCancelar.Enabled = True
cmdFirst.Enabled = False
cmdPrevious.Enabled = False
cmdNext.Enabled = False
cmdLast.Enabled = False
cmdIngresar.Visible = True
Label1.Visible = True
Label2.Visible = True
txtConcepto.Visible = True
txtValor.Visible = True
End Sub
Private Sub cmdPrevious_Click()
With Rec
.MovePrevious
If .BOF Then .MoveFirst
End With
Display
End Sub
Private Sub Form_Activate()
Set Rec3 = New ADODB.Recordset
With Rec3
.Fields.Append "NO", adInteger, 20
.Fields.Append "OBRA", adVarChar, 250
.Fields.Append "CONCEPTO", adVarChar, 250, adFldUpdatable
.Fields.Append "VALOR", adCurrency, adFldUpdatable
.Open
End With
Set Me.DataGrid1.DataSource = Rec3
Display
End Sub
Private Sub Form_Load()
Dim permiso As String
lblNombre = var
permiso = frmINGRESO.acc
If permiso = "A" Then
cmdNuevo.Enabled = True
cmdModificar.Enabled = True
cmdCancelar.Enabled = True
cmdGuardar.Enabled = True
cmdBorrar.Enabled = True
ElseIf permiso = "B" Then
cmdNuevo.Enabled = True
cmdModificar.Enabled = True
cmdCancelar.Enabled = True
cmdGuardar.Enabled = True
cmdBorrar.Enabled = False
Else
cmdNuevo.Enabled =...
Error '3265' en tiempo de ejecucion:
No se encontro el elemento en la coleccion que corresponde con el nombre o el ordinal pedido.
me aparece al guardar lo que tengo en el datagrid y lo de las cajas de texto, y me lo alcanza a guardar pero me lo guarda doble vez, aqui te dejo el codigo.
Private Con As New Connection
Private Rec As ADODB.Recordset
Private Rec2 As ADODB.Recordset
Private Rec3 As ADODB.Recordset
Public var As String
Dim addFlag As Boolean
Private Sub cmdCancelar_Click()
If Rec.EOF Then
Display
Else
Display
Rec.CancelUpdate
'Rec2.CancelUpdate
'Rec3.CancelUpdate
Form_Activate
cmdIngresar.Visible = False
txtValorLegalizacion.Text = ""
lblTotal2.Caption = ""
Label1.Visible = False
Label2.Visible = False
txtConcepto.Text = ""
txtConcepto.Visible = False
txtValor.Text = ""
txtValor.Visible = False
cmdNuevo.Enabled = True
If permiso = "A" Then cmdModificar.Enabled = True
If permiso = "B" Then cmdModificar.Enabled = True
cmdCancelar.Enabled = False
cmdGuardar.Enabled = False
cmdFirst.Enabled = True
cmdPrevious.Enabled = True
cmdNext.Enabled = True
cmdLast.Enabled = True
End If
cmdIngresar.Visible = False
Label1.Visible = False
Label2.Visible = False
txtConcepto.Visible = False
txtValor.Visible = False
End Sub
Private Sub cmdFirst_Click()
Rec.MoveFirst
Display
End Sub
Private Sub cmdGuardar_Click()
Set Con = New ADODB.Connection
With Con
.ConnectionString = "provider = microsoft.ace.oledb.12.0;data source=D:\PROYECTO TYT\TYT.accdb"
.Open
End With
Dim strSql As String
For i = 1 To Me.DataGrid1.ApproxCount
strSql = "insert into RECIBOS values('" + CStr(Me.DataGrid1.Columns(0).CellValue(i)) + "','" + Me.DataGrid1.Columns(1).CellValue(i) + "','" + Me.DataGrid1.Columns(2).CellValue(i) + "','" + CStr(Me.DataGrid1.Columns(3).CellValue(i)) + "')"
Con.Execute strSql
Next
If lblTotal2.Caption = "" Then
MsgBox "DEBE INGRESAR LOS DATOS Y VALORES"
txtConcepto.SetFocus
Else
With Rec2
If addFlag Then .AddNew
Rec2!LEGALIZACION = lblLegalizacionNo.Caption
Rec2!USUARIO = lblNombre.Caption
Rec2!ANTICIPODIRIGIDO = lblDirigdoA.Caption
Rec2!VALORANTICIPO = lblValorAnticipo2.Caption
Rec2!OBRA = lblObra2.Caption
Rec2!VALORLEGALIZACION = txtValorLegalizacion.Text
Rec2!TOTAL = lblTotal2.Caption
.Update
End With
addFlag = False
cmdNuevo.Enabled = True
If permiso = "A" Then cmdModificar.Enabled = True
If permiso = "B" Then cmdModificar.Enabled = True
cmdGuardar.Enabled = False
cmdCancelar.Enabled = False
cmdFirst.Enabled = True
cmdPrevious.Enabled = True
cmdNext.Enabled = True
cmdLast.Enabled = True
'cmdBuscar.Enabled = True
'cmdCancelarBuscar.Enabled = True
cmdIngresar.Visible = False
Label1.Visible = False
Label2.Visible = False
txtConcepto.Visible = False
txtValor.Visible = False
End If
End Sub
Private Sub cmdIngresar_Click()
Rec3.AddNew
Rec3(0) = lblLegalizacionNo.Caption
Rec3(1) = lblObra2.Caption
Rec3(2) = txtConcepto.Text
Rec3(3) = txtValor.Text
Rec3.Update
Dim suma As Double
suma = 0
For i = 1 To Me.DataGrid1.ApproxCount
suma = suma + Me.DataGrid1.Columns(3).CellValue(i)
Next
Me.txtValorLegalizacion.Text = FormatCurrency(suma)
Dim res As Long
Dim num1 As Long
Dim num2 As Long
num1 = FormatNumber(lblValorAnticipo2.Caption)
num2 = FormatNumber(txtValorLegalizacion.Text)
res = num1 - num2
lblTotal2.Caption = FormatCurrency(res)
txtConcepto.Text = ""
txtValor.Text = ""
End Sub
Private Sub cmdLast_Click()
Rec.MoveLast
Display
End Sub
Private Sub cmdModificar_Click()
cmdGuardar.Enabled = True
cmdCancelar.Enabled = True
End Sub
Private Sub cmdNext_Click()
With Rec
.MoveNext
If .EOF Then .MoveLast
End With
Display
End Sub
Private Sub cmdNuevo_Click()
addFlag = True
cmdNuevo.Enabled = False
cmdModificar.Enabled = False
cmdGuardar.Enabled = True
cmdCancelar.Enabled = True
cmdFirst.Enabled = False
cmdPrevious.Enabled = False
cmdNext.Enabled = False
cmdLast.Enabled = False
cmdIngresar.Visible = True
Label1.Visible = True
Label2.Visible = True
txtConcepto.Visible = True
txtValor.Visible = True
End Sub
Private Sub cmdPrevious_Click()
With Rec
.MovePrevious
If .BOF Then .MoveFirst
End With
Display
End Sub
Private Sub Form_Activate()
Set Rec3 = New ADODB.Recordset
With Rec3
.Fields.Append "NO", adInteger, 20
.Fields.Append "OBRA", adVarChar, 250
.Fields.Append "CONCEPTO", adVarChar, 250, adFldUpdatable
.Fields.Append "VALOR", adCurrency, adFldUpdatable
.Open
End With
Set Me.DataGrid1.DataSource = Rec3
Display
End Sub
Private Sub Form_Load()
Dim permiso As String
lblNombre = var
permiso = frmINGRESO.acc
If permiso = "A" Then
cmdNuevo.Enabled = True
cmdModificar.Enabled = True
cmdCancelar.Enabled = True
cmdGuardar.Enabled = True
cmdBorrar.Enabled = True
ElseIf permiso = "B" Then
cmdNuevo.Enabled = True
cmdModificar.Enabled = True
cmdCancelar.Enabled = True
cmdGuardar.Enabled = True
cmdBorrar.Enabled = False
Else
cmdNuevo.Enabled =...
1 Respuesta
Respuesta de Roberto Alvarado
1