Access a textbox
Hola de nuevo, tengo un roblema y es que tengo que traer datos de access a un textbox, pero debo decir que los dos datos que nesecito deben ser iguales a lo que tiene un label, espero que me puedas ayudar.
1 Respuesta
Respuesta de Isaac Reyes
1
1
Isaac Reyes, Es mejor enseñar a pescar que dar el pescado
Dame un ejemplo y lo que tengas avanzado.
¿Lo qué necesitas es la consulta SQL?
¿Tienes qué concatenar los datos de más de un campo y ponerlo en un textbox?
¿Tienes qué concatenar los datos de más de un registro y lo pones en un textbox?
¿El label es un criterio para traer otros campos de un o varios registros?
¿Lo qué necesitas es la consulta SQL?
¿Tienes qué concatenar los datos de más de un campo y ponerlo en un textbox?
¿Tienes qué concatenar los datos de más de un registro y lo pones en un textbox?
¿El label es un criterio para traer otros campos de un o varios registros?
Tengo este codigo pero me arroja error:
Set Rec2 = New ADODB.Recordset
With Rec2
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select VALORLEGALIZACION, TOTAL from LEGALIZACIONES where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
If Rec2.EOF Then
txtValorLegalizacion.Text = ""
Else
txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
End If
txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
Set Rec2 = New ADODB.Recordset
With Rec2
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select VALORLEGALIZACION, TOTAL from LEGALIZACIONES where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
If Rec2.EOF Then
txtValorLegalizacion.Text = ""
Else
txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
End If
txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
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 = True
cmdModificar.Enabled = False
cmdCancelar.Enabled = True
cmdGuardar.Enabled = True
cmdBorrar.Enabled = False
End If
Set Con = New ADODB.Connection
With Con
.ConnectionString = "provider = microsoft.ace.oledb.12.0;data source=D:\PROYECTO TYT\TYT.accdb"
.Open
End With
Set Rec = New ADODB.Recordset
Rec.Open "ANTICIPOS", Con, adOpenDynamic, adLockOptimistic, adCmdTable
addFlag = False
Set Rec2 = New ADODB.Recordset
Rec2.Open "LEGALIZACIONES", Con, adOpenDynamic, adLockOptimistic, adCmdTable
addFlag = False
Set Rec3 = New ADODB.Recordset
Rec3.Open "RECIBOS", Con, adOpenDynamic, adLockOptimistic, adCmdTable
addFlag = False
cmdGuardar.Enabled = False
cmdCancelar.Enabled = False
cmdIngresar.Visible = False
Label1.Visible = False
Label2.Visible = False
txtConcepto.Visible = False
txtValor.Visible = False
End Sub
Private Sub Display()
If Rec.EOF Then
MsgBox "NO EXISTEN REGISTROS"
cmdNuevo_Click
Else
lblLegalizacionNo.Caption = Rec!NO
lblDirigdoA.Caption = Rec!ANTICIPODIRIGIDOA
lblValorAnticipo2.Caption = FormatCurrency(Rec!VALORANTICIPO)
lblObra2.Caption = Rec!OBRA
Set Rec2 = New ADODB.Recordset
With Rec2
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select VALORLEGALIZACION, TOTAL from LEGALIZACIONES where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
If Rec2.EOF Then
txtValorLegalizacion.Text = ""
Else
txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
End If
'txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
'lblTotal2.Caption = Rec2!TOTAL
Set Rec3 = New ADODB.Recordset
With Rec3
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select * from RECIBOS where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
Set DataGrid1.DataSource = Rec3
End If
End Sub
Private Sub txtLegalizacionNo_Change()
Dim buscar As String
buscar = txtLegalizacionNo
Dim con2 As ADODB.Connection
If txtLegalizacionNo.Text = Empty Then
MsgBox "SE REQUIERE NUMERO DE ANTICIPO"
txtLegalizacionNo.SetFocus
End If
Set Con = New ADODB.Connection
With Con
.ConnectionString = "provider = microsoft.ace.oledb.12.0;data source=D:\PROYECTO TYT\TYT.accdb"
.Open
End With
Set Rec = New ADODB.Recordset
With Rec
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select * from PERMISOS where LEGALIZACION = '" & lblLegalizacionNo.Caption & "'"
.Open
End With
If (Rec.EOF) Then
MsgBox "EL REGISTRO NO EXISTE"
Else
Display
End If
End Sub
el error sucede cuando uso esta parte del codigo:
Set Rec2 = New ADODB.Recordset
With Rec2
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select VALORLEGALIZACION, TOTAL from LEGALIZACIONES where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
If Rec2.EOF Then
txtValorLegalizacion.Text = ""
Else
txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
End If
txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
lblTotal2.Caption = Rec2!TOTAL
pero me sigue guardando doble vez los datos que ingreso en el datagrid.
Porfavor ayudame urg con esto.
Y la perte del codigo que me lo guarda doble vez es este:
Set Rec3 = New ADODB.Recordset
With Rec3
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select * from RECIBOS where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
Set DataGrid1.DataSource = Rec3
Ayudame y dime que debo hacer para que no se presenten de nuevo estos errores
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 = True
cmdModificar.Enabled = False
cmdCancelar.Enabled = True
cmdGuardar.Enabled = True
cmdBorrar.Enabled = False
End If
Set Con = New ADODB.Connection
With Con
.ConnectionString = "provider = microsoft.ace.oledb.12.0;data source=D:\PROYECTO TYT\TYT.accdb"
.Open
End With
Set Rec = New ADODB.Recordset
Rec.Open "ANTICIPOS", Con, adOpenDynamic, adLockOptimistic, adCmdTable
addFlag = False
Set Rec2 = New ADODB.Recordset
Rec2.Open "LEGALIZACIONES", Con, adOpenDynamic, adLockOptimistic, adCmdTable
addFlag = False
Set Rec3 = New ADODB.Recordset
Rec3.Open "RECIBOS", Con, adOpenDynamic, adLockOptimistic, adCmdTable
addFlag = False
cmdGuardar.Enabled = False
cmdCancelar.Enabled = False
cmdIngresar.Visible = False
Label1.Visible = False
Label2.Visible = False
txtConcepto.Visible = False
txtValor.Visible = False
End Sub
Private Sub Display()
If Rec.EOF Then
MsgBox "NO EXISTEN REGISTROS"
cmdNuevo_Click
Else
lblLegalizacionNo.Caption = Rec!NO
lblDirigdoA.Caption = Rec!ANTICIPODIRIGIDOA
lblValorAnticipo2.Caption = FormatCurrency(Rec!VALORANTICIPO)
lblObra2.Caption = Rec!OBRA
Set Rec2 = New ADODB.Recordset
With Rec2
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select VALORLEGALIZACION, TOTAL from LEGALIZACIONES where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
If Rec2.EOF Then
txtValorLegalizacion.Text = ""
Else
txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
End If
'txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
'lblTotal2.Caption = Rec2!TOTAL
Set Rec3 = New ADODB.Recordset
With Rec3
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select * from RECIBOS where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
Set DataGrid1.DataSource = Rec3
End If
End Sub
Private Sub txtLegalizacionNo_Change()
Dim buscar As String
buscar = txtLegalizacionNo
Dim con2 As ADODB.Connection
If txtLegalizacionNo.Text = Empty Then
MsgBox "SE REQUIERE NUMERO DE ANTICIPO"
txtLegalizacionNo.SetFocus
End If
Set Con = New ADODB.Connection
With Con
.ConnectionString = "provider = microsoft.ace.oledb.12.0;data source=D:\PROYECTO TYT\TYT.accdb"
.Open
End With
Set Rec = New ADODB.Recordset
With Rec
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select * from PERMISOS where LEGALIZACION = '" & lblLegalizacionNo.Caption & "'"
.Open
End With
If (Rec.EOF) Then
MsgBox "EL REGISTRO NO EXISTE"
Else
Display
End If
End Sub
el error sucede cuando uso esta parte del codigo:
Set Rec2 = New ADODB.Recordset
With Rec2
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select VALORLEGALIZACION, TOTAL from LEGALIZACIONES where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
If Rec2.EOF Then
txtValorLegalizacion.Text = ""
Else
txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
End If
txtValorLegalizacion.Text = Rec2!VALORLEGALIZACION
lblTotal2.Caption = Rec2!TOTAL
pero me sigue guardando doble vez los datos que ingreso en el datagrid.
Porfavor ayudame urg con esto.
Y la perte del codigo que me lo guarda doble vez es este:
Set Rec3 = New ADODB.Recordset
With Rec3
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select * from RECIBOS where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
Set DataGrid1.DataSource = Rec3
Ayudame y dime que debo hacer para que no se presenten de nuevo estos errores
No tengo problemas en ayudarte, pero si quieres respuestas más certeras me tienes que hacer las cosas un poco más fáciles. Visual Basic, por lo qgeneral te arroja el lugar en que fue cometida la infracción, por tanto, no es necesario que me envíes todo el código, sino, sólo la sección en que está el error junto al error presentado; o cuando menos, marcarme con negrita las líneas donde está el error para conocer el contexto.
Ahora bien, el Error '3265' aparece cuando estás haciendo referencia a un elemento que no existe dentro de un objeto (colección), ejemplo:
Tu tabla LEGALIZACIONES tiene los campos
Legalizacion
Usuario
Anticipodirigido
Valoranticipo
OBRA
Valorlegalizacion
Total
Haces un:
Rec2.Source = "select OBRA from LEGALIZACIONES"
Y luego utilizas Rec2! OBRAS en lugar de Rec2! OBRA, que, por cierto, no es el caso que encuentro en tu código, y es por ello que requiero el lugar específico en que está ocurriendo el error.
Verifica que al hacer referencia a Rec2! NOMBRECAMPO, ese nombre de campo haya sido asignado previamente a Rec2.
Es con lo que te puedo ayudar por ahora.
Ahora bien, el Error '3265' aparece cuando estás haciendo referencia a un elemento que no existe dentro de un objeto (colección), ejemplo:
Tu tabla LEGALIZACIONES tiene los campos
Legalizacion
Usuario
Anticipodirigido
Valoranticipo
OBRA
Valorlegalizacion
Total
Haces un:
Rec2.Source = "select OBRA from LEGALIZACIONES"
Y luego utilizas Rec2! OBRAS en lugar de Rec2! OBRA, que, por cierto, no es el caso que encuentro en tu código, y es por ello que requiero el lugar específico en que está ocurriendo el error.
Verifica que al hacer referencia a Rec2! NOMBRECAMPO, ese nombre de campo haya sido asignado previamente a Rec2.
Es con lo que te puedo ayudar por ahora.
Que pena con usted, mil disculpas.
En cuato al error me lo lanza cuando doy click sobre el boton guardar
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
Error '3265' en tiempo de ejecucion:
No se encontro el elemento en la coleccion que corresponde con el nombre o el ordinal pedido.
y me pasa cuando pongo este codigo:
Set Rec2 = New ADODB.Recordset
With Rec2
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select VALORLEGALIZACION, TOTAL from LEGALIZACIONES where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
If Rec2.EOF Or Rec2.BOF Then
txtValorLegalizacion.Text = ""
Else
txtValorLegalizacion.Text = FormatCurrency(Rec2!VALORLEGALIZACION)
lblTotal2.Caption = FormatCurrency(Rec2!TOTAL)
End If
En cuato al error me lo lanza cuando doy click sobre el boton guardar
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
Error '3265' en tiempo de ejecucion:
No se encontro el elemento en la coleccion que corresponde con el nombre o el ordinal pedido.
y me pasa cuando pongo este codigo:
Set Rec2 = New ADODB.Recordset
With Rec2
Set .ActiveConnection = Con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = "select VALORLEGALIZACION, TOTAL from LEGALIZACIONES where LEGALIZACION = " & lblLegalizacionNo
.Open
End With
If Rec2.EOF Or Rec2.BOF Then
txtValorLegalizacion.Text = ""
Else
txtValorLegalizacion.Text = FormatCurrency(Rec2!VALORLEGALIZACION)
lblTotal2.Caption = FormatCurrency(Rec2!TOTAL)
End If
He estado tratando de desenredar todo lo que me dices. Te puedo ayudar con lo del error '3265', pero con lo de la doble escritura, no es mucho lo que puedo hacer.
OK...
El error 3265 te ocurre porque dentro de toda la secuencia que sigues haces esto
'(1)
Rec2. Open "LEGALIZACIONES", Con, adOpenDynamic, adLockOptimistic, adCmdTable
Con esta línea asignas la tabla legalizaciones completa a Rec2, mirándolo de este punto de vista, no deberías tener pronblemas para guardar, sin embargo, antes de hacer el guardado (pasar por las siguientes líneas de código)
'(2)
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
Asignas una nueva consulta:
'(3)
Rec2.Source = "select VALORLEGALIZACION, TOTAL from LEGALIZACIONES where LEGALIZACION = " & lblLegalizacionNo
Con esta nueva consulta a Rec2 le otorgas sólo los campos VALORLEGALIZACION y TOTAL, por tanto, al momento que haces
Rec2!LEGALIZACION = lblLegalizacionNo.Caption
LEGALIZACION ya no es parte de Rec2.
En resumen, se está ejecutando (1) - (3) y (2), de tal forma que (3) está estorbando para que (2) se ejecute correctamente. Si comentas o eliminas la sección de código en que se encuentra (3) te darás cuenta que no tienes problemas al ejecutar (2).
Para evitarte este tipo de problemas, intenta no utilizar variables globales a no ser que sea estrictamente necesario, y de usarlas, utilizalas con cuidado.
En cuanto eso de que te guarda datos de forma duplicada, revisa el código y pon especial cuidado en los lugares donde utilizas o llamas a la rutina de guardado.
He hecho lo posible.
Saludos...
OK...
El error 3265 te ocurre porque dentro de toda la secuencia que sigues haces esto
'(1)
Rec2. Open "LEGALIZACIONES", Con, adOpenDynamic, adLockOptimistic, adCmdTable
Con esta línea asignas la tabla legalizaciones completa a Rec2, mirándolo de este punto de vista, no deberías tener pronblemas para guardar, sin embargo, antes de hacer el guardado (pasar por las siguientes líneas de código)
'(2)
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
Asignas una nueva consulta:
'(3)
Rec2.Source = "select VALORLEGALIZACION, TOTAL from LEGALIZACIONES where LEGALIZACION = " & lblLegalizacionNo
Con esta nueva consulta a Rec2 le otorgas sólo los campos VALORLEGALIZACION y TOTAL, por tanto, al momento que haces
Rec2!LEGALIZACION = lblLegalizacionNo.Caption
LEGALIZACION ya no es parte de Rec2.
En resumen, se está ejecutando (1) - (3) y (2), de tal forma que (3) está estorbando para que (2) se ejecute correctamente. Si comentas o eliminas la sección de código en que se encuentra (3) te darás cuenta que no tienes problemas al ejecutar (2).
Para evitarte este tipo de problemas, intenta no utilizar variables globales a no ser que sea estrictamente necesario, y de usarlas, utilizalas con cuidado.
En cuanto eso de que te guarda datos de forma duplicada, revisa el código y pon especial cuidado en los lugares donde utilizas o llamas a la rutina de guardado.
He hecho lo posible.
Saludos...
- Compartir respuesta
- Anónimo
ahora mismo