Amigos tengo un procedimiento que convierte el contenido de una cadena de texto delimitado por coma en filas, como si fuera una tabla, pero en un subreporte de fastreport no se muestran los datos, no sé si FastReport no es compatible con procedimientos almacenados, he verificado que sí devuelve registros, dejo el SP:
CREATE PROCEDURE split_string ( p_index INTEGER ) RETURNS ( fila VARCHAR(255) ) AS DECLARE variable p_string VARCHAR(255); DECLARE variable lastpos INTEGER; DECLARE variable nextpos INTEGER; BEGIN SELECT otc_reparacion_otras FROM ot_correctivo WHERE otc_id = :p_index INTO :p_string; p_string = :p_string || :','; lastpos = 1; nextpos = POSITION(',', :p_string, lastpos); IF (lastpos = nextpos) THEN BEGIN fila = SUBSTRING(:p_string FROM :lastpos FOR :nextpos - :lastpos); suspend; lastpos = :nextpos + 1; nextpos = POSITION(',', :p_string, lastpos); END while (:nextpos > 1) do BEGIN fila = SUBSTRING(:p_string FROM :lastpos FOR :nextpos - :lastpos); lastpos = :nextpos + 1; nextpos = POSITION(',', :p_string, lastpos); suspend; END END
Simplemente lo llamo desde delphi con el componente TFDStoredProc de FireDAC:
QDiagnostico.Close; QDiagnostico.Prepare; QDiagnostico.ParamByName('p_index').AsInteger := 11; QDiagnostico.Open;
Confirmo que devuelva registro con:
ShowMessage(IntToSTr(QDiagnostico.RecordCount));
En mi Ejemplo me devuelve 4 Filas y no se muestra en un masterData dentro de un SubReporte de FastReport, Qué puedo estar haciendo mal?.
Saludos.