Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

¿Como convierto una imagen desde un QLabel en un String (u otro tipo de datos) Valido para MYSQL?



  • **Situacion: **

    Tengo una aplacion donde ingreso imagenes a una base de datos en MYSQL. Todo bien hasta aqui. A las imagenes las muestro a partir de un QLabel. El problema comienza cuando quiero modificar la imagen pues no se como convertir la Imagen que esta mostrandose en el QLabel en alguna variable validad para el remplazo en el binding.

    if(reg_nuevo==1)
    {

        if(ui->l_tramite->text().trimmed()==0)
        {
            cartelito.setText("Debe escribir una referencia para guardar la informacion");
            cartelito.exec();
            ui->l_tramite->setFocus();
        }
        else
        {
            referencia=ui->l_tramite->text().trimmed();
    
            if(ui->l_observacion->text().trimmed().length()==0)
            {observacion="No registro";}
            else
            {
                observacion=ui->l_observacion->text().trimmed();
            }
    
            QFile file(fotito);
            file.open(QIODevice::ReadOnly);
            QByteArray bytes = file.readAll();
            QSqlQuery query2;
    
            query2.prepare("INSERT INTO documentacion (id,id_detalle,tramite, detalle,estado,foto,fecha) VALUES (NULL,:id_detalle,:tramite,:detalle,:estado,:foto,now())");
            query2.bindValue(":tramite",referencia );
            query2.bindValue(":estado",ui->c_estado->currentText().trimmed());
            query2.bindValue(":id_detalle",id_personal);
            query2.bindValue(":detalle",observacion);
            query2.bindValue(":foto",QVariant(bytes));
    
            query2.exec();
    
            cartelito.setText("El proceso ha terminado");
            cartelito.exec();
            cargando_valores_iniciales();
        }
    
    }
    else
    {
    
        /// modificaciones con el Binding
        ///
        ///
        if(ui->l_tramite->text().trimmed()==0)
        {
        
            ui->l_tramite->setFocus();
        }
        else
        {
            referencia=ui->l_tramite->text().trimmed();
            if(ui->l_observacion->text().trimmed().length()==0)
            {observacion="No registro";}
            else
            {
                observacion=ui->l_observacion->text().trimmed();
            }
    
            estado=ui->c_estado->currentText().trimmed();
          ConsultaMysql="update documentacion set estado='"+estado+"',tramite='"+referencia+"',detalle='"+observacion+"' where id='"+indice+"'";
    
          QSqlQuery modificando_datos(ConsultaMysql);
    
    
          indice_maestro_foto=ui->label_5->text().toWCharArray();
          QSqlQuery actualizando_imagen;
          actualizando_imagen.prepare("update documentacion set foto:=imagen where id:=id_seleccionado");
          actualizando_imagen.bindValue(":foto",indice_maestro_foto);
          actualizando_imagen.bindValue(":id",indice );
          actualizando_imagen.exec();
       // actualizando los datos pero no aun el ingreso de la foto
    
     
        }
    

    Descripcion:

    En mi caso el ingreso y la modificacion la hago a partir de una bandera, de acuerdo al valor de la bandera sucede tal o cual cosa. En el caso 2 se vera que uso un update comun y mas abajo intento el binding. Eso es asi pues estoy probando y necesitaba implementar cuando minimo una mondificacion basica en el proyecto de forma funcional. Es la parte de la imagen lo que no logro resolver.


  • Moderators

    Hola

    No estoy muy seguro de cómo resolver tu caso. Yo voy a darte otra alternativa. En el soft que estoy desarrollando yo también uso imágenes que tengo que guardar y mostrar, pero en mi caso no las voy a guardar en la base de datos, si no en una carpeta. En la base de datos guardaré el nombre de la imagen que corresponda a ese registro, un string.

    Y digo guardaré, por que aun no tengo desarrollada esa parte, pero es lo que pretendo hacer.

    Un saludo



  • Hola,

    ¿Que devuelve "actualizando_imagen.exec();"?
    Utiliza "QSqlError qError =actualizando_imagen.lastError()".

    ¿Esta linea está bien?
    actualizando_imagen.prepare("update documentacion set foto:=imagen where id:=id_seleccionado");

    ¿No deberia ser?
    actualizando_imagen.prepare("update documentacion set foto=imagen where id=id_seleccionado");

    Saludos,


Log in to reply