Tap Forms Database Pro for Mac, iPhone, iPad and Apple Watch › Forums › Script Talk › Script for searching amounts in the tables of every record of a form.
- This topic has 0 replies, 1 voice, and was last updated 1 year, 6 months ago by Fernando DS. 
- 
		AuthorPosts
- 
		
			
April 8, 2024 at 7:33 AM #50676
 Fernando DSParticipantHello everyone, I have an amount search script in the table field of all records. But it works for me with some quantities and not with others. And I don’t understand why. 
 This is the script:// Definiciones de IDs de campos dentro de la tabla 
 var pagos_cobros_tabla_id = ‘fld-a878bb1af5534101bcfab905279b1180’; // ID del campo Pagos/Cobros dentro de la tabla
 var movs_banco_tabla_id = ‘fld-57a5fdcd593e46b298948845321d78ac’; // ID del campo Mvtos. Banco dentro de la tabla
 var fecha_id = ‘fld-547c13e982e84d0793b0aba6c220cf76’; // ID del campo de fecha dentro de la tabla
 var nombre_id = ‘fld-baf116cd116e4cde9b65e79014a49f28’; // ID del campo de nombre dentro de la tabla
 var tabla_id = ‘fld-d8a58dbf35914f3c858c6dfb880c1c48’;
 var nota_id = ‘fld-7918261f865b489a8f7672cf733712a9’;
 var listado_de_script_id = ‘fld-555622f4bf0344f9b9e92af0806210fc’;
 // Reemplazar ‘XXXXXX’ con el ID del campo “Listado de script”// Define el importe a buscar 
 var buscarImporte = “19.99”; // Ajusta este valor según el importe que desees buscarconsole.log(“”); 
 console.log(“*************************************”);
 console.log(“Importe buscado: ” + buscarImporte);
 console.log(“*************************************”);
 console.log(“”);// Inicializar el contenido del campo “Listado de script” 
 var output = “”;// Función para parsear el importe independientemente del formato 
 function parseImporte(importeStr) {
 if (typeof importeStr === ‘string’) {
 return parseFloat(importeStr.replace(/[^\d.-]/g, ”)) || 0; // Devolver 0 si el valor no se puede convertir a número
 } else {
 return parseFloat(importeStr) || 0; // Devolver 0 si el valor no se puede convertir a número
 }
 }buscarImporte = parseImporte(buscarImporte); var records = form.getRecords(); for (var i = 0; i < records.length; i++) { 
 var record = records;
 var registrosTabla = record.getFieldValue(‘fld-d8a58dbf35914f3c858c6dfb880c1c48’) || []; // Reemplaza ‘tabla_id’ con el ID del campo de la tabla
 var nombre = record.getFieldValue(‘fld-baf116cd116e4cde9b65e79014a49f28’); // Obtener el nombre fuera del bucle de la tabla// Array para almacenar los movimientos correspondientes a cada nombre 
 var movimientosNombre = [];for (var j = 0; j < registrosTabla.length; j++) { 
 var registroTabla = registrosTabla[j];
 var pagosCobros = parseImporte(registroTabla.getFieldValue(pagos_cobros_tabla_id));
 var movsBanco = parseImporte(registroTabla.getFieldValue(movs_banco_tabla_id));
 var fechaRaw = new Date(registroTabla.getFieldValue(fecha_id));
 var fecha =${('0' + fechaRaw.getDate()).slice(-2)}/${('0' + (fechaRaw.getMonth() + 1)).slice(-2)}/${fechaRaw.getFullYear().toString().substr(-2)};
 var nota = registroTabla.getFieldValue(nota_id);// Comparar el valor absoluto de los importes 
 if (Math.abs(pagosCobros) === Math.abs(buscarImporte) || Math.abs(movsBanco) === Math.abs(buscarImporte)) {
 movimientosNombre.push({ fecha: fecha, movsBanco: movsBanco, pagosCobros: pagosCobros, nota: nota });
 }
 }// Mostrar el nombre y luego los movimientos correspondientes 
 if (movimientosNombre.length > 0) {
 output += “\n” + nombre + “\n\n”;
 console.log(“” + nombre);
 console.log(“”);
 for (var k = 0; k < movimientosNombre.length; k++) {
 var movimiento = movimientosNombre[k];
 output +=${movimiento.fecha}: ${movimiento.movsBanco} | ${movimiento.pagosCobros}\n\n${movimiento.nota}\n;
 console.log(${movimiento.fecha}: ${movimiento.movsBanco} | ${movimiento.pagosCobros});
 console.log(“” + movimiento.nota);
 console.log(“”);
 }
 }
 }// Actualizar el campo “Listado de script” del primer registro con el texto generado 
 record.setFieldValue(listado_de_script_id, output);// Guardar los cambios en los registros 
 form.saveAllChanges();Any help will be welcome. 
- 
		AuthorPosts
You must be logged in to reply to this topic.
 
 
