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 27-04-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Operation not aplicable en tabla Paradox

Wop!

Me ha tocado volver a bajar a los abismos de Paradox y es bastante fustrante... en fin, habrá que aguantarse

Al trapo, el tema es que tengo que conectar con una tabla paradox y, atención a la tontería, hacer un locate o, en su defecto, un filtro. Bien, el problema es que al hacer el Locate o al tocar la propiedad Filter (no filtered) da la majestuosa excepción que da título al hilo. Hasta aquí no me sorprendería demasiado, ya me curé de espantos con las excetricidades del BDE hace tiempo. El cachondeo viene cuando compruebo que la tabla no solo se abre bien si no que no da problemas para hacer insert's, edit's... No estoy hablando de que el fichero .db esté bien, si no que el propio componente TTable permite hacer todo esto sin problemas.

Os explico las "peculiaridades" del modo de conexión. Por una historia que no viene a cuento, el módulo de datos se crea, una pantalla cliente hace una serie de acciones y después todo se destruye. Para conectar se crea un alias al vuelo ya que después no se volverá a usar, y se asignan las propiedades correspondientes. Todo esto se hace en un método público del DataModule

Código:
procedure TDMCreaEmpre.Conecta(PNet, PLocal, PDir: String);
var
  i: Integer;
begin
  try Session1.DeleteAlias('CREACIOBD'); except end;
  Session1.AddStandardAlias('CREACIOBD',PDir,'PARADOX');
  //
  Session1.AddPassword('******');
  //la TSession
  Session1.NetFileDir := PNet;
  Session1.PrivateDir := PLocal;
  //La TDataBase
  Db.Connected := false;
  Db.AliasName := 'CREACIOBD';
  Db.Connected := True;
  //Las tablas
  for i := 0 to ComponentCount - 1 do
	if Components[i] is TTable then
	  with Components[i] as TTable do
	  begin
		 Active := false;
		 SessionName := Session1.SessionName;
		 DatabaseName := Db.DatabaseName;
		 Active := true;
	  end;
end;
Lo curioso es que con las otras tablas no da ningún error. He probado a cargarme el TTable y recrearlo y nada.... en fin que estoy sin ideas.

NOTA: Provad a poner ' "operation not aplicable" Paradox' en google... es fustrante
__________________
E pur si muove
Responder Con Cita
  #2  
Antiguo 27-04-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Tiene algún índice esa tabla?

Todo parace indicar que lo que falta es crear al menos un índice.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 27-04-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Sí, tiene la primary key
__________________
E pur si muove
Responder Con Cita
  #4  
Antiguo 27-04-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Por si te da alguna referencia esta es la localización del error:

Cita:
$2A01 (10753) = Field is not a BLOB.
$2A02 (10754) = BLOB already opened.
$2A03 (10755) = BLOB not opened.
$2A04 (10756) = Operation not applicable.
$2A05 (10757) = Table is not indexed.
$2A06 (10758) = Engine not initialized.
De momento no se me ocurre nada.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 27-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Y a todo esto, ¿cuál es el filtro que causa problemas?

// Saludos
Responder Con Cita
  #6  
Antiguo 28-04-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Cita:
Empezado por roman
Y a todo esto, ¿cuál es el filtro que causa problemas?
Es igual, pongas el filtro que pongas, de hecho, si intentas hacer un Locate sobre la tabla, pasa exactamente lo mismo.... estoy sin ideas... ¿lo paso todo a Oracle?
__________________
E pur si muove
Responder Con Cita
  #7  
Antiguo 28-04-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Wop!

Tema solucionado.... casi

Está souucionado porque he conseguido hacer lo que quería de otra manera... pero no me gusta hacer las cosas así, y menos si no entiendo porqué.

Investigando en el tema de los índices que comentaba marcos, he comprobado que si el locate o el filtro lo hacía por los campos que formaban un índice el error no se producía . Esto me ha dejado flipado, ya que estoy cansado de hacer locate's por campos no indexados, va más lento, pero no peta . Cuál ha sido mi sorpresa cuando creando un proyecto nuevo y usando un alias "estático", podía buscar por campos que no formaban parte de ningún índice sin problemas.

No he averiguado más. He optado por obtener el valor de la clave primaria mediante una quary y luego hacer el locate por la clave.... es una guarrada pour si muove
__________________
E pur si muove
Responder Con Cita
  #8  
Antiguo 28-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El problema me suena más a algún conflicto de instalación del bde, quizá alguna versión incorrecta. Si bien en Google como dices hay pocas referencias encontrarás más en los grupos de noticias de Borland.

// Saludos
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 07:33:15.


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