Curso VBA Access. Práctica I. Vídeo 20

Поділитися
Вставка
  • Опубліковано 7 лис 2024

КОМЕНТАРІ • 61

  • @despierte5040
    @despierte5040 5 років тому +3

    Juan, mil gracias por tanta dedicación y por querer compartir lo que sabes y de qué manera. No tengo preguntas, sólo gratitud. Me impresiona la pedagogía, la claridad, la organización en sus clases. Un abrazo.

    • @pildorasinformaticas
      @pildorasinformaticas  5 років тому +1

      Muchísimas gracias por el comentario. Me alegro de que te gusten los vídeos. Un saludo!

  • @lorenzosalinaspasillas4571
    @lorenzosalinaspasillas4571 7 років тому +1

    La verdad es que tiene una forma de enseñar bastante didactica. Sus explicaciones son bastante claras y ayudan a entender de una manera muy sencilla esto que parece bastante complejo. Muchas gracias, recibe un saludo desde ACAYUCAN, VERACRUZ, MEXICO.

    • @pildorasinformaticas
      @pildorasinformaticas  7 років тому

      Gracias por el comentario. Me alegro de que te guste el curso. Un saludo!!

  • @roadtari9069
    @roadtari9069 4 роки тому

    Aprovechando la cuarentena aca en Chile, he hecho un refresh de este curso, lo encuentro brillante profesor en terminos pedagogicos, ¡ Dios le bendiga de sobremanera por su tiempo !...Un abrazo desde Stgo. de Chile

  • @MotoErrante70
    @MotoErrante70 Рік тому +1

    No sé si se ha comentado antes, pero la letra en el NIF se usa muchísimo para evitar errores de entrada. Lo que se llama un "dígito de control". En la administración (donde trabajo) nos evita muchísimos errores de tecleo, pues cuando una persona escribe mal su DNI (o el propio usuario al entrar el dato) la letra no coincide y el sistema no nos deja continuar. Me ha encantado tu forma de hacerlo, Juan. Me copio. Hasta ahora lo hacía creando una matriz con las posiciones de las letras, pero es mucho más tedioso. ¡GRACIAS!

  • @NoOne-zl4qb
    @NoOne-zl4qb 7 років тому

    jajajaj Me divierto mucho con tus errores de escritura pero eres un crack enceñando. Yo tenía algo de experiencia con C# y eso me ayuda pero el 80% de lo bien que lo paso viendo el curso y aprendiendo es gracias a tus metodos de enceñansa. Gracias y saludos desde tenerife.

  • @ogirnoeld2011
    @ogirnoeld2011 8 років тому +1

    Profe! Mi respeto por su sabiduria en el campo de programacion. Sus videos me an sido de mucha ayuda ya que estoy principiando en esto de programacion. Gracias por sus videos que Dios le bendiga..

    • @pildorasinformaticas
      @pildorasinformaticas  8 років тому

      +ogir noel d Gracias a ti por el comentario y por seguir mis vídeos. Un cordial saludo

  • @fabianandrademontes9529
    @fabianandrademontes9529 3 роки тому

    Hola, explica demasiado bien y he aprendido muchísimo, saludos desde Colombia, aquí no tenemos NIF sino NIT y la letra es un DV que es un número, es decir, se llama Numero de Identificación Tributaria y un Dígito de Verificación.

  • @gustavojuarez2763
    @gustavojuarez2763 9 років тому +1

    muy bueno el curso, excelentemente explicado, super claro en los conceptos , muy bueno. Yo hago sistemas con VB.net 2010 y mysql como DB e imprimir informes con crystal report. Me intereso meterme en el mundo de access VBA y veo que es muy rapido para desarrollar. Muchas Gracias por el aporte , bueno continuo viendo tus videos..

    • @pildorasinformaticas
      @pildorasinformaticas  9 років тому +1

      +GUSTAVO juarez Gracias por el comentario. Me alegro de que te guste el curso. Un saludo

  • @jonathanguillen4752
    @jonathanguillen4752 3 місяці тому

    Nuevamente Excelente. Desde Venezuela

  • @bio-radingenieriabiomedica7898
    @bio-radingenieriabiomedica7898 4 роки тому

    Gracias por la información!! Muy bien explicado y muy útil. Cómo puedo hacer para que el formulario se ejecute como NO MAXIMIZADO?? Desde dentro de Access, cuando paso de Modo Diseño a Formulario, me ocupa toda la ventana de la solapa. Lo he puesto como modal, movible y demás pero no hay caso. Gracias por la respuesta.

  • @alvargarcia1350
    @alvargarcia1350 11 років тому

    Un gran trabajo, tal como nos tienes habituados. Gracias

  • @fernandorosa3664
    @fernandorosa3664 10 років тому +1

    Hola Juan, creo que la utilidad de la letra del NIF es para evitar errores en la introducción del mismo, de forma que el número y la letra deben corresponderse. Lo mismo que los dígitos de control de una CCC ó el IBAN. Así pues, pienso que el formulario debería contrastar la letra introducida por el usuario con la que "debería" haber introducido, y rechazar el NIF introducido en su caso. Muchas gracias.

    • @pildorasinformaticas
      @pildorasinformaticas  10 років тому

      Fernando Rosa Es correcto. En algún vídeo (no recuerdo exactamente en cuál) pongo precisamente ese ejemplo, es decir, un formulario que se encarga de validar la letra NIF de un DNI utilizando para ello el logaritmo que halla la letra NIF en base a los dígitos del DNI.
      Un saludo

  • @recursosformacion
    @recursosformacion 8 років тому +4

    Hola, Ante todo gracias por tu trabajo; realmente es de gran valor.
    Solo me gustaria recordarte que tienes la funcion Mod que te da el resto, para calcular DNI es mejor que no dividir, extraer parte entera, multiplicar y restar....

    • @pildorasinformaticas
      @pildorasinformaticas  8 років тому

      +Miguel Garcia Correcto!! Y creo que la utilizo en el curso de VBA Excel. No se por qué no la utilicé en este la verdad. Gracias por el aporte. Un saludo!!

  • @beatrizb1683
    @beatrizb1683 11 років тому

    Me encanta, estupendo como todos y deseando ver el siguiente

  • @GsieteInueve
    @GsieteInueve 7 років тому +1

    Excelente maestro!!!! Muchisimas gracias por sus buenisimas ense;anzas

  • @cdeiknotica9243
    @cdeiknotica9243 9 років тому +1

    hola juan, cuantos videos conforman este curso

    • @pildorasinformaticas
      @pildorasinformaticas  9 років тому +1

      CDEI KNOTICA Estos:
      ua-cam.com/play/PLC3E8FA619DF71898.html
      Un saludo

  • @carlosmauricioninavillarro9191
    @carlosmauricioninavillarro9191 9 років тому +1

    excelente vídeo, muchas gracias por todo lo que enseñas, todo lo que no aprendí sobre programación en la universidad lo aprendí con tus vídeos, excelente trabajo.
    me podrías sugerir un libro para aprender programar ya que cada vez estoy mas interesado en seguir aprendiendo, gracias de antemano

    • @pildorasinformaticas
      @pildorasinformaticas  9 років тому

      Carlos Mauricio Nina Villarroel Hola !! Gracias por el comentario. Entiendo que buscas un libro para programar en VBA Access ya que el comentario está en este curso. Lo de los libros es subjetivo pero a mi personalmente para esta materia me gustan los de Anaya, categoría programación. Concretamente el de Access 2007. Programación VBA.
      Un saludo

  • @ricardopolanco2554
    @ricardopolanco2554 9 років тому +1

    Hola Juan
    Sigo este curso desde el primer vídeo y era de los que programaba en vba y no sabía lo que estaba haciendo. Con este curso veo sentido a lo que hacía. Solo me gustaría que me resolvieras una duda.
    Yo nunca había utilizado la propiedad .value sino que lo hacía mediante me.nombredelcampo. ¿Hay alguna diferencia?
    Gracias por adelantado y por supuesto gracias por compartir tus conocimientos.

    • @pildorasinformaticas
      @pildorasinformaticas  9 років тому

      Ricardo Polanco Hola !! Gracias por el comentario y por seguir mis vídeos. Cuando se trata de cuadros de texto o menús desplegables (que es la mayoría de las veces) , no hay diferencia. La propiedad por defecto de estos controles es value, y eso significa que puedes ponerla o no.
      Es más breve no mencionar la propiedad, pero yo tengo la costumbre de hacerlo. Un saludo

    • @cdeiknotica9243
      @cdeiknotica9243 9 років тому +2

      pildorasinformaticas En cuanto a poner y no poner yo estoy contigo y es mejor escribir el código lo mas claro posible poniendo value y otros y a esto lo llamo buena praxis o práctica, ya que según la regla del 80/20 es decir nos pasamos el 80% leyendo código y cuanto mas claro esté mejor para nosotros o para otros que lo lean y el 20% restante es de escritura de código.
      Por cierto y muy importante, el comentar el código es fundamental.
      Saludos

  • @roquecarlosfernandez9626
    @roquecarlosfernandez9626 9 років тому +1

    Juan muchas gracias por el Curso lo sigo desde el primer vídeo, realmente hay poco gente con tanta generosidad como la tuya, de explicar esto abiertamente y desde cero.
    Tengo una pregunta para hacerte: hay alguna orden que me permita copiar el valor almacenado en una capo especifico de un tabla (por ejemplo un numero) y pegarlo en otra tabla en un campo especifico, (es decir copiar y pegar) pero siempre serian valores diferentes. Específicamente soy medico y tengo bases de datos con pacientes, pero no puedo mostrar el nombre en un formulario de base de dato porque eso esta prohibido, lo que si puedo mostrar es un numero de paciente (es una codificación). Cada vez que ingresa un paciente nuevo a la base de datos necesito que ese numero de paciente se copie en el sistema y luego pegarlo en diferentes campos de diferentes tablas, Se que es un poco complicado pero debe ser así. lógicamente el valor que debo copiar es siempre diferente ya que cada paciente así como cada numero es único.
    Muchas gracias por tu ayuda, realmente me ha sido de mucha utilidad.

    • @pildorasinformaticas
      @pildorasinformaticas  9 років тому

      Roque Carlos Fernandez Hola !! Muchas gracias por tu comentario. La forma que yo conozco para hacer tal cosa es utilizando ADO (se explica más adelante en este curso). ADO te permite examinar registros de otras tablas de la misma BBDD o incluso de otras BBDD. Una vez encontrado el registro que quieres copiar utilizando ADO, utilizarías una consulta de actualización SQL para insertar el registro copiado en otra tabla, o en varias tablas.
      Es complicado, pero es la única forma que yo conozco de hacer lo que pides teniendo en cuenta las restricciones que planteas.
      Un saludo

  • @humbertochinchillamora3513
    @humbertochinchillamora3513 10 років тому +1

    Vídeo 20 - 30 de noviembre de 2.014
    Hola Juan
    Ya sé que tú haces cosas para que nosotros aprendamos nuevas funciones (Int y Mid, para este caso), sin embargo quisiera comentar:
    1. Tu nos hablaste en vídeos anteriores sobre la función “Mod”, creo que es la apropiada para evitar divisiones, multiplicaciones y restas, el módulo queda más limpio e igualmente encontraremos el numero al que asignarle la letra. Estoy en lo cierto?
    2. Por sola curiosidad porque se divide por 23 y no por otro número?
    3. En mi país (Colombia) las empresas se identifican, para negociones comunes, tal como lo planteas con el NIF, pero las personas naturales no, como hacer si necesito tener en la misma base ambos tipos de identificación?
    4. Tengo algún enredo, pues veo que tú haces módulos independientes y sin embargo utilizas resultados de otros módulos sin hace el respectivo llamado. Voy a ver como desenredo la “Pita”.
    5. Hiciste un comentario que me llamó la atención: “No quiero darle el mismo nombre del módulo al del procedimiento (Sub - End Sub).” Pues bien en una oportunidad anterior te hice una consulta, que desafortunadamente no pudiste resolverme, era justamente que al ejecutarla y/o al hacer un llamado a un procedimiento me enviaba el mensaje: “Se esperaba una función o un procedimiento no un módulo”. Después de muchas frustraciones y de abandonar el llamado, pues no encontraba la solución, se me ocurrió modificar uno de los nombres, el del procedimiento o el del módulo, y todo funcionó. Concluí entonces que le daba prioridad al nombre del módulo y entonces no se podía usar nombres iguales. Podrías contarme como es la explicación y si se puede usar el mismo nombre?
    6. Finalmente, excúsame por favor preguntas que para ti pueden ser muy elementales, pero como te lo he dicho varias veces el 95% de lo que sé de Código VBA, te lo debo a ti. Tenía desde hace mucho tiempo el deseo de aprender pero no había conocido tu canal, así que soy muy novato en estos temas.
    Chao, millón de gracias
    Humberto

    • @pildorasinformaticas
      @pildorasinformaticas  10 років тому

      Humberto Chinchilla Mora Hola !! Vayamos por partes:
      1. La función Mod devuelve el resto de una división, mientras que Mid e Int hacen cosas totalmente diferentes. Es decir, cada una debe usarse en su ámbito y no pueden reemplazarse unas por otras. Mid extrae caracteres de un String e Int deveulve la parte entera de un número decimal. Lo que haces con una no lo puedes hacer con las otras y viceversa.
      2. Se trata de un cálculo predefinido, un algoritmo. Al igual que para hallar el número de seguridad de las tarjetas de crédito (ese que son 3 cifras y se encentra en el reverso de las tarjetas) se utiliza un cálculo predefinido con todos los dígitos de la tarjeta. Son algoritmos que inventan para hacer cálculos y en este caso a un buen hombre se le ocurrió en su día este cálculo para hallar la letra del NIF.
      3. En ese caso tendrías que crear dos campos clave (que se puede) o mejor aún, rediseñar la BBDD porque nadie dijo que fuera obligatorio tener ambos campos en la misma tabla. Quizás puedas tener los campos en tablas diferentes y correctamente relacionadas para obtener la información.
      4. Aquí no se a qué te refieres. Efectivamente se pueden utilizar resultados de otros módulos pero para poder hacer esto es indispensable realizar una llamada a un procedimiento en algún sitio.
      5. Desafortunadamente algunas preguntas que me realizáis quedan sin contestar por varios motivos: porque no las veo (recibo cientos a diario), porque se me olvidan (las dejo pendientes y al final se me olvidan) o porque me piden cosas que me llevaría más de 15 min realizar. En este caso que me comentas seguro que fue porque no la vi. Es mala idea nombrar dos cosas con el mismo nombre, en general. Para evitar tener que memorizar preguntas del tipo ¿pasa algo si llamo a dos módulos con el mismo nombre? ¿pasa algo si llamo a un módulo y a un procedimiento con el mismo nombre? ¿pasa algo si llamo a una variable y a un módulo con el mismo nombre? etc. La casuística es casi infinita. para evitar dolores de cabeza, no nombres dos cosas con el mismo nombre.
      6. Son preguntas normales que surgen en un proceso de aprendizaje de lo que sea. Cuando la enseñanza es presencial, se solucionan rápido. Pero cuando la enseñanza es online, se complica un poco.
      Un saludo !!

    • @humbertochinchillamora3513
      @humbertochinchillamora3513 10 років тому +1

      pildorasinformaticas Juan, de nuevo muchas gracias de nuevo por todo.
      No supe hacerte la observación, me refería a que nos habías enseñado esas dos nuevas funciones. Int y Mid.
      Mi comentario es que en lugar de dividir por 23, luego multiplicar el entero por 23 y después restar este valor del numero original, quedaría más sencillo usar la función Mod. Pero no problem. Gracias. Apenas empiezo a mirar lo de Word.
      Chao
      Humberto

  • @rafaelperezuribe3490
    @rafaelperezuribe3490 10 років тому

    Juan, hasta de tus errores aprendemos, que bueno que no edites esas situaciones! =)
    Muy bien y muchas gracias.
    Saludos.

    • @pildorasinformaticas
      @pildorasinformaticas  10 років тому

      Pienso que puede ser de utilidad el que me equivoque. Un saludo

  • @TitanCamarita5384
    @TitanCamarita5384 3 роки тому

    muy bien explicado

  • @danielsantos2201
    @danielsantos2201 7 років тому +1

    Como estas Juan, estaba viendo este video de nuevo y reduje un poco el codigo de la funcion para calcular el NIF. Lo comparto, a ver que te parece
    Function calculo_nif(NIF As Integer) As String
    Dim Resto As Integer
    Dim Letra As String
    Dim myArray As Variant
    myArray = Array("T", "R", "W", "A", "G", "M", "Y", "F", "P", "D", "X", "B", "N", "J", "Z", "S", "Q", "V", "H", "L", "C", "K", "E")
    Resto = NIF Mod 23
    Letra = myArray(Resto)
    calculo_nif = Letra
    End Function
    Como siempre, es un placer escuchar tus videos porque cada vez descubro nuevas cosas a las que no les habia prestado atencion.

    • @pildorasinformaticas
      @pildorasinformaticas  7 років тому

      Muchas gracias por el comentario y sobre todo por el aporte. Un saludo!!

  • @josemanueljimenez5407
    @josemanueljimenez5407 9 років тому +1

    Hola Profesor, primero saludarlo, quisiera si usted puede que me auxilie con el uso del DIM, tengo una Bd donde aquí en México tenemos un registro que se llama (R.F.C.) Registro federal de Causante es único para cada persona que paga impuestos, la pregunta es como le puedo hacer para usar el DIM correctamente Ejem: Pedro Pérez García nació el 20 de Sept de 1950, y su registro quedaría así PEGP500920, donde hay que extraer las 2 primeras letras del apellido paterno (PE), después primera letra del apellido materno (G) , enseguida primera letra del Nombre(s) (P) y por último la fecha 500920, espero me pueda auxiliar , de antemano gracias saludos

    • @pildorasinformaticas
      @pildorasinformaticas  9 років тому

      +Jose Manuel Jimenez Hola !! ¿El DIM tiene siempre el mismo número de caracteres?

  • @Vadari_Ingenieros
    @Vadari_Ingenieros 7 років тому +1

    que buen video

  • @Inaki_L
    @Inaki_L 11 років тому

    Para pulirlo un poco mas, la entrada del dni deberia de ser una cadena de 8 caracteres de longitud ;-)
    Me gusta como lo explicas, sigue asi...

    • @pildorasinformaticas
      @pildorasinformaticas  11 років тому

      Hola !! Tienes razón pero entonces obligaría a introducir ceros a la izquierda o espacios en blanco para dni cortos. No todos los dni tienen 8 carateres

    • @pildorasinformaticas
      @pildorasinformaticas  11 років тому

      De todas formas quedan por controlar muchas cosas aun, como por ejemplo, ¿qué ocurre si introducimos texto en el dni? el procedimiento function espera un long.... ¿qué ocurre si dejamos el dni vacío? en la tabla nif es clave.... lo intentaremos poco a poco

    • @Inaki_L
      @Inaki_L 11 років тому

      pildorasinformaticas Bueno como es una string no haria falta lo de los 0 a la izq ¿no?

    • @pildorasinformaticas
      @pildorasinformaticas  11 років тому

      pues la verdad es que no, no haría falta. Pensaba en las máscaras de entrada en tablas, pero esto nada que ver. Pues me acabas de dar una buena idea... lo controlaremos en los próximos vídeos. Saludos !!

    • @Inaki_L
      @Inaki_L 11 років тому

      Pildorasinformaticas tienes razon, mi msg anterior no vale.
      Ok poco a poco :)

  • @eduardopacios1246
    @eduardopacios1246 6 років тому

    Dentro del Private Sub Lost Focus(), la instrucción c_nif.value = calcula_letradelnif(c_nif.value) me devuelve un mensaje de error. "Se esperaba una variable o procedimiento , no un módulo". Reconoce el procedimiento Function sólo cuando copio el procedimiento function del módulo y lo pego debajo del Private Sub Lost Focus(). Lo he revisado varias veces, pero no encuentro el error. ¿Por qué pasará esto?

    • @edgarlara09
      @edgarlara09 6 років тому

      Seguramente eso te pasa porque usaste el mismo nombre tanto para el módulo cómo para el procedimiento function. Cambia el nombre a cualquiera de los dos y verifica si así se corrige el error.

  • @efrainllamoctantaatalaya6571

    excelente

  • @jorgeivan3777
    @jorgeivan3777 8 років тому +1

    muy monstruo usted!!!

  • @ignacioavendano1638
    @ignacioavendano1638 3 роки тому

    6:34 Creacion del formulario
    29:40 accion al perder el foco

  • @josemanuelcerpainfante7219
    @josemanuelcerpainfante7219 7 років тому

    Al ejecutar el código me da un error en " c_nif.Value = c_nif & "-" & calcula_letradenif(c_nif.Value)", por que c_nif no puede ser nulo

  • @pezesito
    @pezesito 5 років тому

    Use debug.print para ver el resultado de las operaciones y sin usar int me salían siempre enteros en la ventana de inmediato

  • @miguelperezpal
    @miguelperezpal 9 років тому

    Gracias.

  • @joseobertodutari6907
    @joseobertodutari6907 3 роки тому

    Function calcula_letradelnif(dni As Long) As String
    Dim cadena As String, resultado1 As Long, resultado2 As Long
    cadena = "TRWAGMYFPDXBNJZSQVHLCKE"
    'dni = InputBox("Introdusca el DNI")
    resultado1 = Int(dni / 23)
    resultado2 = dni - (resultado1 * 23)
    calcula_letradelnif = Mid(cadena, resultado2 + 1, 1)
    End Function
    Private Sub c_nif_LostFocus()
    c_nif.Value = c_nif.Value & " " & calcula_letradelnif(c_nif.Value)
    End Sub

  • @Quasar07
    @Quasar07 8 років тому +1

    y no es mas sencillo hacer:
    dni = InputBox("introduce dni:")
    dni = dni Mod 23
    MsgBox dni
    calcular el mod del dni
    saludos.

    • @pildorasinformaticas
      @pildorasinformaticas  8 років тому

      Pues como hace años que grabé este vídeo, ya no recuerdo el código que hice en él. Pero si tu código lo has probado, funciona y tiene menos líneas que el mío, entonces sí es más sencillo. También hay que mirar si a las alturas de este vídeo en el curso, he explicado lo necesario para hacer más simple el código.... pero como yo siempre digo: "en programación siempre hay varios caminos para llegar a Roma". Un saludo!!