Documentación

Reportes con origen base de datos

El reporte consulta una conexión SQL Server configurada en tu cuenta. A diferencia del reporte básico, este acepta parámetros: los envías en la URL y llegan al reporte como filtros.

Antes de empezar

Una API Key activa Se genera desde tu cuenta y viaja en cada llamada. Generar la mía
Una conexión SQL Server Registrada en tu panel y enlazada al reporte como origen de datos. Mis conexiones
El reporte debe tener el DataSource configurado en el diseñador. Si el tuyo no lee datos de ninguna parte, usa reportes básicos.

El endpoint

Devuelve el PDF como archivo binario con código 200. Cualquier otro código significa que la llamada falló.

GET https://design.quickreport.net/Report/GetReportPDFFromDatabase
Parámetro Descripción
apiKey Obligatorio La clave de tu cuenta. Recuerda codificarla en la URL.
reportName Obligatorio El nombre con el que guardaste el reporte en el diseñador, sin espacios y sin la extensión .rexp.
param1, param2, … Los parámetros que definiste en el reporte, uno por cada uno, con el mismo nombre. Se agregan a la misma cadena de consulta.

Ejemplos

El mismo llamado en cuatro entornos. Reemplaza la clave, el nombre del reporte y los parámetros por los tuyos.

// Define los parámetros necesarios
const apiKey = "yourApiKeyHere";
const reportName = "yourReportNameHere"; // sin espacios y sin la extensión .rexp
const values = {
  param1: "value1", // los parámetros que definiste en el reporte
  param2: "value2"
};

// Construye la URL con los parámetros
const queryParams = new URLSearchParams({
  apiKey: apiKey,
  reportName: reportName,
  ...values
}).toString();

const url = `https://design.quickreport.net/Report/GetReportPDFFromDatabase?${queryParams}`;

// Realiza la solicitud GET
fetch(url, { method: "GET" })
  .then(response => {
    if (!response.ok) {
      throw new Error("Error al obtener el reporte PDF");
    }
    return response.blob(); // Obtén el archivo PDF como un blob
  })
  .then(blob => {
    // Crea un enlace para descargar el PDF
    const downloadUrl = window.URL.createObjectURL(blob);
    const a = document.createElement("a");
    a.href = downloadUrl;
    a.download = `${reportName}.pdf`;
    document.body.appendChild(a);
    a.click();
    a.remove();
    window.URL.revokeObjectURL(downloadUrl); // Limpia el objeto URL
  })
  .catch(error => {
    console.error("Error:", error);
  });
[HttpGet("CallGetReportPDFFromDatabase")]
public async Task<IActionResult> CallGetReportPDFFromDatabase(
    string apiKey,
    string reportName,
    [FromQuery] IDictionary<string, string> values)
{
    // Construye la URL del endpoint
    string baseUrl = "https://design.quickreport.net";
    string url = $"{baseUrl}/Report/GetReportPDFFromDatabase"
               + $"?apiKey={Uri.EscapeDataString(apiKey)}"
               + $"&reportName={Uri.EscapeDataString(reportName)}";

    // Agrega los parámetros del reporte a la cadena de consulta
    foreach (var kvp in values)
    {
        url += $"&{Uri.EscapeDataString(kvp.Key)}={Uri.EscapeDataString(kvp.Value)}";
    }

    var client = _httpClientFactory.CreateClient();

    try
    {
        var response = await client.GetAsync(url);

        if (response.IsSuccessStatusCode)
        {
            var pdfStream = await response.Content.ReadAsStreamAsync();

            return new FileStreamResult(pdfStream, "application/pdf")
            {
                FileDownloadName = $"{reportName}.pdf"
            };
        }

        return BadRequest($"Error al obtener el reporte: {response.StatusCode} - {response.ReasonPhrase}");
    }
    catch (Exception ex)
    {
        return StatusCode(500, $"Error interno: {ex.Message}");
    }
}
<?php
// Define la URL base y los parámetros
$baseUrl = "https://design.quickreport.net";
$apiKey = "yourApiKeyHere";
$reportName = "yourReportNameHere"; // sin espacios y sin la extensión .rexp

// Los parámetros que definiste en el reporte
$values = [
    "param1" => "value1",
    "param2" => "value2"
];

// Construye la URL con los parámetros
$queryParams = http_build_query(array_merge([
    "apiKey" => $apiKey,
    "reportName" => $reportName
], $values));

$url = $baseUrl . "/Report/GetReportPDFFromDatabase?" . $queryParams;

// Inicializa cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo "Error: " . curl_error($ch);
} else {
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if ($httpCode == 200) {
        // Guarda el archivo PDF en el disco
        $filePath = $reportName . ".pdf";
        file_put_contents($filePath, $response);
        echo "Reporte descargado exitosamente: " . $filePath;
    } else {
        echo "Error al obtener el reporte. Código HTTP: " . $httpCode;
    }
}

curl_close($ch);
curl -X GET \
  "https://design.quickreport.net/Report/GetReportPDFFromDatabase?apiKey=yourApiKeyHere&reportName=yourReportNameHere&param1=value1&param2=value2" \
  -o report.pdf

Agrega un &nombre=valor por cada parámetro que tenga tu reporte.

Verlo en acción

Cómo conectar un reporte a una base de datos Video corto que recorre el diseñador de principio a fin.

Otros orígenes