Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-08-2005
gcaffe gcaffe is offline
Miembro
 
Registrado: oct 2004
Posts: 53
Poder: 20
gcaffe Va por buen camino
Buscar en varias tablas

Hola a todos:
Cuando en una aplicación tengo que buscar registros en tablas suelo hacerlo a través de una ventana con un solo Grid, cambiando en tiempo de ejecución el procedimento involucrado y las propiedades del Grid. Pero me esta ocurriendo un problema. El entorno es el siguiente:
1) Una ventana modal con un gridBusca que tiene una columna genérica
2) un componente TADOStoredProc con name = SProc
3) Cuatro Procedimientos almacenados uno por cada tabla y son similares a:

Código SQL [-]
CREATE PROCEDURE ClientesBUSCAR
@Busca nVarChar(10)
AS
IF @Busca = '' 
SELECT * FROM Clientes
ELSE
SELECT * FROM Clientes WHERE NombreCliente LIKE + '%'+@Busca+'%'
GO

Lo que cambio en los otros es el nombre de la tabla y el nombre de procedimeinto.

AL ejecutar sucede los siguiente:
1) Al abrir la ventana buscador:
Código Delphi [-]
procedure TfrmBuscador.FormPaint(Sender: TObject);
begin
GridBusca.Columns.Delete(0);
GridBusca.DataSource := nil;
GridBusca.DataSource := DSProc;
GridBusca.Columns.Add;
GridBusca.Columns[0].FieldName := '';
if TipoBusqueda = 0 then begin
GridBusca.Columns[0].FieldName := 'NombreCliente';
GridBusca.Columns[0].Title.Caption := 'Nombre del Cliente';
end
else if TipoBusqueda = 1 then begin
GridBusca.Columns[0].FieldName := 'Nombre';
GridBusca.Columns[0].Title.Caption := 'Nombre del Procurador';
end....
etc
2) Cuando se da al boton de Buscar:
Código Delphi [-]
procedure TfrmBuscador.btnBuscarClick(Sender: TObject);
var
Reg: integer;
begin
with DM do begin
SProc.Active := False;
if TipoBusqueda = 0 then SProc.ProcedureName := 'ClientesBUSCAR;1'
else if TipoBusqueda = 1 then SProc.ProcedureName := 'ProcuradoresBUSCAR;1'
else if TipoBusqueda = 2 then SProc.ProcedureName := 'JuzgadosBUSCAR;1'
else if TipoBusqueda = 3 then SProc.ProcedureName := 'JurisdiccionBUSCAR;1'
else if TipoBusqueda = 4 then SProc.ProcedureName := 'ProcedimientosBUSCAR;1';
SProc.Parameters.Refresh;
SProc.Parameters.FindParam('@Busca').Value := SeBusca.Text;
SProc.Prepared := True;
SProc.Active := True;
Reg := SProc.RecordCount;
if Reg > 0 then begin
btnAceptar.Enabled := True;
btnAceptar.SetFocus;
end
else begin
btnAceptar.Enabled := False;
SeBusca.SetFocus;
end;
end;
end;

TipoBusqueda es una variable global de el Data Modulo

3) en la primera busqueda todo correcto, se selecciona y cierra ventana, etc.
4) en la segunda y sucesivas me dá el siguiente error:
Access violation at address 4FF8334 in module 'sqloledb.dll' Read of address 00000018
Justo cuando va ha ejecutar la instruccion Sproc.Active := true;

No se he recisado las rutinas que de por sí son sencillas y no encuentro el fallo, ¿me pueden ayudar a verlo con otros ojos?

Muchas gracias.

Última edición por gcaffe fecha: 01-08-2005 a las 16:58:22. Razón: Se han colocado TAG´s de delphi y SQL
Responder Con Cita
  #2  
Antiguo 01-08-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Por favor, utiliza TAG´s en los mensajes. En éste te los coloco yo (ya que llevas poco escribiendo en el foro -en cuanto a número de mensajes-), pero sería conveniente que los utilizes para mejorar la lectura.

http://www.clubdelphi.com/foros/misc.php?do=bbcode
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 01-08-2005 a las 16:47:08. Razón: Añadido Link
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


La franja horaria es GMT +2. Ahora son las 17:21:31.


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