![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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; NOTA: Provad a poner ' "operation not aplicable" Paradox' en google... es fustrante ![]()
__________________
E pur si muove |
#2
|
||||
|
||||
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:
![]() |
#3
|
||||
|
||||
Sí, tiene la primary key
![]() ![]()
__________________
E pur si muove |
#4
|
||||
|
||||
Por si te da alguna referencia esta es la localización del error:
Cita:
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
#5
|
||||
|
||||
Y a todo esto, ¿cuál es el filtro que causa problemas?
// Saludos |
#6
|
||||
|
||||
Cita:
![]() ![]() ![]() ![]()
__________________
E pur si muove |
#7
|
||||
|
||||
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 ![]() ![]() 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 |
#8
|
||||
|
||||
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 |
![]() |
|
|
![]() |
|