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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-06-2008
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 17
pmtzg Va por buen camino
Question Commando IBtable1.Exists no me funciona

hola compañeros , tengo la siguiente situación, cuando intento saber si una tabla existe en una base de datos nunca me regresa el valor de True
a pesar de que la tabla existe este es mi codigo

Código Delphi [-]
 
 
Ibdatabase1.DatabaseName:= 'D:\Prueba\NDocto\BdIbx.fdb';                           IBDatabase1.DefaultTransaction:=IBTransaction1;
IBDatabase1.Params.Add('user_name=SYSDBA');
IBDatabase1.Params.Add('password=masterkey');
ibtransaction1.DefaultDatabase:=ibdatabase1;
ibdatabase1.Connected:=true;
ibdatabase1.Open;
IBtransaction1.Active:=true;
Ibscript1.Database:= Ibdatabase1;
ibsborra.Database:=ibdatabase1;
mitable:='latabla';   {nombre de la tabla}
IBscript1.Script.Strings[0]:='CREATE TABLE '+mitable;
IBSborra.Script.Strings[0]:='DROP TABLE '+mitable;
IBtable1.Database:=IBdatabase1;
IBtable1.TableName:=mitable;
IBtable1.Transaction:=IBtransaction1;
    if IBtable1.Exists then
       begin
       IBSborra.ExecuteScript;   {borro la tabla con datos};
       end;
      ibscript1.ExecuteScript;  {creo la tabla vacia}

no se que me falta o que estoy haciendo mal
espero que me puedan aydar
si quito el

if IBtable1.Exists then

y corro asi me programa si crea tabla o la borra
pero el problema viene cuando existe la tabla y no la borra
y ejecuto volver a crear una tabla nueva con el mismo nombre

gracias
Responder Con Cita
  #2  
Antiguo 04-06-2008
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola, mira el código del procedimiento GetExists del IBTable:

Código Delphi [-]
function TIBTable.GetExists: Boolean;
var
  Query: TIBSQL;
begin
  Result := Active;
  if Result or (TableName = '') then Exit;
  Database.InternalTransaction.StartTransaction;
  Query := TIBSQL.Create(self);
  try
    Query.Database := DataBase;
    Query.Transaction := Database.InternalTransaction;
    Query.SQL.Text :=
    'Select USER from RDB$RELATIONS where RDB$RELATION_NAME = ' + {do not localize}
    '''' +    {do not localize}
    FormatIdentifierValue(Database.SQLDialect,
      QuoteIdentifier(DataBase.SQLDialect, FTableName)) + '''';  {do not localize}
    Query.Prepare;
    Query.ExecQuery;
    Result := not Query.EOF;
  finally
    Query.Free;
    Database.InternalTransaction.Commit;
  end;
end;

Quizás te interese hacer un procedimiento similar, pero que tenga en cuenta alguna opción más que quieras comprobar tu.

Salu2.
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...

Última edición por defcon1_es fecha: 04-06-2008 a las 10:28:07.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Problema serios con predicados IN, NOT IN, EXISTS, ... mlara Firebird e Interbase 7 15-05-2008 19:43:41
Transaccion con if y con exists zvf SQL 4 18-09-2007 18:52:44
Error A component Named Matri already Exists janlo Varios 5 28-07-2006 07:16:39
Error en el Exists Payola2011 MySQL 7 31-01-2006 19:17:47
-502 Declared cursor already exists Carlitos Firebird e Interbase 4 30-09-2003 17:18:22


La franja horaria es GMT +2. Ahora son las 15:01:46.


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