Les platico mi historia. Resulta que estoy haciendo una aplicacioncita en Delphi7 que debe presentar un reporte diseñado en CrystalReports 9 con datos obtenidos de una base de datos en Microsoft SQLServer. Todo excelente hasta aquí, diseñé un reporte que satisface las necesidades del cliente, pero en cuanto intento accederlo me marca el error en la imagen.
Obviamente antes de buscar ayuda en el foro, busqué en Internet y me encontré ésta liga que explica cómo dizque solucionar el problema; apliqué la solución y no funciona.
A continuación, parte del código que controla el reporte que diseñé y la obtención de datos.
delphi
procedure TfrmCnsltrDnncs.SpeedButton3Click(Sender: TObject);var wsDts : widestring; aDts : array of string; sTRex : string;begin sTRex := IntToStr(dbgrdDts.Columns.Items[0].Field.Value); wsDts := 'SELECT ExtrsnTlfncEnc.FloExtrsn, ExtrsnTlfncEnc.FchHraExtrsn, ExtrsnTlfncEnc.OprdrExtrsn, ExtrsnTlfncEnc.EstdDnncExtrsn, '+ 'ExtrsnTlfncEnc.NmbrDnncntExtrsn, ExtrsnTlfncEnc.TlfnDnncntExtrsn, ExtrsnTlfncEnc.OcpcnDnncntExtrsn, ExtrsnTlfncEnc.DrccnCllExtrsn, '+ 'ExtrsnTlfncEnc.DrccnNmrDnncntExtrsn, ExtrsnTlfncEnc.DrccnClnDnncntExtrsn, ExtrsnTlfncEnc.DrccnCalle1Extrsn, '+ 'ExtrsnTlfncEnc.DrccnCalle2Extrsn,ExtrsnTlfncEnc.DrccnMncpExtrsn, ExtrsnTlfncEnc.DrccnLclddExtrsn, '+ 'ExtrsnTlfncEnc.NmrDnncExtrsn, ExtrsnTlfncEnc.NmrTpoSrvcExtrsn,ExtrsnTlfncEnc.NmrCmpnTlfncExtrsn, ExtrsnTlfncEnc.DltTlfnExtrsn, '+ 'ExtrsnTlfncEnc.DltOtrTlfnExtrsn, ExtrsnTlfncEnc.DltNmbrPrprcndExtrsn, ExtrsnTlfncEnc.DltTnoVozExtrsn, ExtrsnTlfncEnc.DltCrctrstcsVoz, '+ 'ExtrsnTlfncEnc.DltSxoVoz, ExtrsnTlfncEnc.DltEddAprxmdExtrsn, ExtrsnTlfncEnc.DltInsttcnExtrsn, ExtrsnTlfncEnc.DltTpoPgoExtrsn, '+ 'ExtrsnTlfncEnc.DltCntddAPgrExtrsn, ExtrsnTlfncEnc.DltCntddPgdExtrsn, ExtrsnTlfncEnc.DltNmrCta, ExtrsnTlfncEnc.DltNmrScrsl, '+ 'ExtrsnTlfncEnc.DltObsrvcnsExtrsn, ExtrsnTlfncEnc.DltMdsOprndExtrsn, ExtrsnTlfncDtll.FchHraAccn, ExtrsnTlfncDtll.AccnAccn, '+ 'ExtrsnTlfncDtll.OprdrAccn, ExtrsnTlfncDtll.ObsrvcnsAccn, CtlOcp.DscOcp, CtlIns.DscIns, CtlCrcVoz.DscCtlCrcVoz, TonosVoz.DscTnoVoz '+ 'FROM ExtrsnTlfncEnc INNER JOIN ExtrsnTlfncDtll ON ExtrsnTlfncEnc.FloExtrsn = ExtrsnTlfncDtll.FloExtrsn INNER JOIN '+ 'CtlOcp ON ExtrsnTlfncEnc.OcpcnDnncntExtrsn = CtlOcp.ClvOcp INNER JOIN CtlIns ON ExtrsnTlfncEnc.DltInsttcnExtrsn = CtlIns.ClvIns INNER JOIN '+ 'CtlCrcVoz ON ExtrsnTlfncEnc.DltCrctrstcsVoz = CtlCrcVoz.ClvCtlCrcVoz INNER JOIN TonosVoz ON ExtrsnTlfncEnc.DltTnoVozExtrsn = TonosVoz.ClvTnoVoz '+ 'WHERE ExtrsnTlfncEnc.FloExtrsn = ' + IntToStr(dbgrdDts.Columns.Items[0].Field.Value) + ' ORDER BY ExtrsnTlfncDtll.FchHraAccn;'; try with crpeReporte do begin ReportName := ''; ReportName := Rta + ' ptExtTel.rpt'; SetLength(aDts,5); aDts[0] := 'Fijo (Casa)'; aDts[1] := 'Fijo (oficina)'; aDts[2] := 'Celular (personal)'; aDts[3] := 'Celular (trabajo)'; aDts[4] := 'No Especificado'; ParamFields[0].CurrentValue := aDts[NgcExtrsnEnc.DvlvrDtoInt(sTRex, 'NmrTpoSrvcExtrsn')]; SetLength(aDts,7); aDts[0] := 'Telmex'; aDts[1] := 'Alestra'; aDts[2] := 'Axtel'; aDts[3] := 'Telcel'; aDts[4] := 'Iusacell'; aDts[5] := 'Movistar'; aDts[6] := 'No Especificado'; ParamFields[1].CurrentValue := aDts[NgcExtrsnEnc.DvlvrDtoInt(sTRex, 'NmrCmpnTlfncExtrsn')]; ParamFields[2].CurrentValue := NgcMncps.DvlvrNmbrMncp(NgcExtrsnEnc.DvlvrDto(sTRex, 'DrccnMncpExtrsn')); ParamFields[3].CurrentValue := NgcLcldds.DvlvrNmbrLcldd(NgcExtrsnEnc.DvlvrDto(sTRex, 'DrccnMncpExtrsn'),NgcExtrsnEnc.DvlvrDto(sTRex, 'DrccnLclddExtrsn')); SetLength(aDts,3); aDts[0] := 'Masculino'; aDts[1] := 'Femenino'; aDts[2] := 'Indeterminado'; ParamFields[4].CurrentValue := aDts[NgcExtrsnEnc.DvlvrDtoInt(sTRex, 'DltSxoVoz')]; SetLength(aDts,3); aDts[0] := 'Compra de Tarjetas Prepago'; aDts[1] := 'Depósito Bancario'; aDts[2] := 'Pago en Efectivo'; ParamFields[5].CurrentValue := aDts[NgcExtrsnEnc.DvlvrDtoInt(sTRex, 'DltTpoPgoExtrsn')]; Connect.Clear; Connect.ServerName := Server ; //'ARIES'; Connect.UserID := User ; //'sa'; Connect.Password := Pass ; //'sysce'; Connect.DatabaseName := Dbs ; //'VD'; Printer.Name := ImpRpr; SQL.Query.Clear; SQL.Query.Add(wsDts); // En ésta línea marca el error. Output := toWindow; WindowState := wsMaximized; PrintOptions.Copies := 1; ProgressDialog := False ; Execute; end; except on E: Exception do ShowMessage(E.Message); end; end;