¿Es posible? Llamar a algoritmo principal desde subalgoritmo PSeInt

tengo un inconveniente y creería yo que es error de PSeInt, les comento lo que sucede…

He creado un algoritmo (algo extenso), prácticamente todo funciona ok, sin embargo encuentro un ligero fallo y es que al salir de un único condicionar (Validar si la base de datos está llena) en un único subproceso (ingresar()), PSeInt no se sale sino que después de la línea (FinSubProceso), continua dentro del mismo proceso y se devuelve 4 líneas arriba, quedando de ésta manera dentro de un ciclo “Repetir” donde indica la finalización de un proceso de registro. Cabe aclarar que al darle la opción correcta para salir a éste ciclo, entonces ahí si que sale del Subproceso y va al menú en el proceso principal.

Todos los demás subprocesos me funcionan correctamente incluso el mismo subproceso siempre y cuando no entra en la condicional que indica que la base de datos (Vector en este caso) está llena.

Si alguien puede revisarlo en su PSeInt y decirme si les pasa lo mismo y quizás si hay alguna manera de controlar este evento, se los agradezco muchísimo. Copiaré el código separado por subprocesos ya que es muy largo y el mismo depende de todos los subalgoritmos, es por ello que no copio tan solo la parte del error.

ALGORITMO PRINCIPAL

Algoritmo tiendaComercial
    Definir  opciones, cantRegistros Como Entero;
    
    Escribir "Defina cuantos registros que tendrá la base de datos.";
    Leer cantRegistros;
    
    Escribir "===== > Creando la base de datos. < =====";
    Escribir  "";
    Dimension documento(cantRegistros), nombres(cantRegistros), saldo(cantRegistros), activo(cantRegistros);    
    
    Repetir
        Limpiar Pantalla;
        Escribir "************* MENÚ PRINCIPAL *************";
        Escribir "===== > Seleccione una opción (Número). < =====";
        Escribir  "1. Consultar.";
        Escribir  "2. Ordenar de menor a mayor.";
        Escribir  "3. Eliminar.";
        Escribir  "4. Ingresar.";
        Escribir  "9. Terminar.";
        
        Leer opciones;
        
        Segun opciones
            1:
                consultar(documento, nombres, saldo, activo, cantRegistros);
            2:
                ordenar(documento, nombres, saldo, activo, cantRegistros);
            3:
                eliminar(documento, nombres, saldo, activo, cantRegistros);
            4:
                ingresar(documento, nombres, saldo, activo, cantRegistros);
            9:
                Escribir "Finalizando sesión...";               
            De Otro Modo:
                Limpiar Pantalla;
                Escribir "************* MENÚ PRINCIPAL *************";
                Escribir "Opción no válida!, ingrese una opción válida...";
                Esperar 2 Segundos;
        FinSegun        
    Hasta Que opciones = 9  
FinAlgoritmo

SUBALGORITMO PARA CONSULTA DE REGISTROS

//Creando Subproceso para consultar registros
SubProceso consultar (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor)
    Definir option, registro Como Entero;   
    Definir respuesta Como Logico;
    Limpiar Pantalla;   
    
    Escribir "===== CONSULTANDO UN REGISTRO =====";
    Escribir "Seleccione 1. Consultar por documento.";
    Escribir "Seleccione 2. Listar todos los registros.";   
    Escribir "Seleccione 3. Salir.";    
    Leer option;
    Escribir "";
    
    Repetir     
        Segun option
            1:
                Escribir "Ingrese el documento a consultar";
                Leer registro;
                
                //Buscamos en los registros el documento ingresado
                Para i = 0 Hasta cantRegistros-1 Con Paso 1 Hacer
                    si registro = documento(i) Entonces
                        respuesta = Verdadero;              
                    FinSi
                FinPara
                
                // Verificamos si la búsqueda arrojó algun resultado
                si respuesta = Verdadero Entonces                   
                    // Si lo encontró mostramos la información del registro
                    Para i = 0 Hasta cantRegistros-1 Con Paso 1 Hacer
                        si registro = documento(i) Entonces
                            Limpiar Pantalla;
                            Escribir "";
                            Escribir "===== CONSULTANDO UN REGISTRO =====";
                            Escribir "Documento: ", documento(i);
                            Escribir "Nombres: ", nombres(i);
                            Escribir "Saldo: $", saldo(i);
                            
                            si activo(i) = "1" Entonces
                                Escribir "Activo: SI";
                            SiNo
                                Escribir "Activo: NO";
                            FinSi                           
                            Escribir "";
                            Escribir "Presione ENTER para regresar al menú principal";
                            Esperar Tecla;
                        FinSi
                    FinPara
                SiNo
                    Repetir
                        // Si el registro no existe, informamos que no se encontró
                        Limpiar Pantalla;                   
                        Escribir "===== CONSULTANDO UN REGISTRO =====";
                        Escribir "Ooops!! Registro no encontrado ¿Desea registrarlo?";
                        Escribir "1. Si";
                        Escribir "2. No";               
                        Leer option;
                        
                        Segun option
                            1:
                                ingresar(documento, nombres, saldo, activo, cantRegistros);                 
                            2:                              
                                Limpiar Pantalla;
                                Escribir "===== CONSULTANDO UN REGISTRO =====";
                                Escribir "Saliendo del proceso de consulta...";
                                Esperar 2 Segundos;
                            De Otro Modo:
                                Escribir "Opción incorrecta! elige una opción válida...";
                                Esperar 2 Segundos;
                        FinSegun
                    Hasta Que option = 2
                FinSi
                option = 3;
            2:
                // Verificamos posiciones llenas en el vector   
                cantReg = disponibilidad (documento, cantRegistros);
                
                si cantReg > 0 Entonces
                    Limpiar Pantalla;
                    Escribir "===== LISTANDO TODOS REGISTROS =====";
                    // Listamos todos los registros de la base datos
                    listar(documento, nombres, saldo, activo, cantReg);
                    Escribir "";
                    Escribir "Presione ENTER para continuar...";
                    Esperar Tecla;
                    option = 3;
                SiNo
                    Limpiar Pantalla;
                    Escribir "===== LISTANDO TODOS REGISTROS =====";
                    Escribir "La base de datos está vacía!";
                    Escribir "";
                    Esperar 2 Segundos;
                    option = 3;
                FinSi               
            3:
                Escribir "Regresando al menú principal...";
                Escribir "";
                Esperar 2 Segundos;
            De Otro Modo:
                Limpiar Pantalla;
                Escribir "===== LISTANDO TODOS REGISTROS =====";
                Escribir "Opción incorrecta!, elige una opción válida...";
                Escribir "";
                Esperar 2 Segundos;
                consultar(documento, nombres, saldo, activo, cantRegistros);
        FinSegun        
    Hasta Que option = 3
FinSubProceso

SUBALGORITMO PARA INGRESAR REGISTROS

//Creando Subproceso para ingresar registros
SubProceso ingresar (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor)
    Definir option, indice, cantReg, nDocumento Como Entero;
    Definir detener, dupliDocumento, dupliNombre, continuar Como Logico;
    Definir nNombre Como Caracter;  
    
    continuar = Falso;
    
    // Verificamos posiciones llenas en el vector   
    cantReg = disponibilidad (documento, cantRegistros);
    
    si cantReg > 0 Entonces
        indice = (cantReg + 1)-1;
    SiNo
        indice = 0;
    FinSi       
    
    si cantReg = cantRegistros Entonces
        Repetir
            Limpiar Pantalla;
            Escribir "===== CREANDO NUEVO REGISTRO =====";
            Escribir "No hay espacios libres en la base de datos...";
            Escribir "=== > ¿Desea eliminar un registro?..  ";
            Escribir "1. Si";
            Escribir "2. No";
            Leer option;
            
            segun option
                1:
                    eliminar(documento, nombres, saldo, activo, cantRegistros);
                2:
                    Escribir "Regresando al menú principal...";
                    Esperar 2 Segundos;
                De Otro Modo:
                    Escribir "Opción no válida!, elige una opción válida...";
                    Esperar 2 Segundos;
            FinSegun
        Hasta Que option = 2;
    FinSi
    
    Si cantReg < cantRegistros Entonces
        Repetir
            Limpiar Pantalla;
            Escribir "===== CREANDO NUEVO REGISTRO =====";
            Repetir
                Escribir "Escriba documento a registrar...";
                Leer nDocumento;                
                dupliDocumento = validador(documento, nombres, cantRegistros, nDocumento, 1);
                
                si dupliDocumento = Verdadero Entonces
                    Escribir "Este documento ya existe!...";
                    Escribir "";
                    continuar = Falso;
                SiNo
                    Repetir
                        Escribir "Escriba el nombre del cliente...";
                        Leer nNombre;
                        dupliNombre = validador(documento, nombres, cantRegistros, nNombre, 2);
                        
                        Si dupliNombre = Verdadero Entonces
                            Escribir "";
                            Escribir "Nombre ya existe con documento diferente, ¿desea registrarlo?.";
                            Escribir "Escriba 1. Si quiero registrarlo";
                            Escribir "Escriba 2. No quiero elegir otro nombre";
                            Leer option;
                            
                            segun option
                                1:
                                    continuar = Verdadero;
                                De Otro Modo:
                                    continuar = Falso;                              
                            FinSegun
                        SiNo
                            continuar = Verdadero;
                        FinSi                       
                    Hasta Que continuar = Verdadero;
                FinSi               
            Hasta Que continuar = Verdadero;
            documento(indice) = nDocumento;
            nombres(indice) = nNombre;
            
            Escribir "Escriba el saldo del cliente...";
            Leer saldo(indice);
            Repetir
                Escribir "¿Cliente activo? 1= SI 2= NO...";
                Leer activo(indice);
            Hasta Que activo(indice) = "2" o activo(indice) = "1"
            
            ordenados(documento, nombres, saldo, activo, cantRegistros, 1);
            Repetir
                Limpiar Pantalla;
                Escribir "===== REGISTRO EXITOSO =====";
                Escribir "¿Desea agregar otro registro?.. 1 = SI, 2 = NO";
                Leer option;
                
                Segun option
                    1:
                        ingresar(documento, nombres, saldo, activo, cantRegistros);                                 
                    2:
                        detener = Verdadero;
                        Escribir "Regresando al menú principal...";
                        Esperar 2 Segundos;
                    De Otro Modo:                   
                        Escribir "Opción incorrecta!, regresando al menú principal...";
                        Esperar 2 Segundos; 
                FinSegun
            Hasta Que option =2;
        Hasta Que detener = Verdadero;
    FinSi
FinSubProceso

SUBALGORITMO PARA ELIMINAR REGISTROS

//Creando Subproceso para eliminar registros
SubProceso eliminar (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor)
    Definir option, auxiliar, totalRegistros, cantReg Como Entero;
    
    // Verificamos posiciones llenas en el vector   
    cantReg = disponibilidad (documento, cantRegistros);    
    
    Escribir "===== ELIMINAR UN REGISTRO =====";
    Escribir "Actualmente estos son los registros de la base de datos, ¿Cual desea eliminar?...";   
    listar(documento, nombres, saldo, activo, cantReg); 
    Leer option;
    
    si option-1 >= cantReg Entonces
        Limpiar Pantalla;
        Escribir "===== ELIMINAR UN REGISTRO =====";
        Escribir "El registro a eliminar no existe!.. Regresando";
        Esperar 2 Segundos;
    SiNo
        auxiliar = option;
        
        Mientras auxiliar <= cantReg-1 Hacer
            // Eliminando el registro
            documento(option-1) = documento(auxiliar);
            nombres(option-1) = nombres(auxiliar);
            saldo(option-1) = saldo(auxiliar);
            activo(option-1) = activo(auxiliar);
            
            auxiliar = auxiliar+1;
        Fin Mientras
        
        documento(auxiliar-1) = 0;
        nombres(auxiliar-1) = "";
        saldo(auxiliar-1) = 0;
        activo(auxiliar-1) = "";        
        
        // Reordenamos la lista de la base de datos
        ordenados(documento, nombres, saldo, activo, cantRegistros, 1);
        // Verificamos posiciones llenas en el vector   
        cantReg = disponibilidad (documento, cantRegistros);    
        
        Limpiar Pantalla;
        // Mostramos los registros restantes
        Escribir "===== Registro eliminado con éxito. =====";   
        Si cantReg > 0 Entonces
            listar(documento, nombres, saldo, activo, cantReg);
            Escribir "";
            Escribir "Presione ENTER para salir";
            Esperar Tecla;
        SiNo
            Escribir "¡URRAAA!.. La base de datos ahora está vacía!";
            Escribir "";
            Escribir "Presione ENTER para regresar al menú Principal";
            Esperar Tecla;
        FinSi
    FinSi   
FinSubProceso

SUBALGORITMO PARA ESTABLECER UN ORDEN EN LOS REGISTROS

//Creando Subproceso para ordenar los registros
SubProceso ordenar (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor)
    Definir orden, cantReg Como Entero;
    
    // Verificamos posiciones llenas en el vector   
    cantReg = disponibilidad (documento, cantRegistros);
    
    Si cantReg > 1 Entonces
        Repetir
            Limpiar Pantalla;
            Escribir "===== Orden actual de la base de datos =====";
            listar(documento, nombres, saldo, activo, cantReg);
            
            Escribir "";
            Escribir "Seleccione 1. Para ordenar de MENOR a MAYOR por Documento";
            Escribir "Seleccione 2. Para ordenar de MAYOR a MENOR por Documento";
            Leer orden;
            
            Si orden < 1 o orden > 2 Entonces
                Escribir "";
                Escribir "Opción incorrecta!, elige una opción válida...";
                Esperar 2 Segundos;
            FinSi
        Hasta Que orden <= 2
        
        ordenados(documento, nombres, saldo, activo, cantRegistros, orden);
        
        Escribir "";
        Escribir "===== Base de datos Ordenada  =====";
        listar(documento, nombres, saldo, activo, cantReg);
        Escribir "";
        Escribir "Presione ENTER para volver al menú principal...";
        Esperar Tecla;
    SiNo
        Si cantReg = 1 Entonces
            Limpiar Pantalla;
            Escribir "===== ORDENAR BASE DE DATOS =====";
            listar(documento, nombres, saldo, activo, cantReg);
            Escribir "";
            Escribir "No hay suficientes registros para ordenar.";
            Escribir "Presione ENTER para regresar al menú princial...";
            Esperar Tecla;
        SiNo
            Limpiar Pantalla;
            Escribir "===== ORDENAR BASE DE DATOS =====";
            Escribir "Esta base de datos no tiene registros para ordenar...";
            Esperar 2 Segundos;
        FinSi
    FinSi   
FinSubProceso

SUBALGORITMO PARA ORDENAR REGISTROS SEGUN ORDEN ENVIADO

// Estableciendo orden general
SubProceso ordenados (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor, nOrden Por Valor)
    Definir cantReg Como Entero;
    
    Segun nOrden        
        1:          
            // Ordeno de Mayor a menor segun la cantidad total de cupos
            Para i=0 Hasta cantRegistros-1 Con Paso 1 Hacer
                Para j=i+1 Hasta cantRegistros-1 Con Paso 1 Hacer
                    si documento(i) < documento(j) Entonces
                        //Ordenando los documentos
                        tmpDocumento = documento(i);
                        documento(i) = documento(j);
                        documento(j) = tmpDocumento;
                        
                        //Ordenando los nombres
                        tmpNombre = nombres(i);
                        nombres(i) = nombres(j);
                        nombres(j) = tmpNombre;
                        
                        //Ordenando los saldos
                        tmpSaldo = saldo(i);
                        saldo(i) = saldo(j);
                        saldo(j) = tmpSaldo;
                        
                        //Ordenando los activos
                        tmpActivo = activo(i);
                        activo(i) = activo(j);
                        activo(j) = tmpActivo;                          
                    FinSi
                FinPara
            FinPara
            
            // Verifico cuantos cupos hay llenos 
            cantReg = disponibilidad (documento, cantRegistros);
            
            // Ordeno de Menor a Mayor unicamente los cupos que contienen datos en el vector
            Para i=0 Hasta cantReg-1 Con Paso 1 Hacer
                Para j=i+1 Hasta cantReg-1 Con Paso 1 Hacer
                    si documento(i) > documento(j) Entonces
                        //Ordenando los documentos
                        tmpDocumento = documento(i);
                        documento(i) = documento(j);
                        documento(j) = tmpDocumento;
                        
                        //Ordenando los nombres
                        tmpNombre = nombres(i);
                        nombres(i) = nombres(j);
                        nombres(j) = tmpNombre;
                        
                        //Ordenando los saldos
                        tmpSaldo = saldo(i);
                        saldo(i) = saldo(j);
                        saldo(j) = tmpSaldo;
                        
                        //Ordenando los activos
                        tmpActivo = activo(i);
                        activo(i) = activo(j);
                        activo(j) = tmpActivo;                          
                    FinSi
                FinPara
            FinPara
        2:
            // Ordeno de Mayor a menor segun la cantidad total de cupos
            Para i=0 Hasta cantRegistros-1 Con Paso 1 Hacer
                Para j=i+1 Hasta cantRegistros-1 Con Paso 1 Hacer
                    si documento(i) < documento(j) Entonces
                        //Ordenando los documentos
                        tmpDocumento = documento(i);
                        documento(i) = documento(j);
                        documento(j) = tmpDocumento;
                        
                        //Ordenando los nombres
                        tmpNombre = nombres(i);
                        nombres(i) = nombres(j);
                        nombres(j) = tmpNombre;
                        
                        //Ordenando los saldos
                        tmpSaldo = saldo(i);
                        saldo(i) = saldo(j);
                        saldo(j) = tmpSaldo;
                        
                        //Ordenando los activos
                        tmpActivo = activo(i);
                        activo(i) = activo(j);
                        activo(j) = tmpActivo;                          
                    FinSi
                FinPara
            FinPara     
    FinSegun    
FinSubProceso

SUBALGORITMO PARA CONTAR REGISTROS EN EL VECTOR

// Creamos función para contar las posiciones llenas en el vector
Funcion totalRegistros <- disponibilidad (documento Por Referencia, cantRegistros Por Valor)
    // Verificamos posiciones llenas en el vector
    Para i=0 hasta cantRegistros-1 Con Paso 1 Hacer
        si documento(i) <> 0 Entonces
            totalRegistros = totalRegistros+1;
        FinSi
    FinPara 
FinFuncion

SUBALGORITMO PARA LISTAR LOS REGISTROS DE LOS VECTORES

// Proceso para listar todos los registros de la base de datos
SubProceso listar (documento Por Referencia, nombres Por Referencia, saldo Por Referencia, activo Por Referencia, cantRegistros Por Valor)
    
    Para  i=0 Hasta cantRegistros-1 Con Paso 1 Hacer        
        si activo(i) = "1" Entonces         
            Escribir i+1,". Documento: ", documento(i), ", Nombre: ", nombres(i), ", Saldo: ", saldo(i), ", ¿Activo?: SI";
        SiNo            
            Escribir i+1,". Documento: ", documento(i), ", Nombre: ", nombres(i), ", Saldo: ", saldo(i), ", ¿Activo?: NO";
        FinSi
    FinPara
FinSubProceso

SUBALGORITMO PARA VALIDAR REGISTROS DUPLICADOS

Funcion duplicado <- validador (documento Por Referencia, nombres Por Referencia, cantRegistros Por Valor, regValidar Por Valor, vectorValidar Por Valor)
    
    Segun vectorValidar
        1:
            Para  i=0 Hasta cantRegistros-1 Con Paso 1 Hacer
                si regValidar = documento(i) Entonces
                    duplicado = Verdadero;
                FinSi
            FinPara
        2:
            Para  i=0 Hasta cantRegistros-1 Con Paso 1 Hacer
                si regValidar = nombres(i) Entonces
                    duplicado = Verdadero;
                FinSi
            FinPara
    FinSegun        
FinFuncion

Desde ya, gracias por tomarte el tiempo de revisarlo y decirme si te sucede el mismo fallo que me presenta.

RECUERDA: El fallo es cuando intentas hacer un nuevo registro estando los vectores llenos, puedes establecer un tamaño de vector de 1 elementos, registrarlo e intentar registrar de nuevo otro, te dirá que la base de datos está llena y te pregunta si quieres eliminar 1 registro, al indicar la opción 2, justo ahí es cuando no se sale del subproceso y se devuelve a la línea que indico al inicio de la pregunta.

Adjunto algunas capturas que describen la falla.

1.Muestra cuando llega al final del Subproceso
Muestra cuando llega al final del Subproceso

2.Muestra la línea a la que salta sin salir del subproceso
Muestra la línea a la que salta sin salir del subproceso

3.Muestra el ciclo en el que queda luego de fallar la salida del subproceso
Muestra el ciclo en el que queda luego de fallar la salida del subproceso

vue.js – Llamar una accion mapeada desde un hook de ciclo de vida

Estoy dando mis primeros pasos con VUE y VUEX.
Tengo un select que muestra opciones a partir de un JSON que obtengo y almaceno en la store.

// Store

import Vue from 'vue';
import Vuex from 'vuex';
import axios from 'axios'

Vue.use(Vuex)

export default new Vuex.Store({

  state: {
    tiposPropiedad :()
  },
  mutations: {
    setTiposPropiedad(state, data) {
      state.tiposPropiedad = data;
    }
  },
  actions: {
    fetchTiposPropiedad({ commit }) {
      let url = "www.miurl.com/datos.json"
      axios
        .get(url)
        .then(({ data }) => {
          commit('setTiposPropiedad', data);
      
        })
    }
  }
})

// Componente que se carga con los datos de la store

<template>
  <div>
    <button v-on:click="fetchTiposPropiedad">Cargar Props</button>
    <vSelect
      placeholder="¿Qué tipo de propiedad buscas"
      multiple
      label="nombre"
      :options="tiposPropiedad"
    >
    </vSelect>
  </div>
</template>

<script>
import vSelect from "vue-select";
import { mapState, mapActions } from "vuex";
import "vue-select/dist/vue-select.css";

export default {
  name: "Buscador",
  data() {
    return {
      localidades: ()
    };
  },
  computed: {
    ...mapState(("tiposPropiedad")),
  },
  methods: {
    ...mapActions(("fetchTiposPropiedad")),
  },
  components: {
    vSelect,
  },
};
</script>

<style scoped>
</style>

Este código funciona como lo espero, al apretar el boton “Cargar Props” efectivamente se llena el select con las opciones que necesito. Yo quisiera hacer uso del hook de ciclo de vida created() para no tener que apretar un botón, sino que las opciones se carguen cuando el componente sea creado (o montado, creo que es lo mismo).

Si hago

created(){
   fetchTiposPropiedad
}

me dice que la funcion “fetchTiposPropiedad” no existe. Cómo seria la forma correcta de ejecutar una acción mapeada desde un hook de ciclo de vida?

Problema al llamar un procedimiento mysql

Hice el siguiente procedimiento almacenado en mysql el cual no me da error pero en el momento de hacer el llamado del procedimiento no me muestra los datos.

DELIMITER $$
create procedure procedimiento_1 (_FECHA int(20))
begin

select mascota.Nombre_Paciente Mascota, Nombre_Cliente cliente, Primer_Apellido Apellido,      Segundo_Apellido Apellido, Correo_Electronico Email, 
citas.Fecha Fecha, citas.HoraInicio Hora
from mascota
inner join cliente on mascota.IdCliente = cliente.IdCliente
inner join citas on mascota.IdMascota = citas.IdMascota
where _Fecha > '2020-09-02';

END $$
DELIMITER ; 

¿donde ubicar un excel y como llamar al mismo desde android studio?

Tengo una consulta y es la siguiente:

Deseo leer un Excel y editar celdas para agregar valores usando Apache POI. Pero no sé en que carpeta de mi aplicacion android se debe poner esos tipos de archivos. Y como obtener la ruta de ese archivo usando apache POI.

Agradecería me puedan ayudar ya que soy nuevo en ello. Pero más que todo en que carpeta de mi proyecto debo agregar el archivo excel y como seria para llamarlo ya que para leer el archivo excel usando apache poi ya he encontrado información suficiente.

Solo deseo saber en que carpeta debo ubicar el archivo y como obtener esa ruta.

Aqui le muestro las carpetas de mi proyecto

introducir la descripción de la imagen aquí

Como puedo llamar datos de una tabla de SQL Workbench a vizual studio

Como puedo llamar datos de una tabla de SQL Workbench a vizual studio(trabajo para un login) ,trabajando con web forms. Ya e intentado hacer con varios codigos y no e podido.

c# – Error al llamar método Asíncrono desde servicio WCF

Hola cree un Web Service con la plantilla que te da por defecto VS y al incluir el WS en una aplicación me crea los métodos asíncronos por defecto pero al momento de quererlos llamar me manda error.

Este es el metodo en el WS

(OperationContract)
 string GetData(int value);
    
     
    
public string GetData(int value){
    return string.Format("You entered: {0}", value);
}

Y para llamarlo utilizo

ServiceReference2.Service1Client c = new ServiceReference2.Service1Client();
var t = await c.GetDataAsync(1);

Y me sale este error

introducir la descripción de la imagen aquí

No se que estoy haciendo mal?

powerbi – Como llamar al utlimo registro de una tabla en Power BI

Tengo dos tablas, mi tabla principal Tabla1 donde esta la lista de paises y mi Tabla2 donde esta las fecha de viaje. lo que quiero es traer a mi tabla1 la ultima fecha de viaje de dicho pais.

Tabla 1

introducir la descripción de la imagen aquí

Tabla 2

introducir la descripción de la imagen aquí

la formula que estoy poniendo es el LOOKUPVALUE

 fecha ultimo=LOOKUPVALUE('Tabla2'(fecha viaje),'Tabla2'(pais),'Tabla1'(pais))

pero me sale el error que hay duplicidad de registros. como haria para tomar el ultimo registro de dicho pais. osea el de la fecha mayor?

llamar una función dentro de condicional paython

estoy tratando de realizar este codigo pero no me funciona, no se si es que no se puede o si lo estoy haciendo mal.
defino una funcion, luego le pido al usuario oprimir una tecla y por medio de un if reviso que se halla oprimido la tecla para visualizar resultado pero no me funciona.

def suma():
res = 5 + 3

print("oprimir una tecla")

tecla = input()

int (tecla)

if tecla == 1:
suma()

puedo llamar una variable en los parámetros de os.mkdir?

En este simple código para crear un nuevo directorio no logro nombrar dicho directorio con el contenido de la variable que contiene la fecha actual.

import os
import datetime

hoy = datetime.datetime.now()
hoy1 = (hoy.strftime('%d_%m_%Y'))

os.mkdir('/Users/###/Desktop/###/###/(hoy1)')

¿No está correcta esta manera de llamar a una función Javascript?

Tengo una función que tiene dos opciones, para ocultar y mostrar contenido html. El problema se presenta al momento de llamar la función, si lo hago así funciona:

<button type="button" class="btn btn-primary" onclick="show(2);">Ejecutar Función</button>

<script type="text/javascript">
    function show(id) {
        if (id == 1) {
            $("#required").show();
            $("#no-required").hide();
        }

        if (id == 2) {
            $("#required").hide();
            $("#no-required").show();
        }
    }
</script>

Pero de esta manera que la necesito, no. Debe ejecutarse la función al cargar la página.

<script> 
    $(document).ready(function(){
        show(2)
    });
</script>

<script type="text/javascript">
    function show(id) {
        if (id == 1) {
            $("#required").show();
            $("#no-required").hide();
        }

        if (id == 2) {
            $("#required").hide();
            $("#no-required").show();
        }
    }
</script>