none
SELECT ¿Asi? RRS feed

  • Pregunta

  • Buenas tardes a tod@s.

    Tengo una duda.

    Tengo un formulario X de entrada de datos, que guarda el registro en una tabla A pero de entre de esos campos hay uno que NO lo pongo yo sino que lo lee de una tabla B para darle el valor automaticamente a la variable correspondiente.

    ¿Como se hace para que eso sea asi?

    Son campos numericos y creo que es algo asi puesto en el origen del control pero no lo tengo claro. Ademas escrito tal cual me da error, supongo que algo falta.

    [Precio]=[SELECT Precio_Lista FROM Precio_Tabla]

     

    Gracias por adelantado

    jueves, 3 de junio de 2010 19:36

Respuestas

  • Precio = DLookup("[Precio_Lista]", "Tabla")

    Fíjate bién que el campo se llama Precio_lista; por otro lado, prueba quitando los corchetes al nombre de la tabla.

    Puedes ver el resultado en el debugger

    debug.print Precio

     o con un msgbox(Precio)

    • Marcado como respuesta JM_cat viernes, 4 de junio de 2010 8:19
    jueves, 3 de junio de 2010 21:09
  • ¡AHORA SI!

    Muchas gracias por tu colaboracion.

    Solo he tenido que poner la rutina en el sitio correcto y cambiarle el tipo de datos a Double porque la variable tiene decimales.

    Queda asi:

    Private Sub Un_TextBox_Cualquiera_Enter()


       Dim Variable_de_Traspaso As Double ' Double indica que la variable tiene decimales
     
         Variable_de_Traspaso = DLookup("[Tu_Campo_de_Tabla_Llamada]", "Tabla_Llamada")
         Union_Campos = Variable_de_Traspaso

    ' Union_Campos es el nombre de un textbox que tiene como origen del control un campo de la tabla DESTINO.

    End Sub

     

    Supongo que para quien tampoco sepa hacerlo pueda servir este condigo explicado asi, al menos la intencion es esa.

    Muchas gracias

    • Marcado como respuesta JM_cat viernes, 4 de junio de 2010 8:20
    viernes, 4 de junio de 2010 8:19

Todas las respuestas

  • ¿En qué estas realizando esto? en Microsoft Access?; si es Microsoft Access puedes utilizar Funciones de Agregado, que son funciones (tu puedes crear las tuyas propias) que vienen ya creadas para facilitar la programación a los usuarios.

    podrías declarar una variable

    Dim tuvalor as integer(si es un numero entero) o as string (si es alfanumerico) etc

    luego:

    tuvalor=Dlookup('[nombre del campo]','[nombre de la tabla]','criterios') donde criterios es una cadena para buscar el valor que realmente necesitas. Un criterio puede ser:

    "pasaporte=' " & txtPasaporte & " ' "

    Suponiendo que deseas saber el país de origen del portador de pasaporte nro 11-123456-789

    dim pais as string

    pais=Dlookup("[pais]","[clientes]","pasaporte=' " & txtPasaporte & " ' ")

    Atte Carlos

     

    jueves, 3 de junio de 2010 19:49
  • Gracias por la idea pero sigue sin funcionar. Y si es Acces 2003.

     

    Lo tengo asi:

     

    Private Sub Union_Campos_afterUpdate()

    Dim Precio As Integer

    Precio = DLookup("[Precio_Lista]", "[Precio_Tabla]")

    Union_Campos = Precio

    End Sub

     

    ¿Alguna sugerencia?

     

    Gracias

    jueves, 3 de junio de 2010 21:00
  • Precio = DLookup("[Precio_Lista]", "Tabla")

    Fíjate bién que el campo se llama Precio_lista; por otro lado, prueba quitando los corchetes al nombre de la tabla.

    Puedes ver el resultado en el debugger

    debug.print Precio

     o con un msgbox(Precio)

    • Marcado como respuesta JM_cat viernes, 4 de junio de 2010 8:19
    jueves, 3 de junio de 2010 21:09
  • Pues...

    Va a ser que no

    Sigue sin funcionar.

     

    ¿Y ahora?

    jueves, 3 de junio de 2010 21:27
  • ¡AHORA SI!

    Muchas gracias por tu colaboracion.

    Solo he tenido que poner la rutina en el sitio correcto y cambiarle el tipo de datos a Double porque la variable tiene decimales.

    Queda asi:

    Private Sub Un_TextBox_Cualquiera_Enter()


       Dim Variable_de_Traspaso As Double ' Double indica que la variable tiene decimales
     
         Variable_de_Traspaso = DLookup("[Tu_Campo_de_Tabla_Llamada]", "Tabla_Llamada")
         Union_Campos = Variable_de_Traspaso

    ' Union_Campos es el nombre de un textbox que tiene como origen del control un campo de la tabla DESTINO.

    End Sub

     

    Supongo que para quien tampoco sepa hacerlo pueda servir este condigo explicado asi, al menos la intencion es esa.

    Muchas gracias

    • Marcado como respuesta JM_cat viernes, 4 de junio de 2010 8:20
    viernes, 4 de junio de 2010 8:19
  • Si, excelente los comentarios en el procedimiento. Hay otras funciones agregadas: dmax, dmin, dfirst, dlast. Otra manera de utilizar un valor a lo largo de la aplicación es declarándola como Global en un módulo estandar.

    Puedes crear un módulo de nombre misVarsGlobales y allí colocar:

    global porcentaje_desperdicio as single

    global modulo_activo as string

    global mi_ruta as string

    En alguna parte de la aplicación, preferiblemente al cargar o luego de realizar alguna selección, asignas valor a estas variables globales y podrás disponer de ellas; si ocurre un error no controlado, estos valores se pierden.

    Cordialmente, Carlos

    viernes, 4 de junio de 2010 10:46