viernes, 8 de septiembre de 2017

Copiar valor de un formulario en un nuevo formulario

'Para copiar un valor
'en una tabla que se está abriendo:

DoCmd.OpenForm "EntregasF" ' abre el formulario EntregasF

Forms![NombreFormulario]![NombreCelda] = DATO  'copia el valor que esta en la variable DATO en la celda
'DATO del formulario NombreFormulario

cuando son 2 formularios (formulario y subformulario)

Forms![NombreFormulario]![NombreSubFormulario]![NombreCelda] = DATO

'aveces el formulario esta abierto pero no está focalizado, no se está trabajando en él

'entonces para poder tomar el valor, primero necesitamos ir al formulario:

Forms![NombreFormulario]![NombreCelda].SetFocus
'luego recien rescatamos el valor:
Forms![NombreFormulario]![NombreCelda] = DATO

jueves, 31 de agosto de 2017

comando Buscarv (DLookUP) en los formularios

Ejemplo:
en un formulario cualquiera podemos llamar a un valor predeterminado en una tabla
Tabla: Nombre tabla TCtabla
Nombre columnas  TC    ValorTC   FechaTC
                               CLP       1           11-10-2016
                               USD       626,5   11-10-2016
                               EUR       690,8    11-10-2016

si aplicamos en cualquier box del formulario
lo siguiente:
=DLookUp("ValorTC","TCtabla","TC = ""CLP""")
donde ValorTC  es el dato que queremos llamar
             TCtabla es el nombre de la Tabla
            TC es el nombre de la columna en la tabla donde vamos a realizar la busqueda
            CLP  es el valor que buscará

así sin hacer nada,  cada vez que abramos el formulario, nos traerá el dato instantaneo del Tipo de Cambio de CLP



también se puede agregar en visual basic en una subrutina:

de la siguiente tabla: Usuarios
Nombre de columnas: Usuario    Nombre
                                        1             Juan
                                        2             Pedro

Dim varX As Variant 'creamos una variante para rescatar el valor
varX = DLookup("Nombre", _  'Nombre es el nombre de la columna que tomaremos el valor
    "Usuarios", "Usuario ='" & USUARIOO & "'") ' Usuarios es el nombre de la tabla o consulta, Usuario es el valor que buscaremos

donde USAURIOO  es un valor tomado anteriormente de alguna celda o valor ingresado en otra celda en el formulario


o en el mismo formulario en una celda  hacendo referencia a otra celda

=DLookUp("IdDeuda";"TipoDeudas";"TipoDeuda ='" & [TipoDeudaTemp] & "'")

donde   IdDeuda    es el dato que queremos llamar
            TipoDeudas es el nombre de la Tabla
            TipoDeuda es el nombre de la columna en la tabla donde vamos a realizar la busqueda
            TipoDeudaTemp  es el nombre de la otra celda , el valor que coincida
cuando la comparacion es un valor numerico:
=DLookUp("Nombre";"PersonasyEspecialidades";"EspecialistaID =" & [IDTemp] & "")

CUANDO ES UN ID:
'CONSU es la variable, ID es el nombre de la celda en el formulario

Dim CONSU As String 'creamos la variable CONSU
    CONSU = ID 'tomamos el valor de la celda ID y lo agregamos a la variable CONSU
DoCmd.OpenForm "OtroFormulario", acNormal, , "IdDeuda IN(" & CONSU & ")"
'abrimos el formulario "OtroFormulario" que en el dato IdDeuda  contenga el valor de CONSU



martes, 22 de agosto de 2017

forma de actualizar datos modifcados acNext acPrevious

Cuando se agregan datos en un formulario que provienen de una tabla o consulta
y uno quiere asegurarse que sean guardados:

se puede realizar una sub-rutina,
para que refresque los datos, sin necesidad de abrir y cerrar el formulario

DoCmd.GoToRecord , , acNext
DoCmd.GoToRecord , , acPrevious


con esto nos desplazamos al siguiente registro y volvemos inmediatamente al que estabamos antes
realizando un pequeño refresco de la informacion

miércoles, 22 de marzo de 2017

VB atajo si se presenta un error

Cuando realizamos una rutina cualquiera, puede que por falta de datos u otro motivo se presente un error.

aqui una rutina para saltar el error y salir o mostrar el error por medio del sistema o mostrar un mensaje



On Error GoTo   Err_RUTINA '[RUTINA puede ser cualquier nombre que le demos


'EJECUCIÓN DE LA RUTINA VB (cualquier rutina)

Exit_RUTINA : '[ si todo funciona bien la rutina sale si ningun problema
    Exit Sub

Err_RUTINA: '[pero si se presenta error podemos finalizar de varias formas

'1    que muestre el error por sistema:
Err_RUTINA:
     MsgBox Err.Description  
Resume Next (para salir de la rutina)

'2   que muestre un mensaje personalizado:
Err_RUTINA:
      MsgBox " ingrese el codigo correcto"  'por ejemplo
Resume Next (para salir de la rutina)

'EJEMPLO1:
'Entonces:  Con el error del sistema:
On Error GoTo  Err_RUTINA
'EJECUCIÓN DE LA RUTINA VB
Exit_RUTINA :
    Exit Sub
Err_RUTINA: 
     MsgBox Err.Description 
        Resume Next
'EJEMPLO2:
'Con un error personalizado :
On Error GoTo  Err_RUTINA
'EJECUCIÓN DE LA RUTINA VB
Exit_RUTINA :
    Exit Sub
Err_RUTINA: 
     MsgBox " ingrese el codigo correcto"
        Resume Next


'si simplemente uno quiere saltarse el error y que no diga nada
On Error GoTo  Err_RUTINA
'EJECUCIÓN DE LA RUTINA VB
Exit_RUTINA :
    Exit Sub
Err_RUTINA: 
        Resume Next
'EN ESTE CASO SIMPLEMENTE NO MUESTRA EL ERROR Y TAMPOCO MUESTRA NADA


'Ejemplo PRACTICO:
On Error GoTo Err_RUTINA

Dim BEZETA As String
Dim POSBZETA As String
BEZETA = [Text38]
POSBEZETA = [Text40]
[Text50] = BEZETA
[Text52] = POSBEZETA
Dim reffff As String
reffff = [Text78]
Text70 = reffff


Exit_RUTINA:  

    Exit Sub
Err_RUTINA:
      MsgBox "Debe tener El valor en (Ref en SAP), valor tomado en MD04"   

      Resume Next

Con un click pasar datos ordenados a una planilla google sheet excel

     Dim http As Object     Dim url As String     Dim datos As String     Dim codigoerlangenold As String ' 02     Dim codigofabricaaa A...