Access - Bucle que cambie la búsqueda de campo pero en el mismo registro

 
Vista:
sin imagen de perfil

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por andres (42 intervenciones) el 26/01/2023 16:04:18
Hola, a ver si pueden ayudar voy a tratar de explicar lo que necesito.


Tengo un bucle que según el campo cant_cuot me inserta x cant de registros en la T_cuota

Estas son las Variable (long) que necesito que vaya alternando según la cantidad de cuotas
Si es en 1 cuota devuelve este valor Fich_Valor_0 (ACÁ NO HAY PROBLEMA)
Si es en 2 cuota devuelve este valor Fich_Valor_1
Si es en 3 cuota devuelve este valor Fich_Valor_2


Como puedo hacer si la cant_cuot = 3
En la primer recorrida no hay problema Fich_Valor_0)
En la segunda recorrida que devuelva el valor del campo Fich_Valor_1
En la tercer recorrida devuelva el valor del campo Fich_Valor_2

Bueno desde ya muchas gracias!!!.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por Anonimo (3316 intervenciones) el 26/01/2023 16:51:15
Veo tres posibilidades:

Con Select Case:
1
2
3
4
5
6
7
Select Case T_cuota
 Case 1
    Cuota = Fich_Valor_0
 Case 2
    Cuota = Fich_Valor_1
 Case 3
    Cuota = Fich_Valor_2

Con la función Choose:
1
Cuota = Choose(T_cuota, Fich_Valor_0, Fich_Valor_1, Fich_Valor_0)

Con la función Switch:
1
Cuota = Switch(T_cuota = 1, Fich_Valor_0, T_cuota = 2, Fich_Valor_1, T_cuota = 3, Fich_Valor_2)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por andres (42 intervenciones) el 26/01/2023 17:49:37
Hola, gracias por tu pronta respuesta.

Ahora en que parte irí el códigos?



Fich_Valor_0 = DLookup("Config_valor", "T_0_Config", "Config_ano='" & V_Ano & "' AND Config_Descrip ='" & Me.Jug_Linea & "'")

Fich_Valor_1 = DLookup("Config_valor_1", "T_0_Config", "Config_ano='" & V_Ano & "' AND Config_Descrip ='" & Me.Jug_Linea & "'")

Fich_Valor_2 = DLookup("Config_valor_2", "T_0_Config", "Config_ano='" & V_Ano & "' AND Config_Descrip ='" & Me.Jug_Linea & "'")


Select Case T_cuota
Case 1
Cuota = Fich_Valor_0
Case 2
Cuota = Fich_Valor_1
Case 3
Cuota = Fich_Valor_2

Como sigo?


If Me.Jug_Linea = "SIN FICHAR" Then

Exit Sub

Else

For Bucle = 1 To Fich_Cant_Cuot

MyDate = CLng(DateAdd("m", Bucle - 1, mfecha))

mmes = Format(MyDate, "mmmm")


CurrentDb.Execute "Insert into T_cuota (Cuot_ano, Cuot_Cobrado, Cuot_Divis, Cuot_Apell, Cuot_Id_Juga, Cuot_dni, Cuot_import, Cuot_fecha_Venc, Cuot_import_Cuot, Cuot_Cuot_de, Cuot_mes, Cuot_Concept) Values (" & Year(MyDate) & ", '" & cobrado & "','" & Divi & "','" & jugador & "'," & Pag_Id & "," & Dni_jug & ", " & Fich_Valor_0 & "," & CDbl(DateAdd("m", Bucle - 1, mfecha)) & ", '" & Fich_Valor / Fich_Cant_Cuot & "', '" & " Cuota de " & Bucle & "-" & Fich_Cant_Cuot & "','" & mmes & "','" & concept & "')"



Next Bucle
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por Anonimo (3316 intervenciones) el 26/01/2023 20:37:43
Una anotación, en el Select Case se quedo en el tintero una línea al final (End Select) sin la cual dará error al compilar (mil disculpas).

No tengo claro que es lo que se ha de evaluar, creí que era el numero de iteraciones del bucle (en mi ejemplo 'cuota', en el código publicado 'Fich_Cant_Cuot').

En el bucle se usa la variable 'Fich_Valor_0' y no se menciona a 'Fich_Valor_1' o 'Fich_Valor_2', si aportas mas información me facilitaras el dar un consejo mas acertado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por andres (42 intervenciones) el 27/01/2023 00:19:54
Gracias de nuevo.

* Una anotación, en el Select Case se quedo en el tintero una línea al final (End Select) sin la cual dará error al compilar (mil disculpas).
Si me falto al copiar. Gracias

Lo que tengo que hacer es:

Fich_Cant_Cuot es una variable

Fich_Cant_Cuot = DLookup("Config_Cuota", "T_0_Config", "Config_ano='" & V_Ano & "' AND Config_Descrip ='" & Me.Jug_Linea & "'")

Si la Fich_Cant_Cuot es 2 entonces busque el valor Fich_Valor_0 y Fich_Valor_1
Si la Fich_Cant_Cuot es 3 entonces busque el valor Fich_Valor_0 y Fich_Valor_1 y Fich_Valor_2

el campo que debe variar en la instrucción....."CurrentDb.Execute "Insert into T_cuota ........... " & Fich_Valor & " Este es el campo que de acuerdo a la cantidad de cuotas me tuviese que devolver en la 1 recorrida el valor Fich_Valor_0
en la segunda recorrida (si fuera en 3 cuotas) que devuelva el valor Fich_Valor_1
en la tercera recorrida devuelva el valor de Fich_Valor_2

un ejemplo como tuviese que quedar
tengo la tabla T_0_Config que es donde se configura las cuotas y el valor de las cuotas

Tabla_config
Tabla_cuota

Espero me haya explicado mejor de que es lo que necesito.
Desde ya muchas gracias y si necesitas mas datos avisame.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por Anonimo (3316 intervenciones) el 27/01/2023 04:35:51
Veamos si he captado el entorno:

Partimos de un valor en la variable 'Fich_Cant_Cuot' que que se obtiene del campo 'config_cuota' de la tabla T_0_Config

Se utiliza ese dato para obtener en la variable 'Fich_Valor ' el contenido de uno de tres campos ('config_valor' / 'config_valor_1' / 'config_valor_2') de la tabla T_0_Config

Si lo anterior es correcto, lo ideal es Choose que nos devolverá el campo adecuado de la tabla, esto es:
.- Obtenemos el dato 'config_cuota'
.- Lo utilizamos para obtener mediante Choose el nombre del campo
.- Utilizamos el nombre para obtener el dato que se le asignara a 'Fich_Valor'

1
2
3
Fich_Cant_Cuot = DLookup("Config_Cuota", "T_0_Config", "Config_ano='" & V_Ano & "' AND Config_Descrip ='" & Me.Jug_Linea & "'")
 
Fich_Valor = DLookup(Choose(Fich_Cant_Cuot, "Config_valor", "Config_valor_1", "Config_valor_2), "T_0_Config", "Config_ano='" & V_Ano & "' AND Config_Descrip ='" & Me.Jug_Linea & "'")

Comenta si de momento vamos en la línea correcta.
Nota: en Choose he utilizado los nombres que aparecen en la tabla, si son otros (no visibles) utilízalos en su lugar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por andres (42 intervenciones) el 27/01/2023 12:48:43
Buen día, gracias nuevamente

Ese es el camino, estuve probando y:

Config_valor = 100
Config_valor_1 = 40
Config_valor_2 = 35

Si está configurado en 1 cuota trae el valor correcto "Config_valor = 100"

Ahora si configuro en 2 cuotas me repite el valor de "Config_valor_1 = 40"

Ahora si configuro en 3 cuotas me repite el valor de "Config_valor_2 = 35"

Si se configura en 3 cuotas tuviese que:

En la primer pasada devolver "Config_valor = 100"

En la segunda "Config_valor_1 = 40"

Y en la tercer pasada "Config_valor_2 = 35"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por Anonimo (3316 intervenciones) el 27/01/2023 13:40:48
No tengo claro el propósito a no ser que se introduzcan siempre tres registros (o el numero de registros que indique el campo 'Config_Cuota' de la tabla 'T_0_Config').

Si ese es el caso, en el bucle se deberá utilizar 'Config_Cuota' para generar el numero de registros y el propio bucle como referencia para obtener el 'Config_valor' correcto en cada paso del bucle.

Algo similar a:
Obtener Config_Cuota
Iniciar el bucle
Obtener Config_valor utilizando la variable 'Bucle' que en su primer paso bucle = uno, si hay un segundo paso bucle = dos y en el tercero bucle = 3.

Teorizando:

1
2
3
4
5
6
7
Fich_Cant_Cuot = DLookup("Config_Cuota", "T_0_Config", "Config_ano='" & V_Ano & "' AND Config_Descrip ='" & Me.Jug_Linea & "'")
For Bucle = 1 To Fich_Cant_Cuot
     Fich_Valor = DLookup(Choose(Bucle, "Config_valor", "Config_valor_1", "Config_valor_2), "T_0_Config", "Config_ano='" & V_Ano & "' AND Config_Descrip ='" & Me.Jug_Linea & "'")
     MyDate = CLng(DateAdd("m", Bucle - 1, mfecha))
     mmes = Format(MyDate, "mmmm")
     CurrentDb.Execute "Insert into T_cuota (Cuot_ano, Cuot_Cobrado, Cuot_Divis, Cuot_Apell, Cuot_Id_Juga, Cuot_dni, Cuot_import, Cuot_fecha_Venc, Cuot_import_Cuot, Cuot_Cuot_de, Cuot_mes, Cuot_Concept) Values (" & Year(MyDate) & ", '" & cobrado & "','" & Divi & "','" & jugador & "'," & Pag_Id & "," & Dni_jug & ", " & Fich_Valor & "," & CDbl(DateAdd("m", Bucle - 1, mfecha)) & ", '" & Fich_Valor / Fich_Cant_Cuot & "', '" & " Cuota de " & Bucle & "-" & Fich_Cant_Cuot & "','" & mmes & "','" & concept & "')"
     Next Bucle

No me queda claro si es adecuado utilizar Fich_Valor ya que será diferente en cada paso del bucle (y se utiliza también en un calculo:
Fich_Valor / Fich_Cant_Cuot

No tengo una visión concreta de lo que se pretende obtener y los cambios que exigiría si 'Fich_Cant_Cuot' se aumenta a cuatro o seis (por lo menos habrá que añadir campos a la tabla)...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por andres (42 intervenciones) el 27/01/2023 14:42:11
**** No tengo claro el propósito a no ser que se introduzcan siempre tres registros (o el numero de registros que indique el campo 'Config_Cuota' de la tabla 'T_0_Config')

Como la cant de cuota no son siempre 3 si como maximo es 3


***** No me queda claro si es adecuado utilizar Fich_Valor ya que será diferente en cada paso del bucle (y se utiliza también en un calculo:
Fich_Valor / Fich_Cant_Cuot

A esto Fich_Valor / Fich_Cant_Cuot lo saque quedó Fich_Cant_Cuot.


**** No tengo una visión concreta de lo que se pretende obtener

El tema es el siguiente, es una base de un club, aparte de la cuota mensual se paga el fichaje, este mismo es variable ej.: no es que sale 9 y se paga en 3 cuotas de 3.
Si sale 9 te cobran la primer cuota 5 la segunda 3 y la tercera 1 por eso necesito que de acuerdo a la canta de cuota varía el valor.

Lo que no te mencioné anteriormente es que depende el año lo podes pagar 1 cuota en 2 o en 3 , por eso necesito que de acuerdo a lo que digan tengo que tener preparado la base de acuerdo a la cantidad de cuotas.

Si es en 1 cuota le corresponde el valor "Config_valor = 9"


Si es en 2 cuota (cambia el valor de la primera y segunda cuota) la primera cuota "Config_valor = 6"
"Config_valor = 3"


Si es en 3 cuota (cambia el valor de la primera y segunda cuota) la primera cuota "Config_valor = 5"
"Config_valor = 8"
"Config_valor = 1"

Espero a verme explicado mejor.

Aguardo si me pudiste comprender el propósito de como tiene que funcionar.
Muchas gracias!! por tu tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por Anonimo (3316 intervenciones) el 27/01/2023 16:03:54
Creo que me falta bastante información (condiciones a respetar) lo que me impide ver la globalidad y planear un método.

En los ejemplos que propuse:
Se obtiene el dato 'Config_Cuota' y en base a el se creaba un bucle.

En el primer ejemplo se obtiene un dato (en base al campo 'Config_Cuota') y se utiliza para todos los ciclos del bucle
En el segundo ejemplo se obtiene el dato en cada paso del bucle en función del paso activo

Ninguno se ajusto a la necesidad

Tomando como referencia el registro publicado, los valores pueden ser: 100, 40, 35
El bucle puede generar de uno a tres registros ...

Porque no propones un ejemplo de dos partes:
.- los datos de partida
.- (creándolos a mano) los resultados finales que se deberían obtener

En función de ambos extremos y tras analizar los datos propondría un proceso para lograrlo, eso si: mantengamos como constante el registro publicado de la tabla 'T_0_Config' y en un intento de que los resultados cuadren, el único dato que puede variar es el campo 'Config_Cuota'.

Si en el proceso interviene alguna otra condición (años, categoría o similar) que interfiera al calculo habría que detallar su intromisión.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por andres (42 intervenciones) el 27/01/2023 16:27:49
Los probé pero al menos a mi no me funcionó, siempre me devuelve el mismo valor.
Te adjunto la base.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Bucle que cambie la búsqueda de campo pero en el mismo registro

Publicado por andres (42 intervenciones) el 27/01/2023 16:54:34
Listo excelente!!!! me funciona perfecto!!!
Genio! muchísimas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar