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
1
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?
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
¿Qué error?
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
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.
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
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...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas