Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error en Aplicacion (https://www.clubdelphi.com/foros/showthread.php?t=53159)

calciojar 12-02-2008 17:55:21

Error en Aplicacion
 
Buenos Dias, Muchas gracias en lo que me puedan colaborar por adelantado

lo que pasa es que tengo un problema al querer imprimir un listado en un DBGrid, tengo un formulario con 1 DBGrid, 1 Edit, necesito que al digitar una letra en el edit aparescan en el DBGrid un listado de los posibles datos que enpiezan por esa letra pero al hacerlo me aparece:

XSQLDA index out of range.

En el edit tengo el siguiente codigo:

dmReportes.BusFac(Factura.Text);

y en el modulo de reportes "dmReportes" tengo el siguiente procedimiento:

procedure TdmReportes.BusFac(Factura: String);
Begin
with qryBusFac do
begin
Close;
ParamByName('PMBusFac').AsString := '%'+Factura+'%';
Open;
end;
end;

ME PODRIAN COLABORAR??

MUCHAS GRACIAS.

gmontes 12-02-2008 18:09:37

no te faltara hacer

ParamCheck := True;

calciojar 12-02-2008 18:11:42

Cita:

Empezado por gmontes (Mensaje 265265)
no te faltara hacer

ParamCheck := True;

pero en donde podria esa linea en el modulo?

calciojar 12-02-2008 18:31:36

Cita:

Empezado por calciojar (Mensaje 265267)
pero en donde podria esa linea en el modulo?

Estuve mirando mi codigo y encontre que al querer poner en TRUE la propiedad
ACTIVE del TIBQUERY me aparece el mismo error XSQLDA index out of range

eduarcol 12-02-2008 18:38:47

Supongo que trabajas con PARADOX, de ser asi debes actualizar los indices de la tabla que es el problema que debes tener. Esto es tratando de adivinar ya que no colocas con que trabajas

calciojar 12-02-2008 18:42:13

Cita:

Empezado por eduarcol (Mensaje 265277)
Supongo que trabajas con PARADOX, de ser asi debes actualizar los indices de la tabla que es el problema que debes tener. Esto es tratando de adivinar ya que no colocas con que trabajas

DELPHI, EMS INTERBASE & FIREBIRTH MANAGER

enecumene 12-02-2008 18:49:19

Hola, miren no se nada de Interbase o Firebird, pero no deberia de ser asi?:

Código Delphi [-]
 procedure TdmReportes.BusFac(Factura: String);
   Begin
     with qryBusFac do
       begin
         Close;
         ParamByName('PMBusFac').AsString := '%'+Factura.Text+'%';
         Open;
       end;
   end;

Digo yo, no sé, :confused:

Saludos.

Caral 12-02-2008 19:09:53

Hola
Código Delphi [-]
procedure TdmReportes.BusFac(Factura: String);
Begin
with qryBusFac do
begin
ParamByName('PMBusFac').Value := Factura.Text;
Open;
end;
end;
Saludos

Caral 12-02-2008 19:37:39

Hola
La verdad entiendo poco.
Por que no colocas el codigo completo del from, ademas del codigo sql de qryBusFac.
Por favor trata de usar las etiquetas delphi, presionas Ir a Avanzado y veras arriba unos botones, hay uno que dice Delphi, entra las etiquetas que coloca en el mensaje pones el codigo.
Si tienes dudas avisa.
Saludos

calciojar 12-02-2008 19:40:13

Hola Modifique la linea que me diste de codigo pero sigue igualito con el mismo error

Caral 12-02-2008 19:43:48

Hola
Cual es el codigo de qryBusFac
Saludos

calciojar 12-02-2008 19:44:26

Este es el codigo del Modulo Reportes (dmReportes)


Código Delphi [-]
unit dm_Reportes;

interface

uses
  SysUtils, Classes, FR_DSet, FR_DBSet, DB, IBCustomDataSet, IBQuery, Forms,
  IBSQL;

type
  TdmReportes = class(TDataModule)
    qryMatriNom: TIBQuery;
    dsMatricula: TDataSource;
    frMatricula: TfrDBDataSet;
    qryMatriNomNOMBRE_APELLIDO: TIBStringField;
    qryBusFac: TIBQuery;
    dsBusFac: TDataSource;
    qryBusFacCOD_FACTURA: TIntegerField;
    //procedure DataModuleCreate(Sender: TObject);
  private
    { Private declarations }
    procedure Guardas;
  public
    { Public declarations }
    Procedure BuscarMatriNom(Nombre: String);
    procedure BusFac(Factura: String);
  end;

var
  dmReportes: TdmReportes;

implementation

uses dm_Conexion, dm_Tablas, frm_CambiarLoginPass, frm_Codificadores,
  frm_Facturar, frm_InformesRecaudo, frm_InformesUsuario,
  frm_InformesVarios, frm_IngresarPagos, frm_Inicio, frm_Matricula,
  frm_Principal, DateUtils;

{$R *.dfm}

procedure TdmReportes.BuscarMatriNom(Nombre: String);
begin
  with qryMatriNom do
  begin
    Close;
      ParamByName('parametro').AsString := '%'+Nombre+'%';
    Open;
  end;
end;

procedure TdmReportes.BusFac(Factura: String);
Begin
  with qryBusFac do
  begin
    //Close;
      ParamByName('PMBusFac').AsString := '%'+Factura+'%';
    Open;
  end;
end;

procedure TdmReportes.Guardas;
begin
  dmConexion.SalvarTransaccion;
end;

end.

Delphius 12-02-2008 19:47:18

Por lo que estoy viendo... es posible que el error provenga de otro lado. Además he notado que el código que muestran tiene una incosistencia: el parámetro es de tipo string, mientras que en el cuerpo del procedimiento, asumen que es un TEdit:

Código Delphi [-]
procedure TdmReportes.BusFac(Factura: String);
Begin
with qryBusFac do
begin
ParamByName('PMBusFac').Value := Factura; // aqui hay un error
Open;
end;
end;

Lo que no me está quedando claro que es lo que desea calciojar. ¿Hacer un like? Esto me lo pregunto por el hecho de que pone el comodin %.

El error que menciona de "fuera de rango" viene de otro lado...

Hay algo en otra parte que hace fallar el código. Sería útil que calciojar exponga más código del que expuso y que explique con mayor detalles que desea conseguir.

EDITO: veo que ya expuso más código, pero no es allí el problema. El problema viene del armado de la consulta SQL que está armando y/o de otro lugar. Asi lo estoy comprendiendo yo.

Saludos,

enecumene 12-02-2008 19:49:54

efectivamente estaba pensando yo amigo Delphius, tal vez el problema puede venir de la sentencia SQLo en el onchange del edit, en fin en otro lado.

Saludos.

calciojar 12-02-2008 19:52:48

Cita:

Empezado por enecumene (Mensaje 265318)
efectivamente estaba pensando yo amigo Delphius, tal vez el problema puede venir de la sentencia SQLo en el onchange del edit, en fin en otro lado.

Saludos.

HOLA. en el OnChange del Edit tengo lo siguiente
Código Delphi [-]
dmReportes.BusFac(Factura.Text);

Delphius 12-02-2008 19:58:28

Cita:

Empezado por calciojar (Mensaje 265319)
HOLA. en el OnChange del Edit tengo lo siguienteCódigo Delphi [-]dmReportes.BusFac(Factura.Text);

calciojar, el error que tu tienes viene de más atrás del paso del OnChange. Es muy problable que se trata del armado de la consulta SQL. ¿Por casualidad estás limpiando el TQuery antes de armar la consulta?
No se estoy divagando... pero estoy seguro que el problema no es el OnChange.

Saludos,

enecumene 12-02-2008 20:00:32

Por qué no intentas esto, no se si funcionará, pero vale ahi va:

Código Delphi [-]
procedure TdmReportes.BusFac(Factura: String);
var
   Filtro : String;
begin
   If (Factura.Text <> '') then
   begin
      qryFact.Filtered := False;
      Filtro := 'Factura Like ''%' +Factura.Text+ '%''';
      qryFact.Filter := Filtro;
      qryFact.Filtered := True;
   end
   else qryFact.Filtered := False;

end;

Concuerdo con delphius, por que no posteas la Sentencia SQL del query?

Saludos.

calciojar 12-02-2008 20:04:53

HOLA. modifique la consulta y ahora me aparece otro error:

SQL Parce error:
Parameter Name Expected

calciojar 12-02-2008 20:06:25

Cita:

Empezado por calciojar (Mensaje 265327)
HOLA. modifique la consulta y ahora me aparece otro error:

SQL Parce error:
Parameter Name Expected

la consulta es:

select
factura.cod_factura
from
factura
where
factura.cod_factura like : PMBusFac
order by factura.cod_factura

enecumene 12-02-2008 20:06:47

Cita:

Empezado por calciojar (Mensaje 265327)
HOLA. modifique la consulta y ahora me aparece otro error:

SQL Parce error:
Parameter Name Expected

calciojar, si no pones la consulta aqui no podemos avanzar en conseguirte la solución.

SAludos.


La franja horaria es GMT +2. Ahora son las 20:07:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi