Hola de nuevo. Gracias por la respuesta.
Respecto a lo que me dices que haga. Primero he quitado las dos estructuras with y sigue dando el mismo error en la ejecución del commit. Luego he quitado todo y he dejado solo las sentencias relativas a la creación de la tabla y sigue dando el mismo error:
Código Delphi
[-]
procedure TDMVentanilla.CreateTable(const TableName1: string);
begin
IBQuery2.Close;
IBQuery2.DataBase:=DMPrincipal.IBDB;
IBQuery2.Transaction:=DMVentanilla.IBTLocal_Ventanilla;
IBQuery2.SQL.Clear;
IBQuery2.SQL.Add('CREATE TABLE '+'"'+TableName1+'"' +'(');
IBQuery2.SQL.Add('VNIS VARCHAR(10) NOT NULL,');
IBQuery2.SQL.Add('VNUM VARCHAR(20) NOT NULL,');
IBQuery2.SQL.Add('APELLIDO1 VARCHAR(50) NOT NULL,');
IBQuery2.SQL.Add('APELLIDO2 VARCHAR(50),');
IBQuery2.SQL.Add('VNOMBRE VARCHAR(30) NOT NULL,');
IBQuery2.SQL.Add('VINCULACION VARCHAR(50) NOT NULL,');
IBQuery2.SQL.Add('OBSERVACIONES BLOB SUB_TYPE TEXT SEGMENT SIZE 80,');
IBQuery2.SQL.Add('PRIMARY KEY(VNIS),');
IBQuery2.SQL.Add('CONSTRAINT '+'"'+'FK_'+TableName1+'"'+' FOREIGN KEY (VNIS) REFERENCES INTERNOS (NIS) ON DELETE CASCADE');
IBQuery2.SQL.Add(')');
IBQuery2.ExecSQL;
DMVentanilla.IBTLocal_Ventanilla.Commit;
DMVentanilla.IBTLocal_Ventanilla.StartTransaction;
end;
Tendrá que haber alguna manera de crear una tabla en tiempo de ejecución con clave foranea pero no se como.
Muchas gracias.