Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 17-02-2017
gorsan gorsan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Alcala de Henares (Madrid)
Posts: 87
Poder: 24
gorsan Va por buen camino
Hola de nuevo!!
He creado una nueva aplicación para que nada interfiera en la ejecución. En un formulario he puesto:

1 IBDatabase1
1 IBTransaction1 conectada a la anterior pero con la propiedad Active:=False.
1 IBDataSet1 conectada a la IBDatabase1 pero con la propiedad Active:=False y la tabla EMPLEADOS encapsulada.
1 IBQuery1 tambien conectada a IBDatabase1
1 BitBttn que ejecuta el siguiente código:

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  TableName1: string;
begin
  TableName1:='9999999999';
  with IBQuery1 do
    begin
      Close;
      DataBase:=IBDatabase1;
      Transaction:=IBTransaction1;
      SQL.Clear;
      SQL.Add('SELECT RDB$RELATION_NAME FROM RDB$RELATIONS');
      SQL.Add('WHERE RDB$VIEW_BLR IS NULL');
      SQL.Add('AND (RDB$SYSTEM_FLAG IS NULL OR RDB$SYSTEM_FLAG=0)');
      SQL.Add('AND RDB$RELATION_NAME=:PTABLE');
      ParamByName('PTABLE').AsString:=TableName1;
      Open;
      if IsEmpty then
        begin
          Close;
          DataBase:=IBDatabase1;
          Transaction:=IBTransaction1;
          SQL.Clear;
          SQL.Add('CREATE TABLE '+'"'+TableName1+'"' +'(');
          SQL.Add('VNIP VARCHAR(10) NOT NULL,');
          SQL.Add('VNUM VARCHAR(20) NOT NULL,');
          SQL.Add('APELLIDO1 VARCHAR(50) NOT NULL,');
          SQL.Add('APELLIDO2 VARCHAR(50),');
          SQL.Add('VNOMBRE VARCHAR(30) NOT NULL,');
          SQL.Add('VINCULACION VARCHAR(50) NOT NULL,');
          SQL.Add('OBSERVACIONES BLOB SUB_TYPE TEXT SEGMENT SIZE 80,');
          SQL.Add('PRIMARY KEY(VNIP)');
          SQL.Add(')');
          ExecSQL;
        end
      else
        raise Exception.Create('Existe una tabla con ese nombre');
    end;
  IBTransaction1.Commit;
  IBTransaction1.StartTransaction;
    with IBQuery1 do
      begin
        Close;
        DataBase:=IBDatabase1;
        Transaction:=IBTransaction1;
        SQL.Clear;
        SQL.Add('ALTER TABLE '+'"'+TableName1+'"'+ ' ADD CONSTRAINT '+'"'+'FK_'+TableName1+'"'+' FOREIGN KEY (VNIP) REFERENCES EMPLEADOS (NIP) ON DELETE CASCADE');
        ExecSQL;
      end;
  IBTransaction1.Commit;
  IBTransaction1.StartTransaction;
end;

Bueno pues la tabla se genera sin problema pero al ejecutar el segundo commit vuelve a dar el mismo mensaje de error de que la tabla EMPLEADOS esta en uso.
Por otro lado:

Código SQL [-]
CREATE TABLE "9999999999"
(
  "VNIP"  VARCHAR(10) NOT NULL,
  "VNUM"  VARCHAR(20) NOT NULL,
  "APELLIDO1"  VARCHAR(50) NOT NULL,
  "APELLIDO2"  VARCHAR(50),
  "NOMBRE"  VARCHAR(30) NOT NULL,
  "VINCULACION"  VARCHAR(50) NOT NULL,
  "OBSERVACIONES"  BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
  CONSTRAINT "PK_9999999999" PRIMARY KEY ("VNIP"),
  CONSTRAINT "FK_9999999999" FOREIGN KEY ("VNIP") REFERENCES INTERNOS ("NIP") ON DELETE CASCADE
);

Funciona sin problema desde el entorno isql de IBConsole.

¿Como lo ven?
Responder Con Cita
 



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
Ejecutable xxxxxx dejo de funcionar en W10 PRO tarco35 API de Windows 13 25-11-2016 20:28:44
Sobre error "Object reference not set to an instance of an object" fer21unmsm .NET 2 11-05-2007 21:56:46
Error en Consulta: 'could not find object' rocio84 SQL 4 18-04-2006 01:56:58
error EMS firebird interbase "Unsuccessful execution caused by unavailable resource" JuanErasmo Conexión con bases de datos 3 10-02-2006 22:09:53
Error: object not found shaktale SQL 0 03-07-2003 16:40:37


La franja horaria es GMT +2. Ahora son las 12:22:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi