Recent

Author Topic: crear tabla csv con ZMSQueryDataSet  (Read 175 times)

Bobito

  • New Member
  • *
  • Posts: 16
crear tabla csv con ZMSQueryDataSet
« on: July 10, 2019, 05:18:41 am »
Tengo una aplicación de terceros que realiza un seguimiento de cada factura de mis clientes. Cada nueva factura genera un registro en una tabla llamada CUEN_M01 (donde CUEN es para cuentas por cobrar, y 01 es para movimientos en la empresa 01).
Luego, todos los demás movimientos -pagos en efectivo o cheques,  etc. relacionados con esa factura se registran en otra tabla llamada CUEN_DET01 (DET01 para detalles en la empresa 01).

En mi aplicación Lazarus ya tengo estas declaraciones que calculan el saldo final de cada factura / referencia (campo REFER) que un cliente debe:

  SQLQuery2.SQL.Text: = 'SELECT MIN (CVE_CLIE) AS CVE_CLIE, REFER, MAX (NO_PARTIDA) AS NO_PARTIDA, MIN (F_VENC) como F_VENC, min (FACTURA) como FACTURA, MAX (DOCTO) como DOCTO,' +
 'MIN (DESCR) COMO DESCR, SUMA (IMPORTE) COMO IMPORTANTE DE (' +
 'SELECCIONE CM.CVE_CLIE, CM.REFER, 0 COMO NO_PARTIDA, CM.FECHA_VENC COMO F_VENC, CM.NO_FACTURA COMO FACTURA, CM.DOCTO, C.DESCR, CM.IMPORTE * CM.SIGNO COMO IMPORTE  +
 'FROM CUEN_M01 CM UNIR CONC01 C ON CM.NUM_CPTO = C.NUM_CPTO' +
 'WHERE CM.CVE_CLIE =' + quotedstr (clave) +
 'UNION ALL' +
 'SELECCIONE CD.CVE_CLIE, CD.REFER, CD.NO_PARTIDA, CD.FECHA_VENC AS F_VENC, CD.NO_FACTURA AS FACTURA, CD.DOCTO, C.DESCR, CD.IMPORTE * CD.SIGNO AS IMPORTE' +
 'FROM CUEN_DET01 CD UNIR CONC01 C EN CD.NUM_CPTO = C.NUM_CPTO' +
 'WHERE CD.CVE_CLIE =' + quotedstr (clave) + ') AS CARACHO' +
 'GRUPO POR REFERENTE' +
 'TENER ABS (SUMA (IMPORTE))> .005' +
 'ORDER BY REFER, NO_PARTIDA, F_VENC';
 SQLQuery2.Active: = True;
 DBGrid2.Refresh;

En mi programa, la cadena clave contiene el código / id del cliente.

Ahora, lo que me gustaría hacer es crear un ZQueryDataSet tipo TZMQueryDataSet con la misma información que el SQLQuery2 (cuyo tipo es TSQLQuery) que ya tengo, luego quiero guardar este conjunto de datos en una tabla csv como se explica en project1 que descargué con ZMQuery.lpk. Este es el código en project1:

procedure TForm1.Button2Click (Sender: TObject);
var
  vOriginalTableName: cadena;
empezar
  tratar
    vOriginalTableName: = ZMQueryDataset1.TableName;
    ZMQueryDataset1.TableName: = 'Test';
    ShowMessage ('El conjunto de datos se guardará en:' +
       ZMQueryDataset1.ZMConnection.DatabasePath +
       ZMQueryDataset1.TableName + '. Csv');
    ZMQueryDataset1.SaveToTable (FormatSettings.DecimalSeparator);
  finalmente
    ZMQueryDataset1.TableName: = vOriginalTableName;
  end;
end;

No sé si hay una manera más fácil de realizar la tarea, sus consejos son bienvenidos.

De antemano gracias un millón.