Ahí lo tienes, José Luis.
En este caso hay que utilizar los componentes MDO. Creo que vienen con Delphi, aunqe que no estoy seguro.
Código Delphi
[-]procedure TFormPresupuestos.ToolButton3Click(Sender: TObject);
var Frm : TForm; MM : TMemo;
begin
MDOExtract1.ExtractObject(eoDatabase);
Frm := TForm.Create(nil);
try
Frm.Width := 400;
Frm.Height := 500;
Frm.Top := Mouse.CursorPos.Y;
Frm.Left := Mouse.CursorPos.X-400;
Frm.BorderStyle := bsToolWindow;
Frm.Caption := 'DAtos de la BBDD';
MM := TMemo.Create(nil);
try
MM.Parent := Frm;
MM.Align := alClient;
MM.WantReturns:= False;
MM.ScrollBars:= ssBoth;
MM.Lines:= MDOExtract1.Items;
Frm.ShowModal;
finally
MM.Free;
end;
finally
Frm.Free;
end;
end;
Y devuelve esto ( es un extracto de todo )
Código SQL
[-]
SET SQL DIALECT 3;
DECLARE EXTERNAL FUNCTION RDB$GET_CONTEXT
VARCHAR(80) CHARACTER SET NONE, VARCHAR(80) CHARACTER SET NONE
RETURNS VARCHAR(255) CHARACTER SET NONE FREE_IT
ENTRY_POINT 'get_context' MODULE_NAME 'system_module';
DECLARE EXTERNAL FUNCTION RDB$SET_CONTEXT
VARCHAR(80) CHARACTER SET NONE, VARCHAR(80) CHARACTER SET NONE, VARCHAR(255) CHARACTER SET NONE
RETURNS INTEGER BY VALUE
ENTRY_POINT 'set_context' MODULE_NAME 'system_module';
CREATE DOMAIN SINO AS CHAR(1) CHARACTER SET ISO8859_1
DEFAULT 'N'
CHECK ((VALUE IS NULL) OR (VALUE IN ('N','S'))) NOT NULL;
CREATE TABLE "B_LINEAPRESUPUESTO"
(
"IDLINEAPRES" INTEGER NOT NULL,
"IDPRESUPUESTO" INTEGER NOT NULL,
"CABECERA" "SINO",
"IMPRIMIR" "SINO",
"LINEA" INTEGER NOT NULL,
"PARTIDA" VARCHAR(15) CHARACTER SET ISO8859_1 NOT NULL,
"TIPO" CHAR(1) CHARACTER SET ISO8859_1 NOT NULL,
"IDTARIFA" INTEGER,
"IDMUEBLE" INTEGER,
"DESCRIPCION" VARCHAR(200) CHARACTER SET ISO8859_1,
"CANTIDAD" NUMERIC(5, 2) NOT NULL,
"UNIDADES" VARCHAR(5) CHARACTER SET ISO8859_1 NOT NULL,
"PRECIO" NUMERIC(15, 2) NOT NULL,
"PVP" NUMERIC(15, 2) NOT NULL,
"DESCUENTO" INTEGER NOT NULL,
"COSTE" NUMERIC(15, 2) NOT NULL,
"RENTABILIDAD" INTEGER,
CONSTRAINT "FK_B_LINEAPRESUPUESTO" PRIMARY KEY ("IDLINEAPRES")
);
...
CREATE PROCEDURE "PRES_DUPLICAR"
(
SERIE VARCHAR(3) CHARACTER SET ISO8859_1,
NUMERO INTEGER,
IDPRESUPUESTO_ORIGINAL INTEGER,
TIPO VARCHAR(15) CHARACTER SET ISO8859_1
)
AS
BEGIN EXIT; END ^
CREATE PROCEDURE "PRES_NUMERO"
(
SERIE CHAR(3) CHARACTER SET ISO8859_1
)
RETURNS
(
NUMERO INTEGER
)
AS
BEGIN EXIT; END ^
TRIGGERS...
ETC
Espero que te valga. Estoy casi seguro de que con dbexpress también se puede.Creo además ( esto lo vi en un post de ClubDelphi ) que con MDO se pueden extraer las sentencias insert de las tablas que indiques.
Un saludo y suerte.