Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2007
cucuy cucuy is offline
Miembro
 
Registrado: mar 2007
Posts: 30
Poder: 0
cucuy Va por buen camino
Error al hacer varias busquedas con adoquery

Hola el problema que tengo es de que estoy ejecutando una busqueda sobre una tabla de mi base de datos con un adoquery y mysql, la base de datos la tengo en mi pc, el problema es de que a la primera vez que ejecuto la consulta la hace correctamente pero despues de ejecutar varias consultas delphi me manda un error, donde me muestra una ventana de CPU donde me aparece una especie de codigo ensamblador y de tiene mi programa.

Este es el codigo q utilizo en el onchange de un edit, ya busque en los hilos que vienen en el foro y en ninguno e encontrado la solucion para mi problema.
Código Delphi [-]
qbuscar.Close;
qbuscar.SQL.Clear;
qbuscar.SQL.Add('select * from CLIENTES where NOMBRE like:n');
qbuscar.Parameters.ParamByName('n').Value:='%'+edtbuscar.Text+'%';
qbuscar.Open;

Última edición por vtdeleon fecha: 30-03-2007 a las 20:46:20.
Responder Con Cita
  #2  
Antiguo 30-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Trata con esta modificación en esta linea:
Código Delphi [-]
qbuscar.Parameters.ParamByName('n').Value:=QuoteStr('%'+edtbuscar.Text+'%');

Usa las Etiquetas para que el codigo aparezca resaltado.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 30-03-2007
cucuy cucuy is offline
Miembro
 
Registrado: mar 2007
Posts: 30
Poder: 0
cucuy Va por buen camino
Hola mira de la forma en que tenia el codigo la forma anterior no me marcaba error pero al momento de buscar no encontraba nada, entonces decidi cambiar en la sentencia igual por el like, ahy si encuentra pero al hacer un numero determinado de busquedas me vuelve a presentar el mismo error, me vuelve a presentar la fea pantalla con el titulo de CPU.

qbuscar.Close;
qbuscar.SQL.Clear;
qbuscar.SQL.Add('select * from CLIENTES where NOMBRE LIKE:n');
qbuscar.Parameters.ParamByName('n').DataType:=ftstring;
qbuscar.Parameters.ParamByName('n').Value:=('%'+trim(edtbuscar.Text)+'%');
qbuscar.Open;
Responder Con Cita
  #4  
Antiguo 30-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Que error te tira?

Quitale los parentesis que te puse en rojo.

qbuscar.Parameters.ParamByName('n').Value:=('%'+trim(edtbuscar.Text)+'%');

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 31-03-2007
cucuy cucuy is offline
Miembro
 
Registrado: mar 2007
Posts: 30
Poder: 0
cucuy Va por buen camino
Hola que ondas oye mira ya le quite los parentesis que me dijiste pero me sigue saliendo ese error, lo que hace ahora es que por ejemplo encuentra el registro que busco pero al ejecutar la busqueda pa ver otros archivos me vuelve a salir la ventana de CPU, es la pantalla donde viene el codigo ensamblador, el titulo de la pantalla es CPU, no me falta de configurarle algo al adoquery o al adoconecction que quiza sea lo que me provoke no poder hacer las busquedas que necesito?
Responder Con Cita
  #6  
Antiguo 31-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Ok, creo entender a lo que te refieres con "Ventana de CPU". Ejecuta tu programa fuera de Delphi. Y escribe aqui el error que te dá el sistema.

Sin conocer ese error estamos fritos.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #7  
Antiguo 31-03-2007
cucuy cucuy is offline
Miembro
 
Registrado: mar 2007
Posts: 30
Poder: 0
cucuy Va por buen camino
Oye con la novedad de que el error corriendolo desde el ejecutable fuera de delphi funciona a la perfeccion pero corriendolo con F9 malas ahy es donde truena, entonces ya mi duda seria si no me dara problemas mas adelante ese error que me salia, por que ahorita estoy intentandolo hacer que truene y de plano no falla fuera de delphi. Muchas gracias por tu ayuda y aqui paso el codigo con el que me esta funcionando por si alguien mas le sirve;

qbuscar.Close;
qbuscar.SQL.Clear;
qbuscar.SQL.Add('select * from CLIENTES where NOMBRE LIKE:n');
qbuscar.Parameters.ParamByName('n').DataType:=ftstring;
qbuscar.Parameters.ParamByName('n').Value:='%'+trim(edtbuscar.Text)+'%';
qbuscar.Open;
Responder Con Cita
  #8  
Antiguo 31-03-2007
cucuy cucuy is offline
Miembro
 
Registrado: mar 2007
Posts: 30
Poder: 0
cucuy Va por buen camino
hola ya volvi pues con la mala noticia de que estaba ejecutando mi sistema fuera de delphi i por fin me salio el error que pense que se habia ido para no volver mira el errror que me sale es Runtime error Program ABC.Exe R6025 pure virtual function call.
Responder Con Cita
  #9  
Antiguo 31-03-2007
cucuy cucuy is offline
Miembro
 
Registrado: mar 2007
Posts: 30
Poder: 0
cucuy Va por buen camino
Mira le estuve moviendo a dale y dale al sistema hasta que lo hice llorar, lo que hice fue con el ejecutable lo corri entonces me salio el error antes mencionando de runtime error le puse aceptar y despues le volvi a mover al edit y me salio una ventanita error inesperado y despues de esa enseguida me sale una que dice que un objeto estaba abierto y de ahy ya no me puedo mover.
Responder Con Cita
  #10  
Antiguo 31-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Me parece que ese error que te sale no es causado (directamente) por el código que has puesto. Debe haber algun evento, procedimiento o función que está provocando esa llamada.

Si es posible, muestranos los procedimientos o funciones involucrados de esa unidad. Y usa las etiquetas para los códigos. Edita tu primer mensaje, en donde he puesto las etiquetas para que veas como se utilizan.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #11  
Antiguo 31-03-2007
cucuy cucuy is offline
Miembro
 
Registrado: mar 2007
Posts: 30
Poder: 0
cucuy Va por buen camino
hola que tal oye quieres que te pase la unidad de codigo donde me manda el error?

Código:
 
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB;
type
  TForm1 = class(TForm)
    B: TButton;
    ADOConnection1: TADOConnection;
    qbuscar: TADOQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    edtbuscar: TEdit;
    ADOConnection2: TADOConnection;
    DataSource2: TDataSource;
    DBGrid2: TDBGrid;
    wbuscar: TADOQuery;
    contrato: TEdit;
    pedido: TEdit;
    Button1: TButton;
     procedure edtbuscarChange(Sender: TObject);
    procedure contratoChange(Sender: TObject);
    procedure pedidoChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.contratoChange(Sender: TObject);
begin
  wbuscar.Close;
  wbuscar.SQL.Clear;
  wbuscar.SQL.Add('select * from PEDIDOS where (PEDIDO LIKE:n)');
  wbuscar.Parameters.ParamByName('n').DataType:=ftstring;
  wbuscar.Parameters.ParamByName('n').Value:='%'+trim(contrato.Text)+'%';
  wbuscar.Open;
end;
procedure TForm1.pedidoChange(Sender: TObject);
begin
  wbuscar.Close;
  wbuscar.SQL.Clear;
  wbuscar.SQL.Add('select * from CLIENTES,PEDIDOS where (PEDIDO LIKE:n) and (PEDIDOS.CLIENTE = CLIENTES.CLIENTE)');
  wbuscar.Parameters.ParamByName('n').DataType:=ftstring;
  wbuscar.Parameters.ParamByName('n').Value:='%'+trim(pedido.Text)+'%';
  wbuscar.Open;
end;
end.
mira truena en cualquier de los dos onchange de los edit el queri lo tengo ligado a un adoconection y tengo un dbgrid q muestra los y este oviamente ta ligado a un tdatosource ligado al adoquery
Responder Con Cita
  #12  
Antiguo 31-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
No necesitas la opcion de DataType = ftString, quitala y prueba.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #13  
Antiguo 31-03-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola cucuy
Yo intentaria esto primero y luego por parametros:
Código Delphi [-]
qbuscar.Close;
qbuscar.SQL.Clear;
qbuscar.SQL.Add('select * from CLIENTES where NOMBRE like' +QuoteStr(edtbuscar.Text));
qbuscar.Open;
Creo que se ve mas facil, por lo menos para empezar
Saludos
Responder Con Cita
  #14  
Antiguo 31-03-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La verdad yo haria un simple filtro asi:
Pensando que pedidos es numerico:
Código Delphi [-]
procedure TForm1.contratoChange(Sender: TObject);
var
   Filtro : String;
begin
  wbuscar.Filtered := False;
  Filtro := 'PEDIDOS Like '+contrato.Text;
  wbuscar.Filter := Filtro;
  wbuscar.Filtered := True
end;
Si pedidos es texto:
Código Delphi [-]
procedure TForm1.contratoChange(Sender: TObject);
var
   Filtro : String;
begin
  wbuscar.Filtered := False;
  Filtro := 'PEDIDOS Like '''+contrato.Text+ '*''';
  wbuscar.Filter := Filtro;
  wbuscar.Filtered := True
end;
Teniendo en cuenta que wbuscar se encuentra abierto.
Saludos
Responder Con Cita
  #15  
Antiguo 31-03-2007
cucuy cucuy is offline
Miembro
 
Registrado: mar 2007
Posts: 30
Poder: 0
cucuy Va por buen camino
Hola Caral Como estas mira eso de quitarle la instruccion de datatype lo tenia antes asi y me mandaba errror mas rapido, y entonces me puse a hacer tu segunda recomendacion que es la de poner un simple filtro en el onchange en lugar de estar haciendo un select, el problema fue que puse el filtro que me dijiste ocacion lo hace bien pero a la segunda me manda un error que dice: ABC. exe raised exception class EOle Exception with message 'Argumentos incorrectos', fuera del intervalo permitido o en conflicto con otro. La configuracion que tengo de los componentes que utilizo en esta operacion es la que viene de foul, solo ago la conexion del adoconection con la base de datosy ligo el adoquery a el adoconection osea que no le e movido a nada de los tipos de cursores y esas cosas, por que lo intente y el resultado era el mismo o el peor por que que en veces no me mostraba informacion.

Código:
procedure TForm1.contratoChange(Sender: TObject);
var
filtro:string;
begin
  wbuscar.Filtered := False;
  Filtro := 'PEDIDO Like '''+contrato.Text+ '*''';
  wbuscar.Filter := Filtro;
  wbuscar.Filtered := True
Responder Con Cita
  #16  
Antiguo 31-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Nombranos los componetnes que estas utilizando en ese formulario.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #17  
Antiguo 31-03-2007
cucuy cucuy is offline
Miembro
 
Registrado: mar 2007
Posts: 30
Poder: 0
cucuy Va por buen camino
mira estoy usando un adoquery (qbuscar), un adoconection (adoconection1) un edit (edtbuscar) un dbgrid (dbgrid1) y un datasource (datasource1) esos componentes utilizo todos con sus propiedades de foul solo ligando lo necesario para tener acceso a la base de datos y para mostrar en el dbgrid la informacion
Responder Con Cita
  #18  
Antiguo 31-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Aun no veo el error . Que base de datos usas?

Por último, hagamos una prueba. Crea un nuevo proyecto o un nuevo formulario e intenta hacer lo mismo, coloca todos los componentes y el codigo (nada de Copy-Paste).
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #19  
Antiguo 31-03-2007
cucuy cucuy is offline
Miembro
 
Registrado: mar 2007
Posts: 30
Poder: 0
cucuy Va por buen camino
ok dejame ago eso utilizo base de datos mysql es lo unico que me esta atorando por que puedo hacer altas, bajas y cambios sin ninguno problema solo las busquedas se me pusieron necias jajajaja, gracias ahy te cuento como me fue, oye no podra ser problema del MSDART.DLL ?
Responder Con Cita
  #20  
Antiguo 31-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
En MySql soy un proble diablo. No te sabría decir si el problema viene de ahí. Si aun te persiste el problema, podrías cambiar los componentes Ado a Zeus o MyDac que son mas nativos para MySQL, siempre que te sea posible y no conlleve a mayores daños y perdida de tiempo.

De todos modo, realiza la prueba y nos cuentas. Suerte
Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error al borrar con Adoquery hernitz SQL 6 07-03-2007 22:55:13
Problemas al hacer SELECT con ADOQuery hunabku Conexión con bases de datos 1 18-05-2005 01:08:28
Error en ADOQuery ¡¡URGENTE!! Victor Pimentel Conexión con bases de datos 2 25-10-2004 08:34:35
Error al cerrar un ADOQuery Alexander Conexión con bases de datos 2 02-06-2004 13:42:18


La franja horaria es GMT +2. Ahora son las 16:23:37.


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
Copyright 1996-2007 Club Delphi