Estas en:
gratiszona
>>
trucos
>>
trucos access
trucos access: Extraer los verdaderos datos de los valores que Access asigna a los resultados de los cuadros con botones de opciones
Cuando se crea un cuadro con botones de opciones, Access asigna un valor numerico a cada boton que se elija, de forma que en la tabla general se veran numeros en lugar de los datos reales. Para hacer que aparezcan los datos deseados, hay que crear una consulta nueva con todos los valores de la tabla general que incluya un campo adicional que sera un campo calculado. En el modo de diseño de la consulta y, una vez seleccionados los campos necesarios, hacer clic en la siguiente celda de campo vacio y hacer uso de una de estas 3 funciones: Silnm, Elegir y Conmutador con la siguiente sintaxis:
* Caso de la funcion Silnm:
Nombre: Silnm(Campo="1";"Valor 1";"Silnm(Campo="2";"Valor2";"Valor 3"))
donde Nombre es el nombre que se le da al campo calculado, Campo es el nombre del campo utilizado (siempre que sea de tipo texto) y los valores son los numeros que dan como resultado los botones de opciones.
Si el campo utilizado es de tipo numerico se utilizaria la misma expresion pero sin comillas en los numeros de valor, o sea:
Nombre: Silnm(Campo=1;"Valor 1";"Silnm(Campo=2;"Valor2";"Valor 3"))
Evidentemente, esta sintaxis es exclusiva para un cuadro con 3 botones de opciones. La sintaxis generica de la funcion Silnm es la siguiente:
Silnm( Expresion ; Parte verdadera; Parte Falsa)
Al confeccionar un informe, este se basaria en la consulta recien creada y no en la tabla original a fin de obtener los datos reales. Despues del parentesis y antes del primer punto y coma va la condicion a evaluar, luego el valor que se toma en caso de ser cierta y a continuacion el valor a tomar si es falsa. Tomemos como ejemplo:
Silnm(Matricula = 'TF';'Tenerife';'No es de Tenerife')
dara como resultado Tenerife si la variable Matricula tiene como valor TF y si el valor no es TF, se evaluara como No es de Tenerife.
Por lo tanto tambien esta clara esta otra instruccion:
Silnm(Matricula = 'GC';'Gran Canaria';'No es de Gran Canaria')
Ahora utilizamos un truco para evaluar mas de una condicion. Como la funcion Silnm devuelve un valor (sea este numerico o texto), se puede incluir un segundo Silnm dentro del apartado Falso del primer Silnm, quedando algo parecido a:
Silnm(Matricula="TF";"Tenerife";(Silnm(Matricula="GC";"Gran Canaria";"No es ni Tenerife ni Gran Canaria"))
Como es logico, si hay tres valores a evaluar, se debe sustituir "No es ni Tenerife ni Gran Canaria", por otro Silnm, que debe llevar su propia condicion, su valor verdadero y su valor falso separados por punto y coma.
En las versiones inglesas de Access no existe Silnm. Microsoft supone que hay dos clases de usuarios de Access: los que se atreven a programar modulos y los que no. Los primeros pueden utilizar la funcion Iif dentro del Visual Basic que se programa en los modulos, para los segundos han "traducido" la funcion pero internamente necesita la funcion original y cuando se ve la sentencia SQL generada para una consulta, se observa que lo convierte en Iif.
* Caso de la funcion Elegir:
La sintaxis de esta funcion para una consulta seria:
Valor=Elegir([Campo];"Valor 1";"Valor 2";"Valor 3")
Campo funciona como indice de la lista de valores que vienen a continuacion. Si Campo no tiene un valor numerico se produce un error, pero no es obligatorio que Campo este definido como numerico; puede ser perfectamente un texto, siempre que el valor sea adecuado. La sintaxis en este caso se entiende perfectamente: si Campo tuviera n valores, deberia existir una lista de n elementos. En la ayuda de Access 7.0 los valores van separados por comas, cuando en realidad deben ir separados por punto y coma.
* Caso de la funcion Conmutador:
La sintaxis es:
Valor=Conmutador([Campo]="1";"Valor 1";[Campo]="2";"Valor 2";[Campo]="3";"Valor 3")
En este caso se escribe una expresion y su valor, tambien separados por punto y coma. El valor hay que escribirlo segun el tipo de campo de Campo; aqui se ha supuesto de tipo texto y por eso en este caso hay puestas unas comillas; si Campo fuese numerico, no harian falta.
Esta funcion permite obtener valores que dependan de mas de un campo; por ejemplo:
Valor=Conmutador([Campo]="1";"Valor 1 de Campo";[Field]="27";"Valor 27 de Field";[Campo]="14";"Valor 14 de Campo")
Actualizado: 06/11/2008
Si has encontrado esta web de tu agrado, ¡ diselo a tus amigos ! Nos ayudas a cubrir gastos si con un simple SMS te bajas a tu movil un logo, un tono o una melodia polifonica desde:
www.gratiszona.com/moviles
www.conmovil.com
·
·