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.

Delphius 12-02-2008 20:09:52

Cita:

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

SQL Parce error:
Parameter Name Expected

calciojar, ¿De que modo más amable posible te podemos pedir que por favor expongas tu consulta SQL?

Te estamos diciendo de la mejor manera que tu problema viene de allí, y hasta es posible que más atrás... pero no podemos adivinar. Necesitamos más información de la que nos das. No estamos allí contigo como para saber que es lo que te falla.

Te lo pido, por favor... explicate mejor que deseas hacer, cual es tu consulta, y/o cualquier información relevante. ¿Que cambios haz hecho?

Saludos,

calciojar 12-02-2008 20:11:02

Cita:

Empezado por enecumene (Mensaje 265329)
calciojar, si no pones la consulta aqui no podemos avanzar en conseguirte la solución.

SAludos.

la consulta es:

Código Delphi [-]
 select
  factura.cod_factura
from
  factura
where
  factura.cod_factura like : PMBusFac
  order by factura.cod_factura

Chris 12-02-2008 20:13:16

Solo tienes que unir los dos puntos ( : ) con el nombre del parámetro
Código SQL [-]
 select
  factura.cod_factura
from
  factura
where
  factura.cod_factura like :PMBusFac
  order by factura.cod_factura

enecumene 12-02-2008 20:14:11

Haz esto:

SQL
Código SQL [-]
select
  factura.cod_factura
from
  factura


y pones esto en el procedure BuscFac:

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

end;

y prueba a ver:

Delphius 12-02-2008 20:15:58

Cita:

Empezado por enecumene (Mensaje 265337)
Haz esto:

SQL
Código SQL [-]select factura.cod_factura from factura



y pones esto en el procedure BuscFac:

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+ '%'' order by facturas ASC';
qryFact.Filter := Filtro;
qryFact.Filtered := True;
end else qryFact.Filtered := False;

end;


y prueba a ver:

ADVERTENCIA: tu código espere un string, pero en el cuerpo lo tratas como un TEDIT. Borra el .Text que está demás;)

Saludos,

enecumene 12-02-2008 20:17:31

Cita:

Empezado por Delphius (Mensaje 265338)
ADVERTENCIA: tu código espere un string, pero en el cuerpo lo tratas como un TEDIT. Borra el .Text que está demás;)

Saludos,

Vale es cierto Amigo Delphius, gracias por la advertencia.

Saludos.

Caral 12-02-2008 20:19:52

Hola
Lo mas seguro es que me equivoco, pero me parece que el codigo lo estas escribiendo directamente en el form del Qreport, es asi?.
Saludos

calciojar 12-02-2008 20:26:50

MUCHACHOS GRACIAS A USTEDES YA ME FUNCIONO SOLO HACIA FALTA UNIR LOS :AL PARAMETRO COMO DECIA NUESTRO COMPAÑERO(A) D&W.

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

DE TODAS MANERAS ME GUSTA MUCHO QUE TODAS LAS PERSONAS ME AYUDARAN
LES AGRADESCO, PUESTO QUE ESTOY HACIENDO UNA APLICACION QUE TENGO
QUE ENTREGARLA A MEDIADOS DE MARZO. ESPERO QUE SI TENGO ALGUNA
DUDA MAS ME PUEDAN COLABORAR. GRACIASSSSS

calciojar 12-02-2008 20:28:25

HAAAA Y UNA PREGUNTA ME PODRIAN EXPLICAR EL CODIGO DEL FILTRO QUE ME DIERON???

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

end;

egostar 12-02-2008 20:38:46

Cita:

Empezado por calciojar (Mensaje 265343)
DE TODAS MANERAS ME GUSTA MUCHO QUE TODAS LAS PERSONAS ME AYUDARAN
LES AGRADESCO, PUESTO QUE ESTOY HACIENDO UNA APLICACION QUE TENGO
QUE ENTREGARLA A MEDIADOS DE MARZO. ESPERO QUE SI TENGO ALGUNA
DUDA MAS ME PUEDAN COLABORAR. GRACIASSSSS

Hola calciojar
Por mera curiosidad, que porcentaje de tu proyecto llevas hecho :confused::rolleyes::eek:

Salud OS

PD. No escribas con mayúsculas, no se ve bien, ya leiste nuestra guía de estilo? :)

calciojar 12-02-2008 20:44:55

Cita:

Empezado por egostar (Mensaje 265347)
Hola calciojar
Por mera curiosidad, que porcentaje de tu proyecto llevas hecho :confused::rolleyes::eek:

Salud OS

PD. No escribas con mayúsculas, no se ve bien, ya leiste nuestra guía de estilo? :)


Hola, que pena lo de las mayusculas ya lo habia leido pero de verdad me olvide por completo.

en cuanto al porcentaje solo me falta hacer unas 10 consultas mas o menos y otra cosita sencilla creo que llevo un 90 a 95.

gracias por tu interes y que pena de nuevo por las mayusculas

egostar 12-02-2008 20:49:19

Cita:

Empezado por calciojar (Mensaje 265350)
en cuanto al porcentaje solo me falta hacer unas 10 consultas mas o menos y otra cosita sencilla creo que llevo un 90 a 95.

Vaya, ya te queda algo así como un mes, ojala y te de tiempo de probar tu sistema antes de entregarlo, no estaría nada bien que fallara, digo, podría quedar en entredicho el Club :D:D:D

Salud OS

PD. Tomalo como un consejo de amigos.....

Delphius 12-02-2008 20:55:08

calciojar,
Espero que no me tomes el malo de la película pero espero que este hilo te haya demostrado que si uno quiere encontrar la solución debe mirar más adentro de lo que se imagina. Por lo que es fundamental que expongas, para la próxima, mejor tus casos, tus dudas y/o inconvenientes.

Ha requerido de la intervención de muchos para convencerte de que el error venía de más atrás.

Y disculpa que lo diga, pero tu comentario ha sonado un poco descortés. Si bien nos agradeciste, el cierre del telón te ha quedado corto... Recuerda que te podremos ser de ayuda siempre que tu pongas ganas, podemos ayudarte... si... no estamos obligados a ello pero haremos nuestro esfuerzo, pero eso no quiere decir que siempre estaremos para salvarte.

Me pareció correcto que Egostar te haya invitado a leer la guia de estilo.

Saludos,


La franja horaria es GMT +2. Ahora son las 02:35:02.

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