Manejo de parametros con QTRpt
Solved
Spanish
-
Necesito saber de que manera especifico por codigo en el boton de impresion usando QtRpt, que estoy cambiando el Data-Group-Header para definir el nuevo grupo de datos del Master-Band, el codigo estandar que tengo es :
QtRPT *reporte= new QtRPT(this); reporte->loadReport(":/impresiones/cajadiaria_consultas.xml"); reporte->recordCount.append(ui->t_caja->rowCount()); connect(reporte,&QtRPT::setValue,[&](const int recNo,const QString paramName,QVariant ¶mValue,const int reportPage) { (void) reportPage; // datos del encabezado de la Caja if(paramName=="persona") //nombre del usuario que esta trabajando {paramValue=Nombre_de_persona;} if(paramName=="sucursal") {paramValue=ui->c_sucursales->currentText();} /// Datos de la caja //Factura;Sucursal;Tipo;Afiliado;Documento;Monto;Fecha;Habilitada; // modificar para una matriz multidimensional que debe contener todas las cajas if(paramName=="numero_orden") {paramValue=ui->t_caja->item(recNo,0)->text();} if(paramName=="documento") {paramValue=ui->t_caja->item(recNo,4)->text();} if(paramName=="nombre") {paramValue=ui->t_caja->item(recNo,3)->text();} if(paramName=="fecha_orden") {paramValue=ui->t_caja->item(recNo,6)->text();} if(paramName=="codigo_tipo") {paramValue=ui->t_caja->item(recNo,2)->text();} if(paramName=="importe") {paramValue=ui->t_caja->item(recNo,5)->text();} if(paramName=="anulado") {paramValue=ui->t_caja->item(recNo,7)->text();} if(paramName=="ccpago") {paramValue=ui->t_caja->item(recNo,14)->text();} //datos de los resultados // orden de consulta if(paramName=="total_oc") {paramValue=ui->l_total_consultas->text();} if(paramName=="total_oc_cc") {paramValue=ui->l_total_cc_oc->text();} if(paramName=="total_oc_a") {paramValue=ui->l_total_anuladas_oc->text();} // orden odontologica if(paramName=="total_od") {paramValue=ui->l_total_odontologica->text();} if(paramName=="total_od_cc") {paramValue=ui->l_total_cc_oo->text();} if(paramName=="total_od_a") {paramValue=ui->l_total_anuladas_oo->text();} // orden de practica if(paramName=="total_op") {paramValue=ui->l_total_op->text();} if(paramName=="total_op_cc") {paramValue=ui->l_total_cc_op->text();} if(paramName=="total_op_a") {paramValue=ui->l_total_anuladas_op->text();} //monto total de la operacion if(paramName=="monto_total") {paramValue=ui->l_total_general->text();} //periodos de informe if(paramName=="fecha_desde") {paramValue=fecha_seleccionada;} if(paramName=="fecha_hasta") {paramValue=fecha_fin;} }); reporte->printExec();
Esto, hace lo que necesito, pero solo funciona para un grupo de datos.
En estar caso yo tengo 4 grupos que quiero añadir al mismo formulario de impresion.
Pero en otro caso esos grupos pueden ser variables, como ejemplo dejo lo siguienteGrupo Argentina
item, detalle,precio
Grupo Bolivia
item, detalle,precio
Grupo Chile
item, detalle,precio
......Y asi. alguien tiene un ejemplo algo claro de esto?. Se que es posible pues existe una muestra en el sitio de QtRpt, pero no esta codificada.
-
La respuesta es Esta:
QString valores[4]; valores[0]="primero"; valores[1]="segundo"; valores[2]="tercero"; valores[3]="cuarto"; QtRPT *reporte= new QtRPT(this); reporte->loadReport(":/impresiones/prueba.xml"); reporte->recordCount.append(4); connect(reporte,&QtRPT::setValue,[&](const int recNo,const QString paramName,QVariant ¶mValue,const int reportPage) { (void) reportPage; if(paramName=="grupo") { if(recNo>=2) {paramValue="Grupo 2";} else {paramValue="Grupo 1";} } if(paramName=="dato1") {paramValue=valores[recNo];} }); reporte->printExec();