Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. Consulta a base de datos mediante un formulario.
QtWS25 Last Chance

Consulta a base de datos mediante un formulario.

Scheduled Pinned Locked Moved Unsolved Spanish
4 Posts 4 Posters 1.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    deleted396
    wrote on last edited by
    #1

    ¡Buenas tardes! Estoy intentando terminar mi proyecto fin de grado lo más pronto posible y me ha surgido una cosa.

    He creado un registro de usuario, que controla que se introduzca el DNI de usuario y la contraseña obligatoriamente, lo demás son datos opcionales que todo tengo controlado con clausulas if. El caso es que quería controlar la posibilidad de que se intentara introducir un usuario que ya está en la base de datos, para tener un control de errores sobre este también. Aquí la solución que le he dado:

    //Compruebo que se han introducido esos valores.
    if(name == 1 && surname == 1 && documento == 1 && contra == 1){
    
             //Obtenemos todo los usuarios de la tabla administrador
             queryConsult.exec("SELECT dni_administrador from administrador");
    
             //Mientras exista el siguiente administrador
             do{
                compruebaDNI = queryConsult.value(0).toString();
    
                if ( compruebaDNI == dni){
                    exist = 1;
                }
             }while(queryConsult.next());
    
    
             //Si existe, exec nos devolverá true.
            if(exist){
    
                QMessageBox::warning(this,"Error de usuario",
                                     tr("El usuario ya existe en la base de datos.\n"));
    
            }else{
    
             queryInsert.prepare("INSERT INTO administrador(dni_administrador,password,nombre_admin,apellidos_admin)"
                            "VALUES (:dni_administrador, :password, :nombre_admin, :apellidos_admin)");
            queryInsert.bindValue(":dni_administrador", dni);
            queryInsert.bindValue(":password", pass);
            queryInsert.bindValue(":nombre_admin", nombre);
            queryInsert.bindValue(":apellidos_admin", apellidos);
            queryInsert.exec();
    
            }
    

    Para que quede más claro, hago una consulta en la que obtengo todos los DNIS, y luego la recorro comprobando que el DNI introducido sea el mismo que alguno de la base de datos. En el caso de que lo encuentre, a la variable exists le doy un 1. Más tarde, si la variable exists tiene un 1, intento lanzar un mensaje de error, y si no que haga el insert a la base de datos. El problema es que introduzco un usuario que ya existe y no me salta el error, alguno puede ver el problema?

    1 Reply Last reply
    0
    • L Offline
      L Offline
      Ladis
      wrote on last edited by Ladis
      #2

      Buenas noches.
      Me surgen varias dudas de si funcionarian algunas cosas pero el fallo que me parece ver es que comparas "compruebaDNI" con "dni" y no veo que "dni" tenga ningún valor.
      Esprero que sea eso.
      Un saludo.

      1 Reply Last reply
      0
      • juankiJ Offline
        juankiJ Offline
        juanki
        Moderators
        wrote on last edited by
        #3

        Hola

        ¿Y por que no usas la cláusula where de la base de datos?

        consulta.exec("select count(*) from administrador where dni_administrador = DNI_A_COMPROBAR");
        if(consulta.first()) {
            // si hay resultado es que ya existe
        } else {
          // No existe, crearlo
        }
        

        Si el motor de base de datos lo soporta, también puedes usar consulta.size(); para comprobar las filas que te devuelve la consulta, si es cero, no existe ese DNI.

        Un saludo

        Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
        Procura escribir correctamente y sin faltas de ortografía.

        Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

        1 Reply Last reply
        1
        • mchoccacM Offline
          mchoccacM Offline
          mchoccac
          wrote on last edited by
          #4

          podrias crear un procedimiento almacenado, que en caso que ya existe puede enviar un mensaje, y con consulta.lasterro().tostring() pueden indicarle un mensaje al usuario que ya existe el id.

          1 Reply Last reply
          0

          • Login

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved